Browse Source

`init add`

wenhongquan 3 years ago
commit
21a377d44d
100 changed files with 15014 additions and 0 deletions
  1. 151 0
      .classpath
  2. 46 0
      .project
  3. 12 0
      .settings/.jsdtscope
  4. 3 0
      .settings/com.genuitec.eclipse.core.prefs
  5. 2 0
      .settings/com.genuitec.eclipse.j2eedt.core.prefs
  6. 5 0
      .settings/org.eclipse.core.resources.prefs
  7. 11 0
      .settings/org.eclipse.jdt.core.prefs
  8. 9 0
      .settings/org.eclipse.wst.common.component
  9. 10 0
      .settings/org.eclipse.wst.common.project.facet.core.xml
  10. 1 0
      .settings/org.eclipse.wst.jsdt.ui.superType.container
  11. 1 0
      .settings/org.eclipse.wst.jsdt.ui.superType.name
  12. 129 0
      404.jsp
  13. 3 0
      META-INF/MANIFEST.MF
  14. BIN
      WEB-INF/classes/com/zhcs/dt/controller/activiti/AcBaseController.class
  15. 326 0
      WEB-INF/classes/com/zhcs/dt/controller/activiti/AcBaseController.java
  16. BIN
      WEB-INF/classes/com/zhcs/dt/controller/activiti/AcBusinessController.class
  17. 251 0
      WEB-INF/classes/com/zhcs/dt/controller/activiti/AcBusinessController.java
  18. BIN
      WEB-INF/classes/com/zhcs/dt/controller/activiti/AcStartController.class
  19. 49 0
      WEB-INF/classes/com/zhcs/dt/controller/activiti/AcStartController.java
  20. BIN
      WEB-INF/classes/com/zhcs/dt/controller/activiti/editor/main/StencilsetRestResource.class
  21. 30 0
      WEB-INF/classes/com/zhcs/dt/controller/activiti/editor/main/StencilsetRestResource.java
  22. BIN
      WEB-INF/classes/com/zhcs/dt/controller/activiti/editor/model/ModelEditorJsonRestResources.class
  23. 59 0
      WEB-INF/classes/com/zhcs/dt/controller/activiti/editor/model/ModelEditorJsonRestResources.java
  24. BIN
      WEB-INF/classes/com/zhcs/dt/controller/activiti/editor/model/ModelSaveRestResource.class
  25. 75 0
      WEB-INF/classes/com/zhcs/dt/controller/activiti/editor/model/ModelSaveRestResource.java
  26. BIN
      WEB-INF/classes/com/zhcs/dt/controller/activiti/fhmodel/FHModelController.class
  27. 298 0
      WEB-INF/classes/com/zhcs/dt/controller/activiti/fhmodel/FHModelController.java
  28. BIN
      WEB-INF/classes/com/zhcs/dt/controller/activiti/hiprocdef/HiprocdefController.class
  29. 156 0
      WEB-INF/classes/com/zhcs/dt/controller/activiti/hiprocdef/HiprocdefController.java
  30. BIN
      WEB-INF/classes/com/zhcs/dt/controller/activiti/hitask/HiTaskController.class
  31. 73 0
      WEB-INF/classes/com/zhcs/dt/controller/activiti/hitask/HiTaskController.java
  32. BIN
      WEB-INF/classes/com/zhcs/dt/controller/activiti/procdef/ProcdefController.class
  33. 240 0
      WEB-INF/classes/com/zhcs/dt/controller/activiti/procdef/ProcdefController.java
  34. BIN
      WEB-INF/classes/com/zhcs/dt/controller/activiti/ruprocdef/RuprocdefController.class
  35. 167 0
      WEB-INF/classes/com/zhcs/dt/controller/activiti/ruprocdef/RuprocdefController.java
  36. BIN
      WEB-INF/classes/com/zhcs/dt/controller/activiti/rutask/RuTaskController.class
  37. 255 0
      WEB-INF/classes/com/zhcs/dt/controller/activiti/rutask/RuTaskController.java
  38. BIN
      WEB-INF/classes/com/zhcs/dt/controller/activiti/util/BpmsActivityTypeEnum.class
  39. 41 0
      WEB-INF/classes/com/zhcs/dt/controller/activiti/util/BpmsActivityTypeEnum.java
  40. BIN
      WEB-INF/classes/com/zhcs/dt/controller/activiti/util/ManagerTaskHandler.class
  41. 25 0
      WEB-INF/classes/com/zhcs/dt/controller/activiti/util/ManagerTaskHandler.java
  42. BIN
      WEB-INF/classes/com/zhcs/dt/controller/activiti/util/UtilMisc.class
  43. 26 0
      WEB-INF/classes/com/zhcs/dt/controller/activiti/util/UtilMisc.java
  44. BIN
      WEB-INF/classes/com/zhcs/dt/controller/base/BaseController.class
  45. 72 0
      WEB-INF/classes/com/zhcs/dt/controller/base/BaseController.java
  46. BIN
      WEB-INF/classes/com/zhcs/dt/controller/fhdb/sqledit/SQLeditController.class
  47. 182 0
      WEB-INF/classes/com/zhcs/dt/controller/fhdb/sqledit/SQLeditController.java
  48. BIN
      WEB-INF/classes/com/zhcs/dt/controller/fhoa/datajur/DatajurController.class
  49. 85 0
      WEB-INF/classes/com/zhcs/dt/controller/fhoa/datajur/DatajurController.java
  50. BIN
      WEB-INF/classes/com/zhcs/dt/controller/fhoa/department/DepartmentController.class
  51. 771 0
      WEB-INF/classes/com/zhcs/dt/controller/fhoa/department/DepartmentController.java
  52. BIN
      WEB-INF/classes/com/zhcs/dt/controller/fhoa/fhfile/FhfileController.class
  53. 265 0
      WEB-INF/classes/com/zhcs/dt/controller/fhoa/fhfile/FhfileController.java
  54. BIN
      WEB-INF/classes/com/zhcs/dt/controller/fhoa/myleave/MyleaveController.class
  55. 238 0
      WEB-INF/classes/com/zhcs/dt/controller/fhoa/myleave/MyleaveController.java
  56. BIN
      WEB-INF/classes/com/zhcs/dt/controller/fhoa/staff/StaffController.class
  57. 329 0
      WEB-INF/classes/com/zhcs/dt/controller/fhoa/staff/StaffController.java
  58. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualDailyCompController.class
  59. 2593 0
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualDailyCompController.java
  60. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualMassagePanelController.class
  61. 74 0
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualMassagePanelController.java
  62. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualPlanCompController.class
  63. 1190 0
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualPlanCompController.java
  64. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualPlanController.class
  65. 1298 0
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualPlanController.java
  66. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualPlanKGController.class
  67. 883 0
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualPlanKGController.java
  68. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/BaseInfoController.class
  69. 187 0
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/BaseInfoController.java
  70. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/HighwayDailyCompDettableController.class
  71. 93 0
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/HighwayDailyCompDettableController.java
  72. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/HighwayReserveFeeController.class
  73. 129 0
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/HighwayReserveFeeController.java
  74. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/ShowTableRecodUtil.class
  75. 1465 0
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/ShowTableRecodUtil.java
  76. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/SynchDailyPlanController.class
  77. 63 0
      WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/SynchDailyPlanController.java
  78. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/attached/AttachedController.class
  79. 228 0
      WEB-INF/classes/com/zhcs/dt/controller/information/attached/AttachedController.java
  80. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/attachedmx/AttachedMxController.class
  81. 213 0
      WEB-INF/classes/com/zhcs/dt/controller/information/attachedmx/AttachedMxController.java
  82. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/examineResults/ExamineResultsController.class
  83. 264 0
      WEB-INF/classes/com/zhcs/dt/controller/information/examineResults/ExamineResultsController.java
  84. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/linkage/Linkage.class
  85. 82 0
      WEB-INF/classes/com/zhcs/dt/controller/information/linkage/Linkage.java
  86. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/KyxmMonthProgressController.class
  87. 278 0
      WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/KyxmMonthProgressController.java
  88. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/MonthProgressController.class
  89. 250 0
      WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/MonthProgressController.java
  90. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/PreventionCompletionController.class
  91. 203 0
      WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/PreventionCompletionController.java
  92. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/RcMonthProgressController.class
  93. 395 0
      WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/RcMonthProgressController.java
  94. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/SbdxMonthProgressController.class
  95. 273 0
      WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/SbdxMonthProgressController.java
  96. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/SyjcMonthProgressController.class
  97. 281 0
      WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/SyjcMonthProgressController.java
  98. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/XfMonthProgressController.class
  99. 176 0
      WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/XfMonthProgressController.java
  100. BIN
      WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/YbfController.class

+ 151 - 0
.classpath

@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="resources"/>
+	<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
+		<attributes>
+			<attribute name="owner.project.facets" value="java"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
+	<classpathentry kind="con" path="com.genuitec.runtime.library/com.genuitec.jstl_1.2.1">
+		<attributes>
+			<attribute name="org.eclipse.jst.component.dependency" value="WEB-INF/lib"/>
+			<attribute name="owner.project.facets" value="jst.web.jstl"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/activation-1.1.1.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/activiti-bpmn-converter-6.0.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/activiti-bpmn-layout-6.0.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/activiti-bpmn-model-6.0.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/activiti-dmn-api-6.0.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/activiti-dmn-model-6.0.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/activiti-engine-6.0.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/activiti-form-api-6.0.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/activiti-form-model-6.0.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/activiti-image-generator-6.0.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/activiti-json-converter-6.0.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/activiti-process-validation-6.0.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/activiti-rest-6.0.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/activiti-spring-6.0.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/aopalliance-1.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/apache-mime4j-0.6.1.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/asm-3.3.1.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/aspectjweaver-1.8.13.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/axis.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/axis-ant.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/batik-anim-1.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/batik-awt-util-1.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/batik-bridge-1.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/batik-codec-1.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/batik-css-1.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/batik-dom-1.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/batik-ext-1.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/batik-gvt-1.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/batik-js-1.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/batik-parser-1.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/batik-script-1.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/batik-svg-dom-1.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/batik-svggen-1.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/batik-transcoder-1.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/batik-util-1.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/batik-xml-1.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/cglib-nodep-3.2.5.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/com.zhdt.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/commons-beanutils-1.9.3.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/commons-codec-1.11.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/commons-collections-3.2.2.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/commons-collections4-4.1.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/commons-discovery-0.5.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/commons-fileupload-1.3.3.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/commons-httpclient-3.1.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/commons-io-2.6.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/commons-lang-2.6.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/commons-lang3-3.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/commons-logging-1.2.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/commons-pool2-2.5.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/docx4j-6.1.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/dom4j-1.6.1.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/druid-1.1.6.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/ehcache-core-2.6.11.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/ezmorph-1.0.6.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/fastjson-1.2.44.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/fcexporter.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/fcexporthandler.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/fchelper.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/fcsampleshelper.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/fctl.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/freemarker-2.3.23.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/gson-2.8.2.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/httpclient-4.5.4.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/httpcore-4.4.8.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/httpmime-4.5.4.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/jackson-all-1.7.6.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/jackson-annotations-2.9.3.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/jackson-core-2.9.3.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/jackson-databind-2.9.3.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/jackson-mapper-asl-1.9.13.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/javaGeom-0.11.1.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/Java-WebSocket-1.3.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/jaxrpc.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/jedis-2.9.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/joda-time-2.9.9.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/jpush-java-libraryV2.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/json-20171018.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/json-lib-2.4-jdk15.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/jstl-1.2.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/juel-impl-2.2.7.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/log4j-api-2.10.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/log4j-core-2.10.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/log4j-web-2.10.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/mail.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/mybatis-3.4.5.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/mybatis-ehcache-1.0.3.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/mybatis-oscache-1.0.1.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/mybatis-spring-1.3.1.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/mysql-connector-java-5.1.34.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/ojdbc6.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/pinyin4j-2.5.1.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/poi-3.17.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/poi-examples-3.17.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/poi-excelant-3.17.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/poi-ooxml-3.17.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/poi-ooxml-schemas-3.17.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/poi-scratchpad-3.17.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/QRCode.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/quartz-2.3.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/quartz-jobs-2.3.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/saaj.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/servlet-api.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/shiro-all-1.4.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/slf4j-api-1.7.25.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/spring-aop-5.0.2.RELEASE.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/spring-aspects-5.0.2.RELEASE.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/spring-beans-5.0.2.RELEASE.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/spring-context-5.0.2.RELEASE.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/spring-context-support-5.0.2.RELEASE.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/spring-core-5.0.2.RELEASE.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/spring-dao-2.0.8.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/spring-data-redis-1.7.1.RELEASE.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/spring-expression-5.0.2.RELEASE.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/spring-jdbc-5.0.2.RELEASE.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/spring-mock-2.0.8.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/spring-orm-5.0.2.RELEASE.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/spring-test-5.0.2.RELEASE.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/spring-tx-5.0.2.RELEASE.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/spring-web-5.0.2.RELEASE.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/spring-webmvc-5.0.2.RELEASE.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/sqljdbc4.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/standard-1.1.2.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/sun.misc.BASE64Decoder.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/ueditor.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/ueditor-1.1.2.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/weixinapi.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/wsdl4j-1.6.3.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/xml-apis-1.3.04.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/xml-apis-ext-1.3.04.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/xmlbeans-2.6.0.jar"/>
+	<classpathentry kind="lib" path="D:/yanghu/GSYH/WebRoot/WEB-INF/lib/xmlgraphics-commons-2.2.jar"/>
+	<classpathentry kind="output" path="WebRoot/WEB-INF/classes"/>
+</classpath>

+ 46 - 0
.project

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>ZHDT</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.validation.validationbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.genuitec.eclipse.j2eedt.core.DeploymentDescriptorValidator</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.genuitec.eclipse.ast.deploy.core.DeploymentBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
+	</natures>
+</projectDescription>

+ 12 - 0
.settings/.jsdtscope

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="WebRoot"/>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
+		<attributes>
+			<attribute name="hide" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary/StandardBrowser/html5"/>
+	<classpathentry kind="output" path=""/>
+</classpath>

+ 3 - 0
.settings/com.genuitec.eclipse.core.prefs

@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+validator.Checked=resources/stencilset.json,WebRoot
+validator.Unchecked=

+ 2 - 0
.settings/com.genuitec.eclipse.j2eedt.core.prefs

@@ -0,0 +1,2 @@
+defaultTldInfo=f\=http\://java.sun.com/jsf/core;http\://java.sun.com/jsf/html\=h;http\://struts.apache.org/tags-bean\=bean;http\://java.sun.com/jsp/jstl/fmt\=fmt;nested\=http\://struts.apache.org/tags-nested;bean\=http\://struts.apache.org/tags-bean;http\://java.sun.com/jsp/jstl/sql\=sql;c\=http\://java.sun.com/jsp/jstl/core;fmt\=http\://java.sun.com/jsp/jstl/fmt;http\://struts.apache.org/tags-logic\=logic;http\://java.sun.com/jsp/jstl/xml\=x;http\://java.sun.com/jsp/jstl/core\=c;logic\=http\://struts.apache.org/tags-logic;h\=http\://java.sun.com/jsf/html;http\://struts.apache.org/tags-tiles\=tiles;http\://java.sun.com/jsp/jstl/functions\=fn;tiles\=http\://struts.apache.org/tags-tiles;sql\=http\://java.sun.com/jsp/jstl/sql;http\://struts.apache.org/tags-html\=html;http\://struts.apache.org/tags-nested\=nested;html\=http\://struts.apache.org/tags-html;http\://java.sun.com/jsf/core\=f;fn\=http\://java.sun.com/jsp/jstl/functions;x\=http\://java.sun.com/jsp/jstl/xml
+eclipse.preferences.version=1

+ 5 - 0
.settings/org.eclipse.core.resources.prefs

@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+encoding//WebRoot/WEB-INF/jsp/system/index/head.jsp=UTF-8
+encoding//WebRoot/WEB-INF/jsp/system/index/left.jsp=UTF-8
+encoding//WebRoot/plugins/ueditor/jsp/config.properties=UTF-8
+encoding/<project>=UTF-8

+ 11 - 0
.settings/org.eclipse.jdt.core.prefs

@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6

+ 9 - 0
.settings/org.eclipse.wst.common.component

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
+    <wb-module deploy-name="ZHDT">
+        <wb-resource deploy-path="/" source-path="/WebRoot" tag="defaultRootSource"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/resources"/>
+        <property name="java-output-path" value="/ZHDT/WebRoot/WEB-INF/classes"/>
+        <property name="context-root" value="ZHDT"/>
+    </wb-module>
+</project-modules>

+ 10 - 0
.settings/org.eclipse.wst.common.project.facet.core.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <fixed facet="java"/>
+  <fixed facet="wst.jsdt.web"/>
+  <fixed facet="jst.web"/>
+  <installed facet="jst.web" version="3.0"/>
+  <installed facet="jst.web.jstl" version="1.2.1"/>
+  <installed facet="wst.jsdt.web" version="1.0"/>
+  <installed facet="java" version="1.6"/>
+</faceted-project>

+ 1 - 0
.settings/org.eclipse.wst.jsdt.ui.superType.container

@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.baseBrowserLibrary

+ 1 - 0
.settings/org.eclipse.wst.jsdt.ui.superType.name

@@ -0,0 +1 @@
+Window

+ 129 - 0
404.jsp

@@ -0,0 +1,129 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
+<%
+	String path = request.getContextPath();
+	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/static/";
+%>
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<base href="<%=basePath%>">
+		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+		<meta charset="utf-8" />
+		<title>404</title>
+		<meta name="description" content="" />
+		<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
+		<!-- bootstrap & fontawesome -->
+		<link rel="stylesheet" href="static/ace/css/bootstrap.css" />
+		<link rel="stylesheet" href="static/ace/css/font-awesome.css" />
+		<!-- page specific plugin styles -->
+		<!-- text fonts -->
+		<link rel="stylesheet" href="static/ace/css/ace-fonts.css" />
+		<!-- ace styles -->
+		<link rel="stylesheet" href="static/ace/css/ace.css" class="ace-main-stylesheet" id="main-ace-style" />
+		<!--[if lte IE 9]>
+			<link rel="stylesheet" href="static/ace/css/ace-part2.css" class="ace-main-stylesheet" />
+		<![endif]-->
+		<!--[if lte IE 9]>
+		  <link rel="stylesheet" href="static/ace/css/ace-ie.css" />
+		<![endif]-->
+		<!-- inline styles related to this page -->
+		<!-- ace settings handler -->
+		<script src="static/ace/js/ace-extra.js"></script>
+		<script src="static/js/myjs/getTop.js"></script>
+		<!-- HTML5shiv and Respond.js for IE8 to support HTML5 elements and media queries -->
+		<!--[if lte IE 8]>
+		<script src="static/ace/js/html5shiv.js"></script>
+		<script src="static/ace/js/respond.js"></script>
+		<![endif]-->
+		<script type="text/javascript">
+		isAc();
+		function isAc(){
+			if((window.location+"").indexOf('activiti-editor')> 0){getTop(globalThis).Dialog.close();}
+		}
+		</script>
+	</head>
+		 
+<body class="no-skin">
+
+	<!-- /section:basics/navbar.layout -->
+	<div class="main-container" id="main-container">
+		<!-- /section:basics/sidebar -->
+		<div class="main-content">
+			<div class="main-content-inner">
+				<div class="page-content">
+					<div class="hr hr-18 dotted hr-double"></div>
+					<div class="row">
+						<div class="col-xs-12">
+							<div class="error-container">
+							<div class="well">
+								<h1 class="grey lighter smaller">
+									<span class="blue bigger-125"><i class="icon-sitemap"></i> 404</span> 没有找到此页面
+								</h1>
+								<hr />
+								<div>
+									<div class="space"></div>
+									<h4 class="smaller">检查一下可能性:</h4>
+									<ul>
+										<li><i class="icon-hand-right blue"></i> 检查请求链接是不是有误</li>
+										<li><i class="icon-hand-right blue"></i> 检查处理类代码是不是有误</li>
+										<li><i class="icon-hand-right blue"></i> 检查环境配置是不是有误</li>
+										<li><i class="icon-hand-right blue"></i> 检查处理类视图映射路径</li>
+									</ul>
+								</div>
+								<hr />
+								<div class="space"></div>
+								
+								<div class="row-fluid">
+									<div id="zhongxin">
+									</div>
+								</div>
+							</div>
+							</div>
+						</div>
+						<!-- /.col -->
+					</div>
+					<!-- /.row -->
+				</div>
+				<!-- /.page-content -->
+			</div>
+		</div>
+		<!-- /.main-content -->
+
+		<!-- 返回顶部 -->
+		<a href="#" id="btn-scroll-up" class="btn-scroll-up btn btn-sm btn-inverse">
+			<i class="ace-icon fa fa-angle-double-up icon-only bigger-110"></i>
+		</a>
+
+	</div>
+	<!-- /.main-container -->
+
+	<!-- basic scripts -->
+	<!-- 页面底部js¨ -->
+	
+	<!--[if !IE]> -->
+	<script type="text/javascript">
+		window.jQuery || document.write("<script src='<%=basePath%>static/ace/js/jquery.js'>"+"<"+"/script>");
+	</script>
+	<!-- <![endif]-->
+	<!--[if IE]>
+	<script type="text/javascript">
+	 window.jQuery || document.write("<script src='<%=basePath%>static/ace/js/jquery1x.js'>"+"<"+"/script>");
+	</script>
+	<![endif]-->
+	<script type="text/javascript">
+		if('ontouchstart' in document.documentElement) document.write("<script src='<%=basePath%>static/ace/js/jquery.mobile.custom.js'>"+"<"+"/script>");
+	</script>
+	<script src="static/ace/js/bootstrap.js"></script>
+	
+	
+	<!-- ace scripts -->
+	<script src="static/ace/js/ace/ace.js"></script>
+	<!-- inline scripts related to this page -->
+	<script type="text/javascript">
+		$(getTop(globalThis).hangge());
+	</script>
+
+</body>
+</html>

+ 3 - 0
META-INF/MANIFEST.MF

@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+

BIN
WEB-INF/classes/com/zhcs/dt/controller/activiti/AcBaseController.class


+ 326 - 0
WEB-INF/classes/com/zhcs/dt/controller/activiti/AcBaseController.java

@@ -0,0 +1,326 @@
+package com.zhcs.dt.controller.activiti;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.zip.ZipInputStream;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.activiti.bpmn.converter.BpmnXMLConverter;
+import org.activiti.bpmn.model.BpmnModel;
+import org.activiti.editor.constants.ModelDataJsonConstants;
+import org.activiti.editor.language.json.converter.BpmnJsonConverter;
+import org.activiti.engine.HistoryService;
+import org.activiti.engine.ProcessEngine;
+import org.activiti.engine.RepositoryService;
+import org.activiti.engine.RuntimeService;
+import org.activiti.engine.repository.Deployment;
+import org.activiti.engine.repository.DeploymentBuilder;
+import org.activiti.engine.repository.Model;
+import org.activiti.engine.repository.ProcessDefinition;
+import org.apache.commons.io.IOUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.util.Const;
+import com.zhcs.dt.util.DelAllFile;
+import com.zhcs.dt.util.FileUpload;
+import com.zhcs.dt.util.PathUtil;
+
+
+/** 
+ * 类名称:流程管家总类
+ * 创建人:FH Admin fh313596790qq(青苔)
+ * 更新时间:2018年1月31日
+ * @version
+ */
+public class AcBaseController extends BaseController{
+	
+	@Autowired
+	private ProcessEngine processEngine;		 //流程引擎对象
+	
+	@Autowired
+	private RepositoryService repositoryService; //管理流程定义  与流程定义和部署对象相关的Service
+	
+	@Autowired
+	private RuntimeService runtimeService; 		//与正在执行的流程实例和执行对象相关的Service(执行管理,包括启动、推进、删除流程实例等操作)
+	
+	@Autowired
+	private HistoryService historyService; 		//历史管理(执行完的数据的管理)
+	
+	/**添加流程模型并返回modelId
+	 * @param process_id 		//流程唯一标识key
+	 * @param process_author 	//流程作者
+	 * @param name 				//流程名称
+	 * @param modelname 		//模型名称
+	 * @param description 		//模型描述
+	 * @param category 			//模型分类
+	 * @return
+	 * @throws UnsupportedEncodingException
+	 */
+	protected String createModel(String process_id,String process_author,String name,String modelname,String description,String category) throws UnsupportedEncodingException{
+		
+		ObjectMapper objectMapper = new ObjectMapper();
+        ObjectNode editorNode = objectMapper.createObjectNode();
+        editorNode.put("id", "canvs");
+        editorNode.put("resourceId", "canvs");
+        ObjectNode stencilSetNode = objectMapper.createObjectNode();
+        stencilSetNode.put("namespace", "http://b3mn.org/stencilset/bpmn2.0#");		//命名空间(禁止修改)
+        stencilSetNode.put("author", "");											//流程节点作者
+        editorNode.set("stencilset", stencilSetNode);
+        ObjectNode propertiesNode = objectMapper.createObjectNode();
+        propertiesNode.put("process_id",process_id);		 						//流程唯一标识
+        propertiesNode.put("process_author",process_author);						//流程作者
+        propertiesNode.put("name",name);	 			 							//流程名称
+        editorNode.set("properties", propertiesNode);
+		
+        ObjectNode modelObjectNode = objectMapper.createObjectNode();
+        modelObjectNode.put("name", modelname);					//模型名称
+        modelObjectNode.put("revision", 1);						//模型版本
+        modelObjectNode.put("description", description);		//模型描述
+		Model modelData = repositoryService.newModel();
+		modelData.setCategory(category);						//模型分类
+		modelData.setDeploymentId(null);
+		modelData.setKey(null);
+		modelData.setMetaInfo(modelObjectNode.toString());
+		modelData.setName(modelname);							//模型名称
+		modelData.setTenantId("");
+		modelData.setVersion(1);
+		
+		repositoryService.saveModel(modelData);					//保存模型,存储数据到表:act_re_model 流程设计模型部署表
+        repositoryService.addModelEditorSource(modelData.getId(), editorNode.toString().getBytes("utf-8"));//保存资源,存储数据到表:act_ge_bytearray 二进制数据表
+        
+        return modelData.getId();
+	}
+	
+	/**从流程定义映射模型
+	 * @param processDefinitionId //流程定义ID
+	 * @return
+	 * @throws UnsupportedEncodingException
+	 * @throws XMLStreamException
+	 */
+	protected Model saveModelFromPro(String processDefinitionId) throws Exception {
+		
+		ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();
+		InputStream bpmnStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(),
+		processDefinition.getResourceName());
+		XMLInputFactory xif = XMLInputFactory.newInstance();
+		InputStreamReader in = new InputStreamReader(bpmnStream, "UTF-8");
+		XMLStreamReader xtr = xif.createXMLStreamReader(in);
+		BpmnModel bpmnModel = new BpmnXMLConverter().convertToBpmnModel(xtr);
+	
+		BpmnJsonConverter converter = new BpmnJsonConverter();
+		ObjectNode modelNode = converter.convertToJson(bpmnModel);
+		Model modelData = repositoryService.newModel();
+		modelData.setKey(processDefinition.getKey());					//唯一标识
+		modelData.setName(processDefinition.getName()+"(反射)");			//名称
+		modelData.setCategory("00102");									//分类,默认行政审批分类
+		modelData.setDeploymentId(processDefinition.getDeploymentId());
+		modelData.setVersion(Integer.parseInt(String.valueOf(repositoryService.createModelQuery().modelKey(modelData.getKey()).count()+1))); //版本
+	
+		ObjectNode modelObjectNode = new ObjectMapper().createObjectNode();
+		modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, processDefinition.getName());
+		modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, modelData.getVersion());
+		modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, processDefinition.getDescription());
+		modelData.setMetaInfo(modelObjectNode.toString());
+	
+		repositoryService.saveModel(modelData);	//保存模型
+		repositoryService.addModelEditorSource(modelData.getId(), modelNode.toString().getBytes("utf-8"));//保存资源
+	
+		return modelData;
+	}
+	
+	/**通过模型ID获取流程基本信息
+	 * @param modelId	//流程ID
+	 * @throws JsonProcessingException
+	 * @throws UnsupportedEncodingException
+	 * @throws IOException
+	 * @return
+	 */
+	protected Map<String,String> getProcessProperties(String modelId) throws Exception{
+		ObjectMapper objectMapper = new ObjectMapper();
+		ObjectNode editorJsonNode = (ObjectNode)objectMapper.readTree(new String(repositoryService.getModelEditorSource(modelId), "utf-8")).get("properties");
+		Map<String,String> map = new HashMap<String,String>();
+		map.put("process_id",editorJsonNode.get("process_id").toString());					//流程唯一标识(KEY)
+		map.put("process_author",editorJsonNode.get("process_author").toString());			//流程作者
+		map.put("name",editorJsonNode.get("name").toString());								//流程名称
+		return map;
+	}
+	
+	/**删除模型
+	 * @param modelId //模型ID
+	 */
+	protected void deleteModel(String modelId){
+		repositoryService.deleteModel(modelId); //act_re_model 和  act_ge_bytearray 两张表中相关数据都删除
+	}
+	
+	/**根据模型ID导出xml文件
+	 * @param response
+	 * @param modelId	//模型ID
+	 * @throws Exception
+	 */
+	protected void exportXmlFromModelId(HttpServletResponse response, String modelId) throws Exception{
+		Model modelData = repositoryService.getModel(modelId);  
+		BpmnJsonConverter jsonConverter = new BpmnJsonConverter();  
+		ObjectNode modelNode = (ObjectNode) new ObjectMapper().readTree(repositoryService.getModelEditorSource(modelData.getId()));
+		BpmnModel bpmnModel = jsonConverter.convertToBpmnModel(modelNode);  
+		BpmnXMLConverter xmlConverter = new BpmnXMLConverter();  
+		byte[] bpmnBytes = xmlConverter.convertToXML(bpmnModel);  
+		ByteArrayInputStream in = new ByteArrayInputStream(bpmnBytes);  
+		IOUtils.copy(in, response.getOutputStream());  
+		String filename = bpmnModel.getMainProcess().getId() + ".bpmn20.xml";  
+		response.setHeader("Content-Disposition", "attachment; filename=" + filename);  
+		response.flushBuffer(); 
+		in.close();
+	}
+	
+	/**根据模型ID预览xml文件
+	 * @param response
+	 * @param modelId	//模型ID
+	 * @throws Exception
+	 */
+	protected String viewXmlFromModelId(String modelId) throws Exception{
+		Model modelData = repositoryService.getModel(modelId);  
+		BpmnJsonConverter jsonConverter = new BpmnJsonConverter();  
+		ObjectNode modelNode = (ObjectNode) new ObjectMapper().readTree(repositoryService.getModelEditorSource(modelData.getId()));
+		BpmnModel bpmnModel = jsonConverter.convertToBpmnModel(modelNode);  
+		BpmnXMLConverter xmlConverter = new BpmnXMLConverter();  
+		byte[] bpmnBytes = xmlConverter.convertToXML(bpmnModel);  
+		ByteArrayInputStream in = new ByteArrayInputStream(bpmnBytes);  
+		InputStreamReader isr = new InputStreamReader(in,"utf-8");
+		BufferedReader bufferedReader = new BufferedReader(isr);
+		StringBuffer xmlContent = new StringBuffer(); 
+		String lineTxt = null;
+		while ((lineTxt = bufferedReader.readLine()) != null) {
+			xmlContent.append(lineTxt);
+			xmlContent.append("\n");
+		}
+		isr.close();
+		return xmlContent.toString();
+	}
+	
+	/**判断能否正常根据模型ID导出xml文件(当没有画流程图的时候会报异常)
+	 * @param response
+	 * @param modelId	//模型ID
+	 * @throws Exception
+	 */
+	protected void isCanexportXmlFromModelId(HttpServletResponse response, String modelId) throws Exception{
+		Model modelData = repositoryService.getModel(modelId);  
+		BpmnJsonConverter jsonConverter = new BpmnJsonConverter();  
+		ObjectNode modelNode = (ObjectNode) new ObjectMapper().readTree(repositoryService.getModelEditorSource(modelData.getId()));
+		BpmnModel bpmnModel = jsonConverter.convertToBpmnModel(modelNode);  
+		BpmnXMLConverter xmlConverter = new BpmnXMLConverter();  
+		xmlConverter.convertToXML(bpmnModel);  
+	}
+	
+	/**部署流程定义(根据modelId部署)
+	 * @param modelId	//模型ID
+	 * @return 部署ID
+	 */
+	protected String deploymentProcessDefinitionFromModelId(String modelId) throws Exception{
+		Model modelData = repositoryService.getModel(modelId);
+        ObjectNode modelNode = (ObjectNode) new ObjectMapper().readTree(repositoryService.getModelEditorSource(modelData.getId()));
+        byte[] bpmnBytes = null;
+		BpmnJsonConverter BpmnJsonConverter = new BpmnJsonConverter();
+		BpmnModel model = BpmnJsonConverter.convertToBpmnModel(modelNode);
+        bpmnBytes = new BpmnXMLConverter().convertToXML(model);
+        String processName = modelData.getName() + ".bpmn20.xml";
+        DeploymentBuilder deploymentBuilder = repositoryService.createDeployment().name(modelData.getName());		//部署名称
+        Deployment deployment = deploymentBuilder.addString(processName, new String(bpmnBytes,"utf-8")).deploy();	//完成部署
+        return deployment.getId();	//部署ID
+	}
+	
+	/**部署流程定义(从Classpath)
+	 * @param name		//部署名称
+	 * @param xmlpath	//xml文件路径
+	 * @param pngpath	//png文件路径
+	 * @return 部署ID
+	 */
+	protected String deploymentProcessDefinitionFromClasspath(String name, String xmlpath, String pngpath){
+		DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();		//创建部署对象
+		deploymentBuilder.name(name);						//部署名称
+		deploymentBuilder.addClasspathResource(xmlpath);	//从文件中读取xml资源
+		deploymentBuilder.addClasspathResource(pngpath);	//从文件中读取png资源
+		Deployment deployment = deploymentBuilder.deploy();	//完成部署
+		return deployment.getId();							//部署ID
+	}
+	
+	/**部署流程定义(从zip压缩包)
+	 * @param name		//部署名称
+	 * @param zippath	//zip文件路径
+	 * @return 部署ID
+	 * @throws FileNotFoundException 
+	 */
+	protected String deploymentProcessDefinitionFromZip(String name, String zippath) throws Exception{
+		File outfile = new File(zippath);
+		FileInputStream inputStream = new FileInputStream(outfile);
+		ZipInputStream ipInputStream = new ZipInputStream(inputStream);
+		DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();		//创建部署对象
+		deploymentBuilder.name(name);						//部署名称
+		deploymentBuilder.addZipInputStream(ipInputStream);
+		Deployment deployment = deploymentBuilder.deploy();	//完成部署
+		ipInputStream.close();
+		inputStream.close();
+		return deployment.getId();							//部署ID
+	}
+	
+	/**根据流程定义的部署ID生成XML和PNG
+	 * @param DEPLOYMENT_ID_ //部署ID
+	 * @throws IOException 
+	 */
+	protected void createXmlAndPng(String DEPLOYMENT_ID_) throws IOException{
+		DelAllFile.delFolder(PathUtil.getClasspath()+"uploadFiles/activitiFile"); 			//生成先清空之前生成的文件
+		List<String> names = repositoryService.getDeploymentResourceNames(DEPLOYMENT_ID_);
+        for (String name : names) {
+        	if(name.indexOf("zip")!=-1)continue;
+            InputStream in = repositoryService.getResourceAsStream(DEPLOYMENT_ID_, name);  
+            FileUpload.copyFile(in,PathUtil.getClasspath()+Const.FILEACTIVITI,name); 		//把文件上传到文件目录里面
+            in.close();  
+        }  
+	}
+	
+	/**删除部署的流程
+	 * @param DEPLOYMENT_ID_ //部署ID
+	 * @throws IOException 
+	 */
+	protected void deleteDeployment(String DEPLOYMENT_ID_) throws Exception{
+		//repositoryService.deleteDeployment(DEPLOYMENT_ID_); 		//不带级联的删除,此删除只能删除没有启动的流程,否则抛出异常 .act_re_deployment,act_re_procdef 和  act_ge_bytearray 三张表中相关数据都删除
+		repositoryService.deleteDeployment(DEPLOYMENT_ID_, true);	//级联删除,不管流程是否启动,都可以删除
+	}
+	
+	/**激活流程定义
+	 * @param DEPLOYMENT_ID_ //流程定义ID
+	 * @throws IOException
+	 */
+	protected void activateProcessDefinitionById(String DEPLOYMENT_ID_) throws IOException{
+		repositoryService.activateProcessDefinitionById(DEPLOYMENT_ID_, true, null);
+	}
+	
+	/**挂起流程定义
+	 * @param DEPLOYMENT_ID_ //流程定义ID
+	 * @throws IOException
+	 */
+	protected void suspendProcessDefinitionById(String DEPLOYMENT_ID_) throws IOException{
+		repositoryService.suspendProcessDefinitionById(DEPLOYMENT_ID_, true, null);
+	}
+
+}
+
+
+//创建人:FH Admin fh 3 1 3 596 790qq(青苔)

BIN
WEB-INF/classes/com/zhcs/dt/controller/activiti/AcBusinessController.class


+ 251 - 0
WEB-INF/classes/com/zhcs/dt/controller/activiti/AcBusinessController.java

@@ -0,0 +1,251 @@
+package com.zhcs.dt.controller.activiti;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.activiti.bpmn.model.BpmnModel;
+import org.activiti.bpmn.model.FlowNode;
+import org.activiti.bpmn.model.SequenceFlow;
+import org.activiti.engine.HistoryService;
+import org.activiti.engine.ProcessEngine;
+import org.activiti.engine.RepositoryService;
+import org.activiti.engine.RuntimeService;
+import org.activiti.engine.TaskService;
+import org.activiti.engine.history.HistoricActivityInstance;
+import org.activiti.engine.history.HistoricProcessInstance;
+import org.activiti.engine.task.Task;
+import org.activiti.image.ProcessDiagramGenerator;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.zhcs.dt.controller.activiti.util.BpmsActivityTypeEnum;
+import com.zhcs.dt.controller.activiti.util.UtilMisc;
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.util.Const;
+import com.zhcs.dt.util.DelAllFile;
+import com.zhcs.dt.util.FileUpload;
+import com.zhcs.dt.util.PathUtil;
+
+/** 
+ * 类名称:流程业务相关
+ * 创建人:FH Admin fh313596790qq(青苔)
+ * 更新时间:2018年1月31日
+ * @version
+ */
+public class AcBusinessController extends BaseController {
+	
+	@Autowired
+	private ProcessEngine processEngine;		 //流程引擎对象
+	
+	@Autowired
+	private RepositoryService repositoryService; //管理流程定义  与流程定义和部署对象相关的Service
+	
+	@Autowired
+	private RuntimeService runtimeService; 		//与正在执行的流程实例和执行对象相关的Service(执行管理,包括启动、推进、删除流程实例等操作)
+	
+	@Autowired
+	private TaskService taskService; 			//任务管理 与正在执行的任务管理相关的Service
+	
+	@Autowired
+	private HistoryService historyService; 		//历史管理(执行完的数据的管理)
+	
+	/**指派任务的代理人
+	 * @param Assignee	//代理人
+	 * @param taskId	//任务ID
+	 */
+	protected void setAssignee(String taskId,String Assignee){
+		taskService.setAssignee(taskId, Assignee);
+	}
+	
+	/**设置流程变量(绑定任务)用Map形式
+	 * @param taskId	//任务ID
+	 * @param map
+	 */
+	protected void setVariablesByTaskIdAsMap(String taskId,Map<String,Object> map){
+		taskService.setVariablesLocal(taskId,map);
+	}
+	
+	/**获取流程变量
+	 * @param taskId	//任务ID
+	 * @param key		//键
+	 * @param map
+	 */
+	protected Object getVariablesByTaskIdAsMap(String taskId,String key){
+		return taskService.getVariable(taskId, key);
+	}
+	
+	/**设置流程变量(不绑定任务)
+	 * @param taskId	//任务ID
+	 * @param map
+	 */
+	protected void setVariablesByTaskId(String taskId,String key,String value){
+		taskService.setVariable(taskId,key,value);
+	}
+	
+	/**移除流程变量(从正在运行中)
+	 * @param PROC_INST_ID_	//流程实例ID
+	 * @param map
+	 */
+	protected void removeVariablesByPROC_INST_ID_(String PROC_INST_ID_,String key){
+		runtimeService.removeVariable(PROC_INST_ID_, key);
+	}
+	
+	/**查询我的任务
+	 * @param USERNAME
+	 * @return 返回任务列表
+	 */
+	protected List<Task> findMyPersonalTask(String USERNAME){
+		return taskService.createTaskQuery()		//创建查询对象
+						  .taskAssignee(USERNAME)	//指定办理人
+						  .list();					//读出列表(比如从0到10)
+	}
+	
+	/**完成任务
+	 * @param taskId 任务ID
+	 */
+	protected void completeMyPersonalTask(String taskId){
+		taskService.complete(taskId); 
+	}
+	
+	/**作废流程
+	 * @param processId	//流程实例ID
+	 * @param reason	//作废原因
+	 * @throws Exception
+	 */
+	protected void deleteProcessInstance(String processId,String reason) throws Exception{
+		runtimeService.deleteProcessInstance(processId, reason);
+	}
+	
+	/**删除历史流程
+	 * @param PROC_INST_ID_	//流程实例ID
+	 * @throws Exception
+	 */
+	protected void deleteHiProcessInstance(String PROC_INST_ID_) throws Exception{
+		historyService.deleteHistoricProcessInstance(PROC_INST_ID_);
+	}
+	
+	/**生成当前任务节点流程图片PNG
+	 * @param PROC_INST_ID_ //流程实例ID
+	 * @param FILENAME 		//图片名称
+	 * @throws IOException 
+	 */
+	protected void createXmlAndPngAtNowTask(String PROC_INST_ID_, String FILENAME) throws IOException{
+		DelAllFile.delFolder(PathUtil.getClasspath()+"uploadFiles/activitiFile"); 	//生成先清空之前生成的文件
+        InputStream in = getResourceDiagramInputStream(PROC_INST_ID_); 
+        FileUpload.copyFile(in,PathUtil.getClasspath()+Const.FILEACTIVITI,FILENAME);//把文件上传到文件目录里面
+        in.close();  
+	}
+	
+	/**获取当前任务流程图片的输入流
+	 * @param PROC_INST_ID_	//流程实例ID
+	 * @return
+	 */
+	private InputStream getResourceDiagramInputStream(String PROC_INST_ID_){
+        try {
+            HistoricProcessInstance hip = historyService.createHistoricProcessInstanceQuery().processInstanceId(PROC_INST_ID_).singleResult(); 			//获取历史流程实例
+            List<HistoricActivityInstance> hai = historyService.createHistoricActivityInstanceQuery().processInstanceId(PROC_INST_ID_)
+            																						 .orderByHistoricActivityInstanceId().asc().list();	//获取流程中已经执行的节点,按照执行先后顺序排序
+            List<String> executedActivityIdList = new ArrayList<String>();						// 构造已执行的节点ID集合
+            for (HistoricActivityInstance activityInstance : hai) {
+                executedActivityIdList.add(activityInstance.getActivityId());
+            }
+            BpmnModel bpmnModel = repositoryService.getBpmnModel(hip.getProcessDefinitionId()); // 获取bpmnModel
+            List<String> flowIds = this.getExecutedFlows(bpmnModel, hai);						// 获取流程已发生流转的线ID集合
+            ProcessDiagramGenerator processDiagramGenerator = processEngine.getProcessEngineConfiguration().getProcessDiagramGenerator();	
+            InputStream imageStream = processDiagramGenerator.generateDiagram(bpmnModel, "png", executedActivityIdList, flowIds, "宋体", "微软雅黑", "黑体", null, 2.0);	//使用默认配置获得流程图表生成器,并生成追踪图片字符流
+            return imageStream;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+	   
+   /**获取流程已发生流转的线ID集合
+	 * @param bpmnModel
+	 * @param historicActivityInstances //历史流程实例list
+	 * @return
+	 */
+   private List<String> getExecutedFlows(BpmnModel bpmnModel, List<HistoricActivityInstance> historicActivityInstances) {
+        List<String> flowIdList = new ArrayList<String>();					//流转线ID集合
+        List<FlowNode> historicFlowNodeList = new LinkedList<FlowNode>();	//全部活动实例
+        List<HistoricActivityInstance> finishedActivityInstanceList = new LinkedList<HistoricActivityInstance>();	//已完成的历史活动节点
+        for(HistoricActivityInstance historicActivityInstance : historicActivityInstances) {
+            historicFlowNodeList.add((FlowNode) bpmnModel.getMainProcess().getFlowElement(historicActivityInstance.getActivityId(), true));
+            if(historicActivityInstance.getEndTime() != null) {
+                finishedActivityInstanceList.add(historicActivityInstance);
+            }
+        }
+        /**遍历已完成的活动实例,从每个实例的outgoingFlows中找到已执行的*/
+        FlowNode currentFlowNode = null;
+        for(HistoricActivityInstance currentActivityInstance : finishedActivityInstanceList) {
+        	/**获得当前活动对应的节点信息及outgoingFlows信息*/
+            currentFlowNode = (FlowNode) bpmnModel.getMainProcess().getFlowElement(currentActivityInstance.getActivityId(), true);
+            List<SequenceFlow> sequenceFlowList = currentFlowNode.getOutgoingFlows();
+            /**
+             * 遍历outgoingFlows并找到已流转的
+             * 满足如下条件任务已流转:
+             * 1.当前节点是并行网关或包含网关,则通过outgoingFlows能够在历史活动中找到的全部节点均为已流转
+             * 2.当前节点是以上两种类型之外的,通过outgoingFlows查找到的时间最近的流转节点视为有效流转
+             */
+            FlowNode targetFlowNode = null;
+            if(BpmsActivityTypeEnum.PARALLEL_GATEWAY.getType().equals(currentActivityInstance.getActivityType())
+                    || BpmsActivityTypeEnum.INCLUSIVE_GATEWAY.getType().equals(currentActivityInstance.getActivityType())) {
+                for(SequenceFlow sequenceFlow : sequenceFlowList) { //遍历历史活动节点,找到匹配Flow目标节点的
+                    targetFlowNode = (FlowNode) bpmnModel.getMainProcess().getFlowElement(sequenceFlow.getTargetRef(), true);
+                    if(historicFlowNodeList.contains(targetFlowNode)) {
+                        flowIdList.add(sequenceFlow.getId());
+                    }
+                }
+            }else{
+                List<Map<String, String>> tempMapList = new LinkedList<Map<String,String>>();
+                for(SequenceFlow sequenceFlow : sequenceFlowList) {	 //遍历历史活动节点,找到匹配Flow目标节点的
+                    for(HistoricActivityInstance historicActivityInstance : historicActivityInstances) {
+                        if(historicActivityInstance.getActivityId().equals(sequenceFlow.getTargetRef())) {
+                            tempMapList.add(UtilMisc.toMap("flowId", sequenceFlow.getId(), "activityStartTime", String.valueOf(historicActivityInstance.getStartTime().getTime())));
+                        }
+                    }
+                }
+                String flowId = null;
+                for (Map<String, String> map : tempMapList) {
+                    flowId = map.get("flowId");
+                    flowIdList.add(flowId);
+                }
+             	/**遍历匹配的集合,取得开始时间最早的一个*/
+                /*long earliestStamp = 0L;
+                String flowId = null;
+                for (Map<String, String> map : tempMapList) {
+                    long activityStartTime = Long.valueOf(map.get("activityStartTime"));
+                    if (earliestStamp == 0 || earliestStamp >= activityStartTime) {
+                        earliestStamp = activityStartTime;
+                        flowId = map.get("flowId");
+                    }
+                }
+                flowIdList.add(flowId);*/
+            }
+        }
+        return flowIdList;
+    }
+   
+   /**获取发起人
+	 * @param PROC_INST_ID_ //流程实例ID
+	 * @return
+	 */
+   protected String getInitiator(String PROC_INST_ID_) {
+		HistoricProcessInstance hip = historyService.createHistoricProcessInstanceQuery().processInstanceId(PROC_INST_ID_).singleResult(); 			//获取历史流程实例
+		List<HistoricActivityInstance> hais = historyService.createHistoricActivityInstanceQuery().processInstanceId(PROC_INST_ID_)
+		   																						 .orderByHistoricActivityInstanceId().asc().list();	//获取流程中已经执行的节点,按照执行先后顺序排序
+		BpmnModel bpmnModel = repositoryService.getBpmnModel(hip.getProcessDefinitionId()); // 获取bpmnModel
+		List<FlowNode> historicFlowNodeList = new LinkedList<FlowNode>();					//全部活动实例
+		for(HistoricActivityInstance hai : hais) {
+		    historicFlowNodeList.add((FlowNode) bpmnModel.getMainProcess().getFlowElement(hai.getActivityId(), true));
+		    if(hai.getAssignee() != null) {
+		    	return hai.getAssignee();	//不为空的第一个节点办理人就是发起人
+		    }
+		}
+		return null;
+    }
+   
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/activiti/AcStartController.class


+ 49 - 0
WEB-INF/classes/com/zhcs/dt/controller/activiti/AcStartController.java

@@ -0,0 +1,49 @@
+package com.zhcs.dt.controller.activiti;
+
+import java.util.Map;
+
+import org.activiti.engine.RuntimeService;
+import org.activiti.engine.runtime.ProcessInstance;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.zhcs.dt.controller.base.BaseController;
+
+/** 
+ * 类名称:启动流程用
+ * 创建人:FH Admin fh313596790qq(青苔)
+ * 更新时间:2018年1月31日
+ * @version
+ */
+public class AcStartController extends BaseController {
+	
+	@Autowired
+	private RuntimeService runtimeService; 		//与正在执行的流程实例和执行对象相关的Service(执行管理,包括启动、推进、删除流程实例等操作)
+	
+	/**通过KEY启动流程实例(不带变量)
+	 * @param processInstanceKey //流程定义的KEY
+	 * @return 返回流程实例ID
+	 */
+	protected String startProcessInstanceByKey(String processInstanceKey){
+		ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processInstanceKey);			//用流程定义的KEY启动,会自动选择KEY相同的流程定义中最新版本的那个(KEY为模型中的流程唯一标识)
+		return processInstance.getId();	//返回流程实例ID
+	}
+	
+	/**通过KEY启动流程实例(带变量)
+	 * @param processInstanceKey //流程定义的KEY
+	 * @return 返回流程实例ID
+	 */
+	protected String startProcessInstanceByKeyHasVariables(String processInstanceKey,Map<String,Object> map){
+		ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processInstanceKey, map);	//map存储变量 用流程定义的KEY启动,会自动选择KEY相同的流程定义中最新版本的那个(KEY为模型中的流程唯一标识)
+		return processInstance.getId();	//返回流程实例ID
+	}
+	
+	/**通过ID启动流程实例
+	 * @param processInstanceId //流程定义的ID
+	 * @return 返回流程实例ID
+	 */
+	protected String startProcessInstanceById(String processInstanceId){
+		ProcessInstance processInstance = runtimeService.startProcessInstanceById(processInstanceId);			//用流程定义的ID启动
+		return processInstance.getId();	//返回流程实例ID
+	}
+   
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/activiti/editor/main/StencilsetRestResource.class


+ 30 - 0
WEB-INF/classes/com/zhcs/dt/controller/activiti/editor/main/StencilsetRestResource.java

@@ -0,0 +1,30 @@
+package com.zhcs.dt.controller.activiti.editor.main;
+
+import java.io.InputStream;
+
+import org.activiti.engine.ActivitiException;
+import org.apache.commons.io.IOUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/** 
+ * 类名称:StencilsetRestResource
+ * 创建人:acticiti官方源码 3 1 3 596 790 qq(青苔)
+ * 更新时间:2017年12月25日
+ * @version
+ */
+@RestController
+public class StencilsetRestResource {
+  
+  @RequestMapping(value="/editor/stencilset", method = RequestMethod.GET, produces = "application/json;charset=utf-8")
+  public @ResponseBody String getStencilset() {
+    InputStream stencilsetStream = this.getClass().getClassLoader().getResourceAsStream("stencilset.json");
+    try {
+      return IOUtils.toString(stencilsetStream, "utf-8");
+    } catch (Exception e) {
+      throw new ActivitiException("Error while loading stencil set", e);
+    }
+  }
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/activiti/editor/model/ModelEditorJsonRestResources.class


+ 59 - 0
WEB-INF/classes/com/zhcs/dt/controller/activiti/editor/model/ModelEditorJsonRestResources.java

@@ -0,0 +1,59 @@
+package com.zhcs.dt.controller.activiti.editor.model;
+
+import org.activiti.editor.constants.ModelDataJsonConstants;
+import org.activiti.engine.ActivitiException;
+import org.activiti.engine.RepositoryService;
+import org.activiti.engine.repository.Model;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+/** 
+ * 类名称:ModelEditorJsonRestResources
+ * 创建人:acticiti官方源码 fh313596790qq(青苔)
+ * 更新时间:2017年12月25日
+ * @version
+ */
+@RestController
+public class ModelEditorJsonRestResources implements ModelDataJsonConstants {
+  
+  protected static final Logger LOGGER = LoggerFactory.getLogger(ModelEditorJsonRestResources.class);
+  
+  @Autowired
+  private RepositoryService repositoryService;
+  
+  @Autowired
+  private ObjectMapper objectMapper;
+
+  @RequestMapping(value="/model/{modelId}/json", method = RequestMethod.GET, produces = "application/json")
+  public ObjectNode getEditorJson(@PathVariable String modelId) {
+    ObjectNode modelNode = null;
+    Model model = repositoryService.getModel(modelId);
+    if (model != null) {
+      try {
+        if (StringUtils.isNotEmpty(model.getMetaInfo())) {
+          modelNode = (ObjectNode) objectMapper.readTree(model.getMetaInfo());
+        } else {
+          modelNode = objectMapper.createObjectNode();
+          modelNode.put(MODEL_NAME, model.getName());
+        }
+        modelNode.put(MODEL_ID, model.getId());
+        ObjectNode editorJsonNode = (ObjectNode) objectMapper.readTree(
+            new String(repositoryService.getModelEditorSource(model.getId()), "utf-8"));
+        modelNode.put("model", editorJsonNode);
+      } catch (Exception e) {
+        LOGGER.error("Error creating model JSON", e);
+        throw new ActivitiException("Error creating model JSON", e);
+      }
+    }
+    return modelNode;
+  }
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/activiti/editor/model/ModelSaveRestResource.class


+ 75 - 0
WEB-INF/classes/com/zhcs/dt/controller/activiti/editor/model/ModelSaveRestResource.java

@@ -0,0 +1,75 @@
+package com.zhcs.dt.controller.activiti.editor.model;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+
+import org.activiti.editor.constants.ModelDataJsonConstants;
+import org.activiti.engine.ActivitiException;
+import org.activiti.engine.RepositoryService;
+import org.activiti.engine.repository.Model;
+import org.apache.batik.transcoder.TranscoderInput;
+import org.apache.batik.transcoder.TranscoderOutput;
+import org.apache.batik.transcoder.image.PNGTranscoder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+/** 
+ * 类名称:ModelSaveRestResource
+ * 创建人:acticiti官方源码 fh313596790qq(青苔)
+ * 更新时间:2017年12月25日
+ * @version
+ */
+@RestController
+public class ModelSaveRestResource implements ModelDataJsonConstants {
+  
+  protected static final Logger LOGGER = LoggerFactory.getLogger(ModelSaveRestResource.class);
+
+  @Autowired
+  private RepositoryService repositoryService;
+  
+  @Autowired
+  private ObjectMapper objectMapper;
+  
+  @RequestMapping(value="/model/{modelId}/save", method = RequestMethod.PUT)
+  @ResponseStatus(value = HttpStatus.OK)
+  public void saveModel(@PathVariable String modelId, @RequestBody MultiValueMap<String, String> values) {
+    try {
+      
+      Model model = repositoryService.getModel(modelId);
+      ObjectNode modelJson = (ObjectNode) objectMapper.readTree(model.getMetaInfo());
+      modelJson.put(MODEL_NAME, values.getFirst("name"));
+      modelJson.put(MODEL_DESCRIPTION, values.getFirst("description"));
+      model.setMetaInfo(modelJson.toString());
+      model.setName(values.getFirst("name"));
+      repositoryService.saveModel(model);
+      repositoryService.addModelEditorSource(model.getId(), values.getFirst("json_xml").getBytes("utf-8"));
+      InputStream svgStream = new ByteArrayInputStream(values.getFirst("svg_xml").getBytes("utf-8"));
+      TranscoderInput input = new TranscoderInput(svgStream);
+      PNGTranscoder transcoder = new PNGTranscoder();
+      // Setup output
+      ByteArrayOutputStream outStream = new ByteArrayOutputStream();
+      TranscoderOutput output = new TranscoderOutput(outStream);
+      // Do the transformation
+      transcoder.transcode(input, output);
+      final byte[] result = outStream.toByteArray();
+      repositoryService.addModelEditorSourceExtra(model.getId(), result);
+      outStream.close();
+    } catch (Exception e) {
+      LOGGER.error("Error saving model", e);
+      throw new ActivitiException("Error saving model", e);
+    }
+  }
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/activiti/fhmodel/FHModelController.class


+ 298 - 0
WEB-INF/classes/com/zhcs/dt/controller/activiti/fhmodel/FHModelController.java

@@ -0,0 +1,298 @@
+package com.zhcs.dt.controller.activiti.fhmodel;
+
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.activiti.AcBaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.activiti.fhmodel.FHModelManager;
+import com.zhcs.dt.service.system.user.UserManager;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+
+/** 
+ * 说明:工作流模型管理
+ * 创建人:FH Admin Q- 3 1 359 6790
+ * 创建时间:2017-12-26
+ */
+@Controller
+@RequestMapping(value="/fhmodel")
+public class FHModelController extends AcBaseController{
+	
+	String menuUrl = "fhmodel/list.do"; //菜单地址(权限用)
+	@Resource(name="fhmodelService")
+	private FHModelManager fhmodelService;
+	@Resource(name="userService")
+	private UserManager userService;
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"列表FHModel");
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");				//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		page.setPd(pd);
+		List<PageData>	varList = fhmodelService.list(page);	//列出FHModel列表
+		mv.setViewName("activiti/fhmodel/fhmodel_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());				//按钮权限
+		return mv;
+	}
+	
+	/**去新增页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goAdd")
+	public ModelAndView goAdd()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("USERNAME", Jurisdiction.getUsername());
+		pd = userService.findByUsername(pd);
+		pd.put("process_author", pd.getString("NAME")); 		//通过当前用户名获取用户姓名充当流程作者
+		mv.setViewName("activiti/fhmodel/fhmodel_edit");
+		mv.addObject("msg", "save");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**保存
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/save")
+	public ModelAndView save() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"新增FHModel");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String process_author = pd.getString("process_author");	//流程作者
+		String name  = pd.getString("name");					//流程名称
+		String process_id  = pd.getString("process_id");		//流程标识
+		String modelname  = pd.getString("modelname");			//模型名称
+		String description  = pd.getString("description");		//模型描述
+		String category  = pd.getString("category");			//模型分类
+		String modelId = createModel(process_id,process_author,name,modelname,description,category);
+		mv.addObject("msg","success");
+		mv.addObject("sunval",modelId);
+		mv.setViewName("save_result");
+		return mv;
+	}
+	
+	 /**从流程定义映射模型
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/saveModelFromPro")
+	@ResponseBody
+	public Object saveModelFromPro(){
+		logBefore(logger, Jurisdiction.getUsername()+"新增FHModel从流程定义");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} 	//校验权限
+		PageData pd = new PageData();		
+		Map<String,Object> map = new HashMap<String,Object>();
+		String msg = "ok";
+		pd = this.getPageData();
+		String processDefinitionId = pd.getString("processDefinitionId"); 		//流程定义ID
+		try {
+			saveModelFromPro(processDefinitionId);
+		} catch (Exception e) {
+			msg = "errer";
+		}
+		map.put("msg", msg);
+		return AppUtil.returnObject(pd, map);
+	}
+	
+	/**打开流程编辑器页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/editor")
+	public ModelAndView editor()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		mv.setViewName("activiti/fhmodel/editor");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	 /**去修改类型页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goEdit")
+	public ModelAndView goEdit()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd = fhmodelService.findById(pd);	//根据ID读取
+		mv.setViewName("activiti/fhmodel/fhmodel_type");
+		mv.addObject("msg", "edit");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**修改类型
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/edit")
+	public ModelAndView edit() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"修改FHModel类型");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		fhmodelService.edit(pd);
+		mv.addObject("msg","success");
+		mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**删除
+	 * @param out
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delete")
+	public void delete(PrintWriter out) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"删除FHModel");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String modelId = pd.getString("ID_");
+		deleteModel(modelId);
+		out.write("success");
+		out.close();
+	}
+	
+	 /**批量删除
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/deleteAll")
+	@ResponseBody
+	public Object deleteAll() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"批量删除FHModel");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
+		PageData pd = new PageData();		
+		Map<String,Object> map = new HashMap<String,Object>();
+		pd = this.getPageData();
+		List<PageData> pdList = new ArrayList<PageData>();
+		String DATA_IDS = pd.getString("DATA_IDS");
+		if(null != DATA_IDS && !"".equals(DATA_IDS)){
+			String ArrayDATA_IDS[] = DATA_IDS.split(",");
+			for(int i=0;i<ArrayDATA_IDS.length;i++){
+				deleteModel(ArrayDATA_IDS[i]);
+			}
+			pd.put("msg", "ok");
+		}else{
+			pd.put("msg", "no");
+		}
+		pdList.add(pd);
+		map.put("list", pdList);
+		return AppUtil.returnObject(pd, map);
+	}
+	
+	/**部署流程定义
+	 * @return 
+	 */
+	@RequestMapping(value="/deployment")
+	@ResponseBody
+	public Object deployment(){
+		logBefore(logger, Jurisdiction.getUsername()+"部署流程定义");
+		Map<String,Object> map = new HashMap<String,Object>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String result = "success";
+		try{
+			deploymentProcessDefinitionFromModelId(pd.getString("modelId"));//部署流程定义
+		}catch (Exception e){
+			result = "error";
+			logger.error(e.toString(), e);
+		}finally{
+			map.put("result", result);
+			logAfter(logger);
+		}
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**判断能否正常根据模型ID导出xml文件
+	 * @return 
+	 */
+	@RequestMapping(value="/isCanexportXml")
+	@ResponseBody
+	public Object isCanexportXml(HttpServletResponse response){
+		logBefore(logger, Jurisdiction.getUsername()+"判断能否正常导出模型xml");
+		Map<String,Object> map = new HashMap<String,Object>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String result = "success";
+		try{
+			isCanexportXmlFromModelId(response,pd.getString("modelId"));
+		}catch (Exception e){
+			result = "error";
+			logger.error(e.toString(), e);
+		}finally{
+			map.put("result", result);
+			logAfter(logger);
+		}
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**正式根据模型ID导出xml文件
+	 * @return 
+	 */
+	@RequestMapping(value="/exportXml")
+	public void exportXml(HttpServletResponse response){
+		logBefore(logger, Jurisdiction.getUsername()+"导出模型xml");
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		try{
+			exportXmlFromModelId(response,pd.getString("modelId"));	//导出xml文件
+		}catch (Exception e){
+			logger.error(e.toString(), e);
+		}finally{
+			logAfter(logger);
+		}
+	}
+	
+	/**去预览XML页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goView")
+	public ModelAndView goView()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String code = viewXmlFromModelId(pd.getString("modelId"));
+		pd.put("code", code);
+		mv.setViewName("activiti/fhmodel/xml_view");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/activiti/hiprocdef/HiprocdefController.class


+ 156 - 0
WEB-INF/classes/com/zhcs/dt/controller/activiti/hiprocdef/HiprocdefController.java

@@ -0,0 +1,156 @@
+package com.zhcs.dt.controller.activiti.hiprocdef;
+
+import java.io.PrintWriter;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.activiti.AcBusinessController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.activiti.hiprocdef.HiprocdefManager;
+import com.zhcs.dt.service.activiti.ruprocdef.RuprocdefManager;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Const;
+import com.zhcs.dt.util.ImageAnd64Binary;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.PathUtil;
+
+/** 
+ * 说明:历史流程任务
+ * 创建人:FH Q313596790
+ * 创建时间:2018-01-28
+ */
+@Controller
+@RequestMapping(value="/hiprocdef")
+public class HiprocdefController extends AcBusinessController {
+	
+	String menuUrl = "hiprocdef/list.do"; //菜单地址(权限用)
+	@Resource(name="hiprocdefService")
+	private HiprocdefManager hiprocdefService;
+	@Resource(name="ruprocdefService")
+	private RuprocdefManager ruprocdefService;
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"列表Hiprocdef");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");				//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		String lastStart = pd.getString("lastStart");			//开始时间
+		String lastEnd = pd.getString("lastEnd");				//结束时间
+		if(lastStart != null && !"".equals(lastStart)){
+			pd.put("lastStart", lastStart+" 00:00:00");
+		}
+		if(lastEnd != null && !"".equals(lastEnd)){
+			pd.put("lastEnd", lastEnd+" 00:00:00");
+		}
+		page.setPd(pd);
+		List<PageData> varList = hiprocdefService.list(page);	//列出Hiprocdef列表
+		for(int i=0;i<varList.size();i++){
+			Long ztime = Long.parseLong(varList.get(i).get("DURATION_").toString());
+			Long tian = ztime / (1000*60*60*24);
+			Long shi = (ztime % (1000*60*60*24))/(1000*60*60);
+			Long fen = (ztime % (1000*60*60*24))%(1000*60*60)/(1000*60);
+			varList.get(i).put("ZTIME", tian+"天"+shi+"时"+fen+"分");
+			varList.get(i).put("INITATOR", getInitiator(varList.get(i).getString("PROC_INST_ID_")));//流程申请人
+		}
+		mv.setViewName("activiti/hiprocdef/hiprocdef_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**查看流程信息页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/view")
+	public ModelAndView view()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		List<PageData>	varList = hiprocdefService.hivarList(pd);			//列出历史流程变量列表
+		List<PageData>	hitaskList = ruprocdefService.hiTaskList(pd);		//历史任务节点列表
+		for(int i=0;i<hitaskList.size();i++){								//根据耗时的毫秒数计算天时分秒
+			if(null != hitaskList.get(i).get("DURATION_")){
+				Long ztime = Long.parseLong(hitaskList.get(i).get("DURATION_").toString());
+				Long tian = ztime / (1000*60*60*24);
+				Long shi = (ztime % (1000*60*60*24))/(1000*60*60);
+				Long fen = (ztime % (1000*60*60*24))%(1000*60*60)/(1000*60);
+				Long miao = (ztime % (1000*60*60*24))%(1000*60*60)%(1000*60)/1000;
+				hitaskList.get(i).put("ZTIME", tian+"天"+shi+"时"+fen+"分"+miao+"秒");
+			}
+		}
+		String FILENAME = URLDecoder.decode(pd.getString("FILENAME"), "UTF-8");
+		createXmlAndPngAtNowTask(pd.getString("PROC_INST_ID_"),FILENAME);	//生成当前任务节点的流程图片
+		pd.put("FILENAME", FILENAME);
+		String imgSrcPath = PathUtil.getClasspath()+Const.FILEACTIVITI+FILENAME;
+		pd.put("imgSrc", "data:image/jpeg;base64,"+ImageAnd64Binary.getImageStr(imgSrcPath)); //解决图片src中文乱码,把图片转成base64格式显示(这样就不用修改tomcat的配置了)
+		mv.setViewName("activiti/hiprocdef/hiprocdef_view");
+		mv.addObject("varList", varList);
+		mv.addObject("hitaskList", hitaskList);
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**删除
+	 * @param out
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delete")
+	public void delete(PrintWriter out) throws Exception{
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		deleteHiProcessInstance(pd.getString("PROC_INST_ID_"));
+		out.write("success");
+		out.close();
+	}
+	
+	 /**批量删除
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/deleteAll")
+	@ResponseBody
+	public Object deleteAll() throws Exception{
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
+		PageData pd = new PageData();		
+		Map<String,Object> map = new HashMap<String,Object>();
+		pd = this.getPageData();
+		List<PageData> pdList = new ArrayList<PageData>();
+		String DATA_IDS = pd.getString("DATA_IDS");
+		if(null != DATA_IDS && !"".equals(DATA_IDS)){
+			String ArrayDATA_IDS[] = DATA_IDS.split(",");
+			for(int i=0;i<ArrayDATA_IDS.length;i++){
+				deleteHiProcessInstance(ArrayDATA_IDS[i]);
+			}
+			pd.put("msg", "ok");
+		}else{
+			pd.put("msg", "no");
+		}
+		pdList.add(pd);
+		map.put("list", pdList);
+		return AppUtil.returnObject(pd, map);
+	}
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/activiti/hitask/HiTaskController.class


+ 73 - 0
WEB-INF/classes/com/zhcs/dt/controller/activiti/hitask/HiTaskController.java

@@ -0,0 +1,73 @@
+package com.zhcs.dt.controller.activiti.hitask;
+
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.activiti.AcBusinessController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.activiti.ruprocdef.RuprocdefManager;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+
+/** 
+ * 说明:已办任务
+ * 创建人:FH Q313596790
+ * 创建时间:2018-01-30
+ */
+@Controller
+@RequestMapping(value="/hitask")
+public class HiTaskController extends AcBusinessController {
+	
+	String menuUrl = "hitask/list.do"; 	//菜单地址(权限用)
+	@Resource(name="ruprocdefService")
+	private RuprocdefManager ruprocdefService;
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"列表已办任务");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");						//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		String lastStart = pd.getString("lastStart");					//开始时间
+		String lastEnd = pd.getString("lastEnd");						//结束时间
+		if(lastStart != null && !"".equals(lastStart)){
+			pd.put("lastStart", lastStart+" 00:00:00");
+		}
+		if(lastEnd != null && !"".equals(lastEnd)){
+			pd.put("lastEnd", lastEnd+" 00:00:00");
+		}
+		pd.put("USERNAME", Jurisdiction.getUsername()); 				//查询当前用户的任务(用户名查询)
+		pd.put("RNUMBERS", Jurisdiction.getRnumbers()); 				//查询当前用户的任务(角色编码查询)
+		page.setPd(pd);
+		List<PageData>	varList = ruprocdefService.hitasklist(page);	//列出历史任务列表
+		for(int i=0;i<varList.size();i++){
+			Long ztime = Long.parseLong(varList.get(i).get("DURATION_").toString());
+			Long tian = ztime / (1000*60*60*24);
+			Long shi = (ztime % (1000*60*60*24))/(1000*60*60);
+			Long fen = (ztime % (1000*60*60*24))%(1000*60*60)/(1000*60);
+			Long miao = (ztime % (1000*60*60*24))%(1000*60*60)%(1000*60)/1000;
+			varList.get(i).put("ZTIME", tian+"天"+shi+"时"+fen+"分"+miao+"秒");
+			varList.get(i).put("INITATOR", getInitiator(varList.get(i).getString("PROC_INST_ID_")));//流程申请人
+		}
+		mv.setViewName("activiti/hitask/hitask_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());						//按钮权限
+		return mv;
+	}
+	
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/activiti/procdef/ProcdefController.class


+ 240 - 0
WEB-INF/classes/com/zhcs/dt/controller/activiti/procdef/ProcdefController.java

@@ -0,0 +1,240 @@
+package com.zhcs.dt.controller.activiti.procdef;
+
+import java.io.PrintWriter;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.activiti.AcBaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.activiti.procdef.ProcdefManager;
+import com.zhcs.dt.service.activiti.ruprocdef.RuprocdefManager;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Const;
+import com.zhcs.dt.util.FileDownload;
+import com.zhcs.dt.util.FileUpload;
+import com.zhcs.dt.util.FileZip;
+import com.zhcs.dt.util.ImageAnd64Binary;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.PathUtil;
+import com.zhcs.dt.util.Tools;
+
+/** 
+ * 说明:流程管理
+ * 创建人:FH Admin Q313596790
+ * 创建时间:2018-01-06
+ */
+@Controller
+@RequestMapping(value="/procdef")
+public class ProcdefController extends AcBaseController {
+	
+	String menuUrl = "procdef/list.do"; //菜单地址(权限用)
+	@Resource(name="procdefService")
+	private ProcdefManager procdefService;
+	@Resource(name="ruprocdefService")
+	private RuprocdefManager ruprocdefService;
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");				//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		String lastStart = pd.getString("lastStart");			//开始时间
+		String lastEnd = pd.getString("lastEnd");				//结束时间
+		if(lastStart != null && !"".equals(lastStart)){
+			pd.put("lastStart", lastStart+" 00:00:00");
+		}
+		if(lastEnd != null && !"".equals(lastEnd)){
+			pd.put("lastEnd", lastEnd+" 00:00:00");
+		}
+		page.setPd(pd);
+		List<PageData>	varList = procdefService.list(page);	//列出Procdef列表
+		mv.setViewName("activiti/procdef/procdef_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());				//按钮权限
+		return mv;
+	}
+	
+	/**去预览XML页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goViewXml")
+	public ModelAndView goViewXml()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String DEPLOYMENT_ID_ = pd.getString("DEPLOYMENT_ID_");		//部署ID
+		createXmlAndPng(DEPLOYMENT_ID_);							//生成XML和PNG
+		String code = Tools.readTxtFileAll(Const.FILEACTIVITI+URLDecoder.decode(pd.getString("FILENAME"), "UTF-8"),"utf-8");
+		pd.put("code", code);
+		mv.setViewName("activiti/fhmodel/xml_view");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**去预览PNG页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goViewPng")
+	public ModelAndView goViewPng()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String DEPLOYMENT_ID_ = pd.getString("DEPLOYMENT_ID_");		//部署ID
+		createXmlAndPng(DEPLOYMENT_ID_);							//生成XML和PNG
+		String FILENAME = URLDecoder.decode(pd.getString("FILENAME"), "UTF-8");
+		pd.put("FILENAME", FILENAME);
+		String imgSrcPath = PathUtil.getClasspath()+Const.FILEACTIVITI+FILENAME;
+		pd.put("imgSrc", "data:image/jpeg;base64,"+ImageAnd64Binary.getImageStr(imgSrcPath)); //解决图片src中文乱码,把图片转成base64格式显示(这样就不用修改tomcat的配置了)
+		mv.setViewName("activiti/procdef/png_view");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**打包下载xml和png
+	 * @param response
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/download")
+	public void download(HttpServletResponse response)throws Exception{
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String DEPLOYMENT_ID_ = pd.getString("DEPLOYMENT_ID_");		//部署ID
+		createXmlAndPng(DEPLOYMENT_ID_);							//生成XML和PNG
+		/*生成的全部代码压缩成zip文件*/
+		if(FileZip.zip(PathUtil.getClasspath()+"uploadFiles/activitiFile", PathUtil.getClasspath()+"uploadFiles/activitiFile.zip")){
+			/*下载代码*/
+			FileDownload.fileDownload(response, PathUtil.getClasspath()+"uploadFiles/activitiFile.zip", "activitiFile.zip");
+		}
+	}
+	
+	/**打开上传流程页面
+	 * @return
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goUploadPro")
+	public ModelAndView goUploadPro()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		mv.setViewName("activiti/procdef/procdef_upload");
+		return mv;
+	}
+	
+	/**导入流程
+	 * @param file
+	 * @return
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/uploadPro")
+	public ModelAndView readExcel(
+			@RequestParam(value="zip",required=false) MultipartFile file
+			){
+		ModelAndView mv = this.getModelAndView();
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;}
+		if (null != file && !file.isEmpty()) {
+			String filePath = PathUtil.getClasspath() + Const.FILEACTIVITI;								//文件上传路径
+			String fileName =  FileUpload.fileUp(file, filePath, "proFile");							//执行上传
+			try {
+				deploymentProcessDefinitionFromZip("FHPRO", filePath+fileName);
+			} catch (Exception e) {
+				mv.addObject("errer", "errer");
+				mv.addObject("msgContent", "文件资源不符合流程标准( 或缺少 xml or png )");
+			}
+		}
+		mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**激活or挂起流程实例
+	 * @return
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/onoffPro")
+	@ResponseBody
+	public Object onoffProcessDefinition()throws Exception{
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
+		PageData pd = new PageData();		
+		Map<String,Object> map = new HashMap<String,Object>();
+		pd = this.getPageData();
+		int STATUS = Integer.parseInt(pd.get("STATUS").toString());
+		String ID_ = pd.getString("ID_");
+		if(STATUS == 2){
+			pd.put("STATUS", 1);				//挂起前先把此流程的所有任务状态设置成激活状态
+			ruprocdefService.onoffAllTask(pd);
+			suspendProcessDefinitionById(ID_);	//挂起流程实例
+		}else{
+			pd.put("STATUS", 2);				//激活前先把此流程的所有任务状态设置成挂起状态
+			ruprocdefService.onoffAllTask(pd);
+			activateProcessDefinitionById(ID_);	//激活流程实例
+		}
+		map.put("msg", "ok");					//返回结果
+		return AppUtil.returnObject(pd, map);
+	}
+	
+	/**删除
+	 * @param out
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delete")
+	public void delete(PrintWriter out) throws Exception{
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String DEPLOYMENT_ID_ = pd.getString("DEPLOYMENT_ID_");		  //部署ID
+		deleteDeployment(DEPLOYMENT_ID_);
+		out.write("success");
+		out.close();
+	}
+	
+	 /**批量删除
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/deleteAll")
+	@ResponseBody
+	public Object deleteAll() throws Exception{
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
+		PageData pd = new PageData();		
+		Map<String,Object> map = new HashMap<String,Object>();
+		pd = this.getPageData();
+		List<PageData> pdList = new ArrayList<PageData>();
+		String DATA_IDS = pd.getString("DATA_IDS");
+		if(null != DATA_IDS && !"".equals(DATA_IDS)){
+			String ArrayDATA_IDS[] = DATA_IDS.split(",");
+			for(int i=0;i<ArrayDATA_IDS.length;i++){
+				deleteDeployment(ArrayDATA_IDS[i]);
+			}
+			pd.put("msg", "ok");
+		}else{
+			pd.put("msg", "no");
+		}
+		pdList.add(pd);
+		map.put("list", pdList);
+		return AppUtil.returnObject(pd, map);
+	}
+	
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/activiti/ruprocdef/RuprocdefController.class


+ 167 - 0
WEB-INF/classes/com/zhcs/dt/controller/activiti/ruprocdef/RuprocdefController.java

@@ -0,0 +1,167 @@
+package com.zhcs.dt.controller.activiti.ruprocdef;
+
+import java.io.PrintWriter;
+import java.net.URLDecoder;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.activiti.AcBusinessController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.activiti.hiprocdef.HiprocdefManager;
+import com.zhcs.dt.service.activiti.ruprocdef.RuprocdefManager;
+//import com.zhcs.dt.service.system.fhsms.FhsmsManager;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.DateUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+
+/** 
+ * 说明:正在运行的流程
+ * 创建人:FH Q313596790
+ * 修改时间:2018-02-10
+ */
+@Controller
+@RequestMapping(value="/ruprocdef")
+public class RuprocdefController extends AcBusinessController {
+	
+	String menuUrl = "ruprocdef/list.do"; //菜单地址(权限用)
+	@Resource(name="ruprocdefService")
+	private RuprocdefManager ruprocdefService;
+//	@Resource(name="fhsmsService")
+//	private FhsmsManager fhsmsService;
+	@Resource(name="hiprocdefService")
+	private HiprocdefManager hiprocdefService;
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"列表Ruprocdef");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");				//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		String lastStart = pd.getString("lastStart");			//开始时间
+		String lastEnd = pd.getString("lastEnd");				//结束时间
+		if(lastStart != null && !"".equals(lastStart)){
+			pd.put("lastStart", lastStart+" 00:00:00");
+		}
+		if(lastEnd != null && !"".equals(lastEnd)){
+			pd.put("lastEnd", lastEnd+" 00:00:00");
+		}
+		page.setPd(pd);
+		List<PageData>	varList = ruprocdefService.list(page);	//列出Ruprocdef列表
+		for(int i=0;i<varList.size();i++){
+			varList.get(i).put("INITATOR", getInitiator(varList.get(i).getString("PROC_INST_ID_")));//流程申请人
+		}
+		mv.setViewName("activiti/ruprocdef/ruprocdef_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**去委派页面
+	 * @param 
+	 * @return
+	 */
+	@RequestMapping(value="/goDelegate")
+	public ModelAndView goDelegate(){
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		mv.setViewName("activiti/ruprocdef/ruprocdef_delegate");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**委派
+	 * @return
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delegate")
+	public ModelAndView delegate() throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		Map<String,Object> map = new LinkedHashMap<String, Object>();
+		map.put("审批结果", " (任务由["+Jurisdiction.getUsername()+"]委派) ");	//审批结果中记录委派
+		setVariablesByTaskIdAsMap(pd.getString("ID_"),map);						//设置流程变量
+		setAssignee(pd.getString("ID_"),pd.getString("ASSIGNEE_"));
+		mv.addObject("ASSIGNEE_",pd.getString("ASSIGNEE_"));					//用于给待办人发送新任务消息
+		mv.addObject("msg","success");
+		mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**激活or挂起任务
+	 * @return
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/onoffTask")
+	@ResponseBody
+	public Object onoffTask()throws Exception{
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
+		PageData pd = new PageData();		
+		Map<String,Object> map = new HashMap<String,Object>();
+		pd = this.getPageData();
+		ruprocdefService.onoffTask(pd);
+		map.put("msg", "ok");						//返回结果
+		return AppUtil.returnObject(pd, map);
+	}
+	
+	/**作废流程
+	 * @param out
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delete")
+	public void delete(PrintWriter out) throws Exception{
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String reason = "【作废】"+Jurisdiction.getU_name()+":"+URLDecoder.decode(pd.getString("reason"), "UTF-8");	//作废原因
+		/**任务结束时发站内信通知审批结束*/
+		List<PageData>	hivarList = hiprocdefService.hivarList(pd);			//列出历史流程变量列表
+		for(int i=0;i<hivarList.size();i++){
+			if("USERNAME".equals(hivarList.get(i).getString("NAME_"))){
+				sendSms(hivarList.get(i).getString("TEXT_"));
+				break;
+			}
+		}
+		deleteProcessInstance(pd.getString("PROC_INST_ID_"),reason);		//作废流程
+		out.write("success");
+		out.close();
+	}
+	
+	/**发站内信通知审批结束
+	 * @param USERNAME
+	 * @throws Exception
+	 */
+	public void sendSms(String USERNAME) throws Exception{
+		PageData pd = new PageData();
+		pd.put("SANME_ID", this.get32UUID());			//ID
+		pd.put("SEND_TIME", DateUtil.getTime());		//发送时间
+		pd.put("FHSMS_ID", this.get32UUID());			//主键
+		pd.put("TYPE", "1");							//类型1:收信
+		pd.put("FROM_USERNAME", USERNAME);				//收信人
+		pd.put("TO_USERNAME", "系统消息");
+		pd.put("CONTENT", "您申请的任务已经被作废,请到已办任务列表查看");
+		pd.put("STATUS", "2");
+//		fhsmsService.save(pd);
+	}
+	
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/activiti/rutask/RuTaskController.class


+ 255 - 0
WEB-INF/classes/com/zhcs/dt/controller/activiti/rutask/RuTaskController.java

@@ -0,0 +1,255 @@
+package com.zhcs.dt.controller.activiti.rutask;
+
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import org.apache.shiro.session.Session;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.activiti.AcBusinessController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.activiti.hiprocdef.HiprocdefManager;
+import com.zhcs.dt.service.activiti.ruprocdef.RuprocdefManager;
+//import com.zhcs.dt.service.system.fhsms.FhsmsManager;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Const;
+import com.zhcs.dt.util.DateUtil;
+import com.zhcs.dt.util.ImageAnd64Binary;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.PathUtil;
+import com.zhcs.dt.util.Tools;
+
+/** 
+ * 说明:待办任务
+ * 创建人:FH Q313596790
+ * 修改时间:2018-02-10
+ */
+@Controller
+@RequestMapping(value="/rutask")
+public class RuTaskController extends AcBusinessController {
+	
+	String menuUrl = "rutask/list.do"; 	//菜单地址(权限用)
+	@Resource(name="ruprocdefService")
+	private RuprocdefManager ruprocdefService;
+	@Resource(name="hiprocdefService")
+	private HiprocdefManager hiprocdefService;
+//	@Resource(name="fhsmsService")
+//	private FhsmsManager fhsmsService;
+	
+	/**待办任务列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"列表待办任务");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");				//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		String lastStart = pd.getString("lastStart");			//开始时间
+		String lastEnd = pd.getString("lastEnd");				//结束时间
+		if(lastStart != null && !"".equals(lastStart)){
+			pd.put("lastStart", lastStart+" 00:00:00");
+		}
+		if(lastEnd != null && !"".equals(lastEnd)){
+			pd.put("lastEnd", lastEnd+" 00:00:00");
+		}
+		pd.put("USERNAME", Jurisdiction.getUsername()); 		//查询当前用户的任务(用户名查询)
+		pd.put("RNUMBERS", Jurisdiction.getRnumbers()); 		//查询当前用户的任务(角色编码查询)
+		page.setPd(pd);
+		List<PageData>	varList = ruprocdefService.list(page);	//列出Rutask列表
+		for(int i=0;i<varList.size();i++){
+			varList.get(i).put("INITATOR", getInitiator(varList.get(i).getString("PROC_INST_ID_")));//流程申请人
+		}
+		mv.setViewName("activiti/rutask/rutask_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**待办任务列表(只显示5条,用于后台顶部小铃铛左边显示)
+	 * @param page
+	 * @return
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/getList")
+	@ResponseBody
+	public Object getList(Page page) throws Exception{
+		PageData pd = new PageData();
+		Map<String,Object> map = new HashMap<String,Object>();
+		pd.put("USERNAME", Jurisdiction.getUsername()); 		//查询当前用户的任务(用户名查询)
+		pd.put("RNUMBERS", Jurisdiction.getRnumbers()); 		//查询当前用户的任务(角色编码查询)
+		page.setPd(pd);
+		page.setShowCount(5);
+		List<PageData>	varList = ruprocdefService.list(page);	//列出Rutask列表
+		List<PageData> pdList = new ArrayList<PageData>();
+		for(int i=0;i<varList.size();i++){
+			PageData tpd = new PageData();
+			tpd.put("NAME_", varList.get(i).getString("NAME_"));	//任务名称
+			tpd.put("PNAME_", varList.get(i).getString("PNAME_"));	//流程名称
+			pdList.add(tpd);
+		}
+		map.put("list", pdList);
+		map.put("taskCount", page.getTotalResult());
+		return AppUtil.returnObject(pd, map);
+	}
+	
+	/**去办理任务页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goHandle")
+	public ModelAndView goHandle()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		List<PageData>	varList = ruprocdefService.varList(pd);			//列出流程变量列表
+		List<PageData>	hitaskList = ruprocdefService.hiTaskList(pd);	//历史任务节点列表
+		for(int i=0;i<hitaskList.size();i++){							//根据耗时的毫秒数计算天时分秒
+			if(null != hitaskList.get(i).get("DURATION_")){
+				Long ztime = Long.parseLong(hitaskList.get(i).get("DURATION_").toString());
+				Long tian = ztime / (1000*60*60*24);
+				Long shi = (ztime % (1000*60*60*24))/(1000*60*60);
+				Long fen = (ztime % (1000*60*60*24))%(1000*60*60)/(1000*60);
+				Long miao = (ztime % (1000*60*60*24))%(1000*60*60)%(1000*60)/1000;
+				hitaskList.get(i).put("ZTIME", tian+"天"+shi+"时"+fen+"分"+miao+"秒");
+			}
+		}
+		String FILENAME = URLDecoder.decode(pd.getString("FILENAME"), "UTF-8");
+		createXmlAndPngAtNowTask(pd.getString("PROC_INST_ID_"),FILENAME);//生成当前任务节点的流程图片
+		pd.put("FILENAME", FILENAME);
+		String imgSrcPath = PathUtil.getClasspath()+Const.FILEACTIVITI+FILENAME;
+		pd.put("imgSrc", "data:image/jpeg;base64,"+ImageAnd64Binary.getImageStr(imgSrcPath)); //解决图片src中文乱码,把图片转成base64格式显示(这样就不用修改tomcat的配置了)
+		mv.setViewName("activiti/rutask/rutask_handle");
+		mv.addObject("varList", varList);
+		mv.addObject("hitaskList", hitaskList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**办理任务
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/handle")
+	public ModelAndView handle() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"办理任务");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
+		Session session = Jurisdiction.getSession();
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String taskId = pd.getString("ID_");	//任务ID
+		String sfrom = "";
+		Object ofrom = getVariablesByTaskIdAsMap(taskId,"审批结果");
+		if(null != ofrom){
+			sfrom = ofrom.toString();
+		}
+		Map<String,Object> map = new LinkedHashMap<String, Object>();
+		String OPINION = sfrom + Jurisdiction.getU_name() + ",fh,"+pd.getString("OPINION");//审批人的姓名+审批意见
+		String msg = pd.getString("msg");
+		if("yes".equals(msg)){								//批准
+			map.put("审批结果", "【批准】" + OPINION);		//审批结果
+			setVariablesByTaskIdAsMap(taskId,map);			//设置流程变量
+			setVariablesByTaskId(taskId,"RESULT","批准");
+			completeMyPersonalTask(taskId);
+		}else{												//驳回
+			map.put("审批结果", "【驳回】" + OPINION);		//审批结果
+			setVariablesByTaskIdAsMap(taskId,map);			//设置流程变量
+			setVariablesByTaskId(taskId,"RESULT","驳回");
+			completeMyPersonalTask(taskId);
+		}
+		try{
+			removeVariablesByPROC_INST_ID_(pd.getString("PROC_INST_ID_"),"RESULT");			//移除流程变量(从正在运行中)
+		}catch(Exception e){
+			/*此流程变量在历史中**/
+		}
+		try{
+			String ASSIGNEE_ = pd.getString("ASSIGNEE_");							//下一待办对象
+			if(Tools.notEmpty(ASSIGNEE_)){
+				setAssignee(session.getAttribute("TASKID").toString(),ASSIGNEE_);	//指定下一任务待办对象
+			}else{
+				Object os = session.getAttribute("YAssignee");
+				if(null != os && !"".equals(os.toString())){
+					ASSIGNEE_ = os.toString();										//没有指定就是默认流程的待办人
+				}else{
+					trySendSms(mv,pd); //没有任务监听时,默认流程结束,发送站内信给任务发起人
+				}
+			}
+			mv.addObject("ASSIGNEE_",ASSIGNEE_);	//用于给待办人发送新任务消息
+		}catch(Exception e){
+			/*手动指定下一待办人,才会触发此异常。
+			 * 任务结束不需要指定下一步办理人了,发送站内信通知任务发起人**/
+			trySendSms(mv,pd);
+		}
+		mv.addObject("msg","success");
+		mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**尝试站内信
+	 * @param mv
+	 * @param pd
+	 * @throws Exception
+	 */
+	public void trySendSms(ModelAndView mv,PageData pd)throws Exception{
+		List<PageData>	hivarList = hiprocdefService.hivarList(pd);			//列出历史流程变量列表
+		for(int i=0;i<hivarList.size();i++){
+			if("USERNAME".equals(hivarList.get(i).getString("NAME_"))){
+				sendSms(hivarList.get(i).getString("TEXT_"));
+				mv.addObject("FHSMS",hivarList.get(i).getString("TEXT_"));
+				break;
+			}
+		}
+	}
+	
+	/**发站内信通知审批结束
+	 * @param USERNAME
+	 * @throws Exception
+	 */
+	public void sendSms(String USERNAME) throws Exception{
+		PageData pd = new PageData();
+		pd.put("SANME_ID", this.get32UUID());			//ID
+		pd.put("SEND_TIME", DateUtil.getTime());		//发送时间
+		pd.put("FHSMS_ID", this.get32UUID());			//主键
+		pd.put("TYPE", "1");							//类型1:收信
+		pd.put("FROM_USERNAME", USERNAME);				//收信人
+		pd.put("TO_USERNAME", "系统消息");
+		pd.put("CONTENT", "您申请的任务已经审批完毕,请到已办任务列表查看");
+		pd.put("STATUS", "2");
+//		fhsmsService.save(pd);
+	}
+	
+	/**去审批详情页面
+	 * @param 
+	 * @return
+	 */
+	@RequestMapping(value="/details")
+	public ModelAndView goDelegate(){
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		mv.setViewName("activiti/rutask/handle_details");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/activiti/util/BpmsActivityTypeEnum.class


+ 41 - 0
WEB-INF/classes/com/zhcs/dt/controller/activiti/util/BpmsActivityTypeEnum.java

@@ -0,0 +1,41 @@
+package com.zhcs.dt.controller.activiti.util;
+
+/** 
+ * 名称:枚举类型
+ * 创建人:FH Admin fh313596790qq(青苔)
+ * 更新时间:2018年1月31日
+ * @version
+ */
+public enum BpmsActivityTypeEnum {
+
+	START_EVENT("startEvent", "开始事件"),
+	END_EVENT("endEvent", "结束事件"),
+	USER_TASK("userTask", "用户任务"),
+	EXCLUSIVE_GATEWAY("exclusiveGateway", "排他网关"),
+	PARALLEL_GATEWAY("parallelGateway", "并行网关"),
+	INCLUSIVE_GATEWAY("inclusiveGateway","包含网关");
+
+	private String type;
+	private String name;
+
+	private BpmsActivityTypeEnum(String type, String name) {
+		this.type = type;
+		this.name = name;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/activiti/util/ManagerTaskHandler.class


+ 25 - 0
WEB-INF/classes/com/zhcs/dt/controller/activiti/util/ManagerTaskHandler.java

@@ -0,0 +1,25 @@
+package com.zhcs.dt.controller.activiti.util;
+
+import org.activiti.engine.delegate.DelegateTask;
+import org.activiti.engine.delegate.TaskListener;
+import org.apache.shiro.session.Session;
+
+import com.zhcs.dt.util.Jurisdiction;
+
+/** 
+ * 名称:指定下一任务待办人
+ * 创建人:FH Admin fh313596790qq(青苔)
+ * 更新时间:2018年2月4日
+ * @version
+ */
+@SuppressWarnings("serial")
+public class ManagerTaskHandler implements TaskListener {
+
+	@Override
+	public void notify(DelegateTask delegateTask) {
+		Session session = Jurisdiction.getSession();
+		session.setAttribute("TASKID", delegateTask.getId());			//任务ID
+		session.setAttribute("YAssignee", delegateTask.getAssignee());	//默认待办人
+	}
+
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/activiti/util/UtilMisc.class


+ 26 - 0
WEB-INF/classes/com/zhcs/dt/controller/activiti/util/UtilMisc.java

@@ -0,0 +1,26 @@
+package com.zhcs.dt.controller.activiti.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/** 
+ * 类名称:UtilMisc
+ * 创建人:FH Admin fh313596790qq(青苔)
+ * 更新时间:2018年1月31日
+ * @version
+ */
+public class UtilMisc {
+	
+	public static <V, V1 extends V, V2 extends V> Map<String, V> toMap(String name1, V1 value1, String name2, V2 value2) {
+		return populateMap(new HashMap<String, V>(), name1, value1, name2, value2);
+	}
+
+	@SuppressWarnings("unchecked")
+	private static <K, V> Map<String, V> populateMap(Map<String, V> map, Object... data) {
+		for (int i = 0; i < data.length;) {
+			map.put((String) data[i++], (V) data[i++]);
+		}
+		return map;
+	}
+	
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/base/BaseController.class


+ 72 - 0
WEB-INF/classes/com/zhcs/dt/controller/base/BaseController.java

@@ -0,0 +1,72 @@
+package com.zhcs.dt.controller.base;
+
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.util.FHLogger;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.UuidUtil;
+
+/**
+ * @author FH Q313596790
+ * 修改时间:2015、12、11
+ */
+public class BaseController {
+	
+	protected FHLogger logger = FHLogger.getLogger(this.getClass());
+
+	private static final long serialVersionUID = 6357869213649815390L;
+	
+	/** new PageData对象
+	 * @return
+	 */
+	public PageData getPageData(){
+		return new PageData(this.getRequest());
+	}
+	
+	/**得到ModelAndView
+	 * @return
+	 */
+	public ModelAndView getModelAndView(){
+		return new ModelAndView();
+	}
+	
+	/**得到request对象
+	 * @return
+	 */
+	public HttpServletRequest getRequest() {
+		HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
+		return request;
+	}
+
+	/**得到32位的uuid
+	 * @return
+	 */
+	public String get32UUID(){
+		return UuidUtil.get32UUID();
+	}
+	
+	/**得到分页列表的信息
+	 * @return
+	 */
+	public Page getPage(){
+		return new Page();
+	}
+	
+	public static void logBefore(FHLogger logger, String interfaceName){
+		logger.info("");
+		logger.info("start");
+		logger.info(interfaceName);
+	}
+	
+	public static void logAfter(FHLogger logger){
+		logger.info("end");
+		logger.info("");
+	}
+	
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/fhdb/sqledit/SQLeditController.class


+ 182 - 0
WEB-INF/classes/com/zhcs/dt/controller/fhdb/sqledit/SQLeditController.java

@@ -0,0 +1,182 @@
+package com.zhcs.dt.controller.fhdb.sqledit;
+
+import java.sql.SQLException;
+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;
+
+import org.springframework.beans.propertyeditors.CustomDateEditor;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.InitBinder;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.DbFH;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.ObjectExcelView;
+import com.zhcs.dt.util.PageData;
+
+/** 
+ * 说明:SQL编辑器
+ * 创建人:FH Q313596790
+ * 创建时间:2016-03-30
+ */
+@Controller
+@RequestMapping(value="/sqledit")
+public class SQLeditController extends BaseController {
+	
+	String menuUrl = "sqledit/view.do"; //菜单地址(权限用)
+	
+	/**进入页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/view")
+	public ModelAndView view()throws Exception{
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限
+		logBefore(logger, Jurisdiction.getUsername()+"进入SQL编辑页面");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		mv.setViewName("fhdb/sqledit/sql_edit");
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	 /**执行查询语句
+	 * @param
+	 * @throws Exception
+	 */
+	@SuppressWarnings("unchecked")
+	@RequestMapping(value="/executeQuery")
+	@ResponseBody
+	public Object executeQuery(){
+		logBefore(logger, Jurisdiction.getUsername()+"执行查询语句");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限
+		Map<String,Object> map = new HashMap<String,Object>();
+		List<PageData> pdList = new ArrayList<PageData>();
+		PageData pd = new PageData();		
+		pd = this.getPageData();
+		String sql = pd.getString("sql"); //前台传过来的sql语句
+		List<String> columnList = new ArrayList<String>();				//存放字段名
+		List<List<Object>> dataList = new ArrayList<List<Object>>();	//存放数据(从数据库读出来的一条条的数据)
+		long startTime = System.currentTimeMillis(); 					//请求起始时间_毫秒
+		Object[] arrOb = null;
+		try {
+			arrOb = DbFH.executeQueryFH(sql);
+			long endTime = System.currentTimeMillis(); 						//请求结束时间_毫秒
+			pd.put("rTime", String.valueOf((endTime - startTime)/1000.000));			//存入数据库查询时间
+			if(null != arrOb){
+				columnList = (List<String>)arrOb[0];
+				dataList = (List<List<Object>>)arrOb[1];
+				pd.put("msg", "ok");
+			}else{
+				pd.put("msg", "no");
+			}
+		} catch (Exception e) {
+			pd.put("msg", "no");
+			logger.error("执行SQL报错", e);
+		}
+		pdList.add(pd);
+		map.put("columnList", columnList);	//存放字段名
+		map.put("dataList", dataList);		//存放数据(从数据库读出来的一条条的数据)
+		map.put("list", pdList);			//消息类型
+		return AppUtil.returnObject(pd, map);
+	}
+	
+	 /**执行 INSERT、UPDATE 或 DELETE
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/executeUpdate")
+	@ResponseBody
+	public Object executeUpdate(){
+		logBefore(logger, Jurisdiction.getUsername()+"执行更新语句");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
+		Map<String,Object> map = new HashMap<String,Object>();
+		List<PageData> pdList = new ArrayList<PageData>();
+		PageData pd = new PageData();		
+		pd = this.getPageData();
+		String sql = pd.getString("sql"); 									//前台传过来的sql语句
+		long startTime = System.currentTimeMillis(); 						//请求起始时间_毫秒
+		try {
+			DbFH.executeUpdateFH(sql);
+			pd.put("msg", "ok");
+		} catch (ClassNotFoundException e) {
+			pd.put("msg", "no");
+			e.printStackTrace();
+		} catch (SQLException e) {
+			pd.put("msg", "no");
+			e.printStackTrace();
+		}						
+		long endTime = System.currentTimeMillis(); 							//请求结束时间_毫秒
+		pd.put("rTime", String.valueOf((endTime - startTime)/1000.000));	//存入数据库查询时间
+		pdList.add(pd);
+		map.put("list", pdList);			//消息类型
+		return AppUtil.returnObject(pd, map);
+	}
+	
+	/**导出数据到EXCEL
+	 * @return
+	 */
+	@SuppressWarnings("unchecked")
+	@RequestMapping(value="/excel")
+	public ModelAndView exportExcel(){
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		try{
+			if(Jurisdiction.buttonJurisdiction(menuUrl, "cha")){
+				String sql = pd.getString("sql"); //前台传过来的sql语句
+				List<String> columnList = new ArrayList<String>();				//存放字段名
+				List<List<Object>> dataList = new ArrayList<List<Object>>();	//存放数据(从数据库读出来的一条条的数据)
+				Object[] arrOb = null;
+				try {
+					arrOb = DbFH.executeQueryFH(sql);
+					if(null != arrOb){
+						columnList = (List<String>)arrOb[0];
+						dataList = (List<List<Object>>)arrOb[1];
+					}else{
+						return null;
+					}
+				} catch (Exception e) {
+					logger.error("导出excelSQL报错", e);
+					return null;
+				}
+				Map<String,Object> dataMap = new HashMap<String,Object>();
+				List<String> titles = new ArrayList<String>();
+				for(int i=0;i<columnList.size();i++){
+					titles.add(columnList.get(i).toString());						//字段名当标题
+				}
+				dataMap.put("titles", titles);
+				List<PageData> varList = new ArrayList<PageData>();
+				for(int i=0;i<dataList.size();i++){
+					PageData vpd = new PageData();
+					for(int j=0;j<dataList.get(i).size();j++){
+						vpd.put("var"+(j+1), dataList.get(i).get(j).toString());	//赋值
+					}
+					varList.add(vpd);
+				}
+				dataMap.put("varList", varList);
+				ObjectExcelView erv = new ObjectExcelView();						//执行excel操作
+				mv = new ModelAndView(erv,dataMap);
+			}
+		} catch(Exception e){
+			logger.error(e.toString(), e);
+		}
+		return mv;
+	}
+	
+	@InitBinder
+	public void initBinder(WebDataBinder binder){
+		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+		binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
+	}
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/fhoa/datajur/DatajurController.class


+ 85 - 0
WEB-INF/classes/com/zhcs/dt/controller/fhoa/datajur/DatajurController.java

@@ -0,0 +1,85 @@
+package com.zhcs.dt.controller.fhoa.datajur;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import net.sf.json.JSONArray;
+
+import org.springframework.beans.propertyeditors.CustomDateEditor;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.InitBinder;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.service.fhoa.datajur.DatajurManager;
+import com.zhcs.dt.service.fhoa.department.DepartmentManager;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+
+/** 
+ * 说明:组织数据权限表
+ * 创建人:FH Q313596790
+ * 创建时间:2016-04-26
+ */
+@Controller
+@RequestMapping(value="/datajur")
+public class DatajurController extends BaseController {
+	
+	String menuUrl = "datajur/list.do"; //菜单地址(权限用)
+	@Resource(name="datajurService")
+	private DatajurManager datajurService;
+	@Resource(name="departmentService")
+	private DepartmentManager departmentService;
+	
+	/**修改
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/edit")
+	public ModelAndView edit() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"修改Datajur");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("DEPARTMENT_IDS", departmentService.getDEPARTMENT_IDS(pd.getString("DEPARTMENT_ID")));		//部门ID集
+		datajurService.edit(pd);
+		mv.addObject("msg","success");
+		mv.setViewName("save_result");
+		return mv;
+	}
+	
+	 /**去修改页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goEdit")
+	public ModelAndView goEdit()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		List<PageData> zdepartmentPdList = new ArrayList<PageData>();
+		JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartmentToSelect(Jurisdiction.getDEPARTMENT_ID(),zdepartmentPdList));
+		mv.addObject("zTreeNodes", (null == arr ?"":arr.toString()));
+		pd = datajurService.findById(pd);	//根据ID读取
+		mv.addObject("DATAJUR_ID", pd.getString("DATAJUR_ID"));
+		pd = departmentService.findById(pd);//读取部门数据(用部门名称)
+		mv.setViewName("fhoa/datajur/datajur_edit");
+		mv.addObject("msg", "edit");
+		mv.addObject("pd", pd);
+		return mv;
+	}	
+	
+	@InitBinder
+	public void initBinder(WebDataBinder binder){
+		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+		binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
+	}
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/fhoa/department/DepartmentController.class


+ 771 - 0
WEB-INF/classes/com/zhcs/dt/controller/fhoa/department/DepartmentController.java

@@ -0,0 +1,771 @@
+package com.zhcs.dt.controller.fhoa.department;
+
+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;
+
+import javax.annotation.Resource;
+
+import net.sf.json.JSONArray;
+
+import org.springframework.beans.propertyeditors.CustomDateEditor;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.InitBinder;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.fhoa.department.DepartmentManager;
+import com.zhcs.dt.service.information.annualPlan.impl.AnnualPlanService;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+
+/** 
+ * 说明:组织机构
+ * 创建人:FH Q313596790
+ * 创建时间:2015-12-16
+ */
+@Controller
+@RequestMapping(value="/department")
+public class DepartmentController extends BaseController {
+	
+	String menuUrl = "department/list.do"; //菜单地址(权限用)
+	@Resource(name="departmentService")
+	private DepartmentManager departmentService;
+	
+	
+	@Resource(name="annualPlanService")
+	private AnnualPlanService annualPlanService;
+	
+	/**保存
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/save")
+	public ModelAndView save() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"新增department");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("DEPARTMENT_ID", this.get32UUID());	//主键
+		pd.put("STATUS", "1");
+		pd.put("CREATETIME", new Date());
+		pd.put("UPDATETIME", new Date());
+		departmentService.save(pd);
+		//对应年份表新增数据
+		//pd.put("table", "oa_department_"+pd.get("YEAR").toString());
+		//departmentService.saveYear(pd);
+		mv.addObject("msg","success");
+		mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**
+	 * 删除
+	 * @param DEPARTMENT_ID
+	 * @param
+	 * @throws Exception 
+	 */
+	@RequestMapping(value="/delete")
+	@ResponseBody
+	public Object delete(@RequestParam String DEPARTMENT_ID,@RequestParam String YEAR) throws Exception{
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
+		logBefore(logger, Jurisdiction.getUsername()+"删除department");
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd.put("DEPARTMENT_ID", DEPARTMENT_ID);
+		pd.put("YEAR", YEAR);
+		String errInfo = "success";
+		if(departmentService.listSubDepartmentByParentId(DEPARTMENT_ID).size() > 0){//判断是否有子级,是:不允许删除
+			errInfo = "false";
+		}else{
+			//departmentService.delete(pd);	//执行删除
+			departmentService.updateStatus(pd);//逻辑删除
+			//物理删除动态表
+			pd.put("table", "oa_department_"+YEAR);
+			departmentService.delete(pd);
+		}
+		map.put("result", errInfo);
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**修改
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/countPlan")
+	@ResponseBody
+	public Object countPlan() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"修改department");
+		Map<String,String> map = new HashMap<String,String>();
+		String message="success";
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} 
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		//判断年度计划是否存在
+		int  count_num = annualPlanService.getPlanCountByCompanyAndYear(pd);
+		if(count_num==0){
+			message = "success";
+		}
+		else{
+			message = "exist";
+			//departmentService.edit(pd);
+		}
+		map.put("msg", message);
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**修改
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/edit")
+	@ResponseBody
+	public Object edit() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"修改department");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} 
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		departmentService.edit(pd);
+		//修改对应年份
+		if(null != pd.get("YEAR") && !pd.get("YEAR").toString().isEmpty()){
+			pd.put("table", "oa_department_"+pd.get("YEAR").toString());
+		}
+		else{
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
+	        Date date = new Date();
+	        String currentYear = sdf.format(date);
+			pd.put("table", "oa_department_"+currentYear);
+		}
+		departmentService.editYear(pd);
+		map.put("msg", "success");
+		//mv.setViewName("save_result");
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"列表department");
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");					//检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		String DEPARTMENT_ID = null == pd.get("DEPARTMENT_ID")?"":pd.get("DEPARTMENT_ID").toString();
+		if(null != pd.get("id") && !"".equals(pd.get("id").toString())){
+			DEPARTMENT_ID = pd.get("id").toString();
+		}
+		pd.put("DEPARTMENT_ID", DEPARTMENT_ID);					//上级ID
+		page.setPd(pd);
+		List<PageData>	varList = departmentService.list(page);	//列出Dictionaries列表
+		mv.addObject("pd", departmentService.findById(pd));		//传入上级所有信息
+		mv.addObject("DEPARTMENT_ID", DEPARTMENT_ID);			//上级ID
+		mv.setViewName("fhoa/department/department_list");
+		mv.addObject("varList", varList);
+		mv.addObject("QX",Jurisdiction.getHC());				//按钮权限
+		return mv;
+	}
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/getdep2")
+	@ResponseBody
+	public Object getdep2(Page page,Model model) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"列表department");
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String DEPARTMENT_ID = null == pd.get("DEPARTMENT_ID")?"":pd.get("DEPARTMENT_ID").toString();
+		if(null != pd.get("id") && !"".equals(pd.get("id").toString())){
+			DEPARTMENT_ID = pd.get("id").toString();
+		}
+		//pd.put("DEPARTMENT_ID", DEPARTMENT_ID);					//上级ID
+		//page.setPd(pd);
+		//List<PageData>	varList = departmentService.getdep2(DEPARTMENT_ID);	//列出Dictionaries列表
+//		mv.addObject("pd", departmentService.findById(pd));		//传入上级所有信息
+		mv.addObject("DEPARTMENT_ID", DEPARTMENT_ID);			//上级ID
+//		mv.setViewName("fhoa/department/department_list");
+//		mv.addObject("varList", varList);
+//		mv.addObject("QX",Jurisdiction.getHC());				//按钮权限
+//		return mv;
+		try{
+			JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartment3("0",DEPARTMENT_ID));
+			String json = arr.toString();
+			System.out.println("json1:" + json);
+			json = json.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "children").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url");
+			System.out.println("json11:" + json);
+			
+			List<String> varList = departmentService.getdep2(DEPARTMENT_ID);	
+			Map<String,Object> map = new HashMap<String,Object>();
+		    map.put("varList", varList);
+			return AppUtil.returnObject(new PageData(), map);
+		} catch(Exception e){
+			logger.error(e.toString(), e);
+		}
+		return mv;
+	}
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/saveNodes")
+	@ResponseBody
+	public Object saveNodes(Model model) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"列表department");
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String[] nodes = null;
+		if(pd.get("rnodes") != null){
+			nodes = pd.get("rnodes").toString().split(",");
+		}
+		departmentService.dealDepartments(pd.get("lnodes"), nodes);
+		try{
+//			JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartment3("0",DEPARTMENT_ID));
+//			String json = arr.toString();
+//			System.out.println("json1:" + json);
+//			json = json.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "children").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url");
+//			System.out.println("json11:" + json);
+//			
+//			List<String> varList = departmentService.getdep2(DEPARTMENT_ID);	
+			Map<String,Object> map = new HashMap<String,Object>();
+//		    map.put("varList", varList);
+			return AppUtil.returnObject(new PageData(), map);
+		} catch(Exception e){
+			logger.error(e.toString(), e);
+		}
+		return mv;
+	}
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/departmentConfig")
+	public ModelAndView departmentConfig(Model model) throws Exception{
+		ModelAndView mv = this.getModelAndView(); 
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		try{
+			JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartment3("0",""));
+			String json = arr.toString();
+			System.out.println("json1:" + json);
+			json = json.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "children").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url");
+			System.out.println("json11:" + json);
+			
+			JSONArray arr2 = JSONArray.fromObject(departmentService.listAllDepartment2("0",""));
+			if(arr2.size()>0){
+				for(int i=0;i<arr2.size();i++){
+					arr2.getJSONObject(i).put("nocheck","false");
+				}
+			}
+			String json2 = arr2.toString();
+			System.out.println("json2:" + json2);
+			json2 = json2.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "children").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url");
+			System.out.println("json22:" + json2);
+			model.addAttribute("zTreeNodes", json);
+			model.addAttribute("zTreeNodes2", json2);
+			mv.addObject("DEPARTMENT_ID", "0");
+			mv.addObject("pd", pd);	
+			mv.setViewName("fhoa/department/department_config");
+		} catch(Exception e){
+			logger.error(e.toString(), e);
+		}
+		return mv;
+	}
+	
+	/**
+	 * 显示列表ztree
+	 * @param model
+	 * @return
+	 */
+	@RequestMapping(value="/listAllDepartment")
+	public ModelAndView listAllDepartment(Model model,String DEPARTMENT_ID)throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		try{
+			JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartment("0"));
+			String json = arr.toString();
+			json = json.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "nodes").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url");
+			model.addAttribute("zTreeNodes", json);
+			mv.addObject("DEPARTMENT_ID",DEPARTMENT_ID);
+			mv.addObject("pd", pd);	
+			mv.setViewName("fhoa/department/department_ztree");
+		} catch(Exception e){
+			logger.error(e.toString(), e);
+		}
+		return mv;
+	}
+	
+	/**去新增页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goAdd")
+	public ModelAndView goAdd()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String DEPARTMENT_ID = null == pd.get("DEPARTMENT_ID")?"":pd.get("DEPARTMENT_ID").toString();
+		pd.put("DEPARTMENT_ID", DEPARTMENT_ID);					//上级ID
+		mv.addObject("pds",departmentService.findById(pd));		//传入上级所有信息
+		mv.addObject("DEPARTMENT_ID", DEPARTMENT_ID);			//传入ID,作为子级ID用
+		mv.setViewName("fhoa/department/department_add");
+		mv.addObject("msg", "save");
+		return mv;
+	}	
+	
+	 /**去修改页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goEdit")
+	public ModelAndView goEdit()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String  dnowPage = "";
+		if(null != pd.get("dnowPage")){
+			dnowPage = pd.get("dnowPage").toString();
+		}
+		String DEPARTMENT_ID = pd.getString("DEPARTMENT_ID");
+		pd = departmentService.findById(pd);	//根据ID读取
+		mv.addObject("pd", pd);					//放入视图容器
+		pd.put("DEPARTMENT_ID",pd.get("PARENT_ID").toString());			//用作上级信息
+		mv.addObject("pds",departmentService.findById(pd));				//传入上级所有信息
+		mv.addObject("DEPARTMENT_ID", pd.get("PARENT_ID").toString());	//传入上级ID,作为子ID用
+		pd.put("DEPARTMENT_ID",DEPARTMENT_ID);							//复原本ID
+		pd.put("dnowPage",dnowPage);	
+		mv.setViewName("fhoa/department/department_edit");
+		//mv.addObject("msg", "countPlan");
+		return mv;
+	}	
+
+	/**判断编码是否存在
+	 * @return
+	 */
+	@RequestMapping(value="/hasBianma")
+	@ResponseBody
+	public Object hasBianma(){
+		Map<String,String> map = new HashMap<String,String>();
+		String errInfo = "success";
+		PageData pd = new PageData();
+		try{
+			pd = this.getPageData();
+			if(departmentService.findByBianma(pd) != null){
+				errInfo = "error";
+			}
+		} catch(Exception e){
+			logger.error(e.toString(), e);
+		}
+		map.put("result", errInfo);				//返回结果
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**判断统一编码是否存在
+	 * @return
+	 */
+	@RequestMapping(value="/hasUniCode")
+	@ResponseBody
+	public Object hasUniCode(){
+		Map<String,String> map = new HashMap<String,String>();
+		String errInfo = "success";
+		PageData pd = new PageData();
+		try{
+			pd = this.getPageData();
+			if(departmentService.findByUniCode(pd) != null){
+				errInfo = "error";
+			}
+		} catch(Exception e){
+			logger.error(e.toString(), e);
+		}
+		map.put("result", errInfo);				//返回结果
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	@InitBinder
+	public void initBinder(WebDataBinder binder){
+		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+		binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
+	}
+	
+	
+	/**
+	 * 年度树显示列表ztree
+	 * @param model
+	 * @return
+	 */
+	@RequestMapping(value="/yearListAllDepartment")
+	public ModelAndView yearListAllDepartment(Model model,String DEPARTMENT_ID,Page page)throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		try{
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
+	        Date date = new Date();
+	        String currentYear = sdf.format(date);
+	        if(null != pd.get("YEAR")){
+	        	currentYear = pd.get("YEAR").toString();
+	        }
+	        pd.put("table", "oa_department_"+currentYear);
+	        pd.put("parentId", "0");
+	        pd.put("DEPARTMENT_ID", "0");
+	        List<String> yearItems = new ArrayList<String>();
+	        for(int i= -4; i < 6; i++){
+	        	Integer intyear = Integer.parseInt(currentYear);
+	        	yearItems.add(String.valueOf(intyear + i));
+	        }
+	        //TODO 查询对应表是否存在
+			int table_num = departmentService.countYearTable(pd);
+			if(table_num>0){
+				JSONArray arr = JSONArray.fromObject(departmentService.yearListAllDepartment(pd));
+				String json = arr.toString();
+				json = json.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "nodes").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url");
+				page.setPd(pd);
+				List<PageData>	varList = departmentService.yearList(page);	//列出Dictionaries列表
+				model.addAttribute("zTreeNodes", json);
+				
+				mv.addObject("varList", varList);
+			}
+			mv.addObject("currentYear", currentYear);
+			mv.addObject("yearList", yearItems);
+			mv.addObject("DEPARTMENT_ID",DEPARTMENT_ID);
+			mv.addObject("pd", pd);	
+			mv.setViewName("fhoa/department/department_set_ztree");
+			mv.addObject("QX",Jurisdiction.getHC());		
+		} catch(Exception e){
+			logger.error(e.toString(), e);
+		}
+		return mv;
+	}
+	
+	/**各年度列表数据
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/yearList")
+	public ModelAndView yearList(Model model,Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"列表department");
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");					//检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		String DEPARTMENT_ID = null == pd.get("DEPARTMENT_ID")?"":pd.get("DEPARTMENT_ID").toString();
+		if(null != pd.get("id") && !"".equals(pd.get("id").toString())){
+			DEPARTMENT_ID = pd.get("id").toString();
+		}
+		pd.put("DEPARTMENT_ID", DEPARTMENT_ID);					//上级ID
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
+        Date date = new Date();
+        String currentYear = sdf.format(date);
+        if(null != pd.get("YEAR")){
+        	currentYear = pd.get("YEAR").toString();
+        }
+		pd.put("table", "oa_department_"+currentYear);
+		page.setPd(pd);
+        mv.addObject("currentYear", currentYear);
+        List<String> yearItems = new ArrayList<String>();
+        for(int i= -4; i < 6; i++){
+        	Integer intyear = Integer.parseInt(currentYear);
+        	yearItems.add(String.valueOf(intyear + i));
+        }
+        mv.addObject("yearList", yearItems);
+		mv.addObject("currentYear", currentYear);
+		List<PageData>	varList = departmentService.yearList(page);	//列出Dictionaries列表
+		mv.addObject("pd", departmentService.yearFindById(pd));		//传入上级所有信息
+		mv.addObject("DEPARTMENT_ID", DEPARTMENT_ID);			//上级ID
+		mv.addObject("varList", varList);
+		if(null != pd.get("DEPARTMENT_ID") && !pd.get("DEPARTMENT_ID").toString().equals("0")){
+			pd.remove("DEPARTMENT_ID");
+		}
+		pd.put("parentId", "0");
+		JSONArray arr = JSONArray.fromObject(departmentService.yearListAllDepartment(pd));
+		String json = arr.toString();
+		json = json.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "nodes").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url");
+		model.addAttribute("zTreeNodes", json);
+		mv.setViewName("fhoa/department/department_set_ztree");
+		mv.addObject("QX",Jurisdiction.getHC());				//按钮权限
+		return mv;
+	}
+	
+	
+	/**去组织结构年度设置页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/gset")
+	public ModelAndView gset(Model model)throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("parentId", "0");
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
+        Date date = new Date();
+        String currentYear = sdf.format(date);
+        String selectYear ="";
+        if(null != pd.get("YEAR")){
+        	currentYear = pd.get("YEAR").toString();
+        }
+        Integer selYear = Integer.parseInt(currentYear);
+    	selectYear = String.valueOf(selYear);
+		pd.put("table", "oa_department");
+		pd.put("currentYear", currentYear);
+		 //基础数据
+		JSONArray arr = JSONArray.fromObject(departmentService.yearListAllDepartment(pd));
+		
+        List<String> yearItems = new ArrayList<String>();
+        for(int i= -4; i < 6; i++){
+        	Integer intyear = Integer.parseInt(currentYear);
+        	yearItems.add(String.valueOf(intyear + i));
+        }
+        //判断选中
+		if(arr.size()>0 ){
+			//年份数据
+			pd.put("table", "oa_department_"+currentYear);
+			//查询对应表是否存在
+			int table_num = departmentService.countYearTable(pd);
+			if(table_num==0){
+				departmentService.createYearTable(pd);
+			}
+			JSONArray yearArr = JSONArray.fromObject(departmentService.yearListAllDepartment(pd));
+			for(int i=0;i<arr.size();i++){
+				for(int k=0;k<yearArr.size();k++){
+					if(arr.getJSONObject(i).get("NAME").toString().equals(yearArr.getJSONObject(k).get("NAME").toString())){
+						arr.getJSONObject(i).put("checked","true");
+						//对应的子节点选中
+						if(null != yearArr.getJSONObject(k).get("subDepartment")
+								&& "" != yearArr.getJSONObject(k).get("subDepartment").toString()){
+							JSONArray subArray = JSONArray.fromObject(arr.getJSONObject(i).get("subDepartment"));
+							JSONArray subCheckArray = JSONArray.fromObject(yearArr.getJSONObject(k).get("subDepartment"));
+							if(subArray.size()>0 && subCheckArray.size()>0){
+								for(int m=0;m<subArray.size();m++){
+									for(int n=0;n<subCheckArray.size();n++){
+										if(subArray.getJSONObject(m).get("NAME").toString().equals(subCheckArray.getJSONObject(n).get("NAME").toString())){
+											subArray.getJSONObject(m).put("checked","true");
+										}
+									}
+								}
+							}
+							arr.getJSONObject(i).put("subDepartment",subArray);
+						}
+					}
+				}
+			}
+		}
+		String json = arr.toString();
+		json = json.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "children").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url");
+		model.addAttribute("zTreeNodes", json);//传入ID,作为子级ID用
+		mv.addObject("DEPARTMENT_ID", "0");
+		mv.addObject("currentYear", selectYear);
+		mv.addObject("yearList", yearItems);
+		mv.addObject("pd", pd);	
+		mv.setViewName("fhoa/department/department_set_year");
+		mv.addObject("msg", "save");
+		return mv;
+	}	
+	
+	/**保存选中树结构
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/saveYearNodes")
+	@ResponseBody
+	public Object saveYearNodes(Model model) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"列表department");
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		Map<String,Object> map = new HashMap<String,Object>();
+		try{
+			if(pd.get("rnodes") != null){
+				String selectYear =pd.get("YEAR").toString();
+				//页面选中节点
+				JSONArray selectedNodes = JSONArray.fromObject(pd.get("rnodes").toString());
+				//数据库已存在节点
+				pd.put("table", "oa_department_"+pd.get("YEAR").toString());
+				List<PageData> yearList =  departmentService.yearQuery(pd);
+				//选中数值与原有对比
+				if(null !=yearList && yearList.size()>0 && null != selectedNodes 
+						&& (yearList.size()>selectedNodes.size())){
+					List<String> selectIdList = new ArrayList<>();
+					List<String> yearIdList = new ArrayList<>();
+					for(int a=0;a<selectedNodes.size();a++){
+						selectIdList.add(selectedNodes.getJSONObject(a).get("id").toString());
+					}
+					for(PageData ypd:yearList){
+						yearIdList.add(ypd.get("DEPARTMENT_ID").toString());
+					}
+				    List<String> list = getDiffrent(yearIdList,selectIdList);
+				    pd.put("table", "oa_department_"+selectYear);
+				    for(String id:list){
+				    	pd.put("DEPARTMENT_ID",id);
+						departmentService.yearDelete(pd);
+				    }
+				}
+				if(null != selectedNodes && selectedNodes.size()>0){
+					for(int m=0;m<selectedNodes.size();m++){
+						if(null !=  selectedNodes.getJSONObject(m)){
+							PageData selectedpd = new PageData();
+							selectedpd.put("NAME",selectedNodes.getJSONObject(m).get("name"));
+							selectedpd.put("NAME_EN",selectedNodes.getJSONObject(m).get("name_EN"));
+							selectedpd.put("BIANMA",selectedNodes.getJSONObject(m).get("BIANMA"));	
+							selectedpd.put("PARENT_ID",selectedNodes.getJSONObject(m).get("pId"));
+							selectedpd.put("HEADMAN",selectedNodes.getJSONObject(m).get("HEADMAN"));	
+							selectedpd.put("TEL",selectedNodes.getJSONObject(m).get("TEL"));
+							selectedpd.put("FUNCTIONS",selectedNodes.getJSONObject(m).get("FUNCTIONS"));
+							selectedpd.put("ADDRESS",selectedNodes.getJSONObject(m).get("ADDRESS"));
+							selectedpd.put("BZ",selectedNodes.getJSONObject(m).get("BZ"));
+							selectedpd.put("DEPARTMENT_ID",selectedNodes.getJSONObject(m).get("id"));	//主键
+							selectedpd.put("YEAR",selectYear);
+							selectedpd.put("STATUS",selectedNodes.getJSONObject(m).get("STATUS"));	
+							selectedpd.put("UNI_CODE",selectedNodes.getJSONObject(m).get("UNI_CODE"));	
+							selectedpd.put("SHOW_NUM",selectedNodes.getJSONObject(m).get("SHOW_NUM"));	
+							selectedpd.put("CREATETIME", new Date());
+							selectedpd.put("UPDATETIME", new Date());
+							selectedpd.put("table", "oa_department_"+pd.get("YEAR").toString());
+							departmentService.saveYear(selectedpd);
+						}
+					}
+				}
+			}
+			map.put("msg", "success");
+		} catch(Exception e){
+			map.put("msg", "error");
+			logger.error(e.toString(), e);
+		}
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	
+	@RequestMapping(value="/refreshZtree", produces = "application/json; charset=utf-8")
+	@ResponseBody
+	public String refreshZtree(Model model)throws Exception{
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("parentId", "0");
+        String currentYear = "";
+        if(null != pd.get("YEAR")){
+        	currentYear = pd.get("YEAR").toString();
+        }
+		pd.put("table", "oa_department");
+		pd.put("currentYear", currentYear);
+		 //基础数据
+		JSONArray arr = JSONArray.fromObject(departmentService.yearListAllDepartment(pd));
+		
+        List<String> yearItems = new ArrayList<String>();
+        for(int i= 0; i < 5; i++){
+        	Integer intyear = Integer.parseInt(currentYear);
+        	yearItems.add(String.valueOf(intyear + i));
+        }
+        //判断选中
+		if(arr.size()>0 ){
+			//年份数据
+			pd.put("table", "oa_department_"+currentYear);
+			//查询对应表是否存在
+			int table_num = departmentService.countYearTable(pd);
+			if(table_num==0){
+				departmentService.createYearTable(pd);
+			}
+			JSONArray yearArr = JSONArray.fromObject(departmentService.yearListAllDepartment(pd));
+			for(int i=0;i<arr.size();i++){
+				for(int k=0;k<yearArr.size();k++){
+					if(arr.getJSONObject(i).get("NAME").toString().equals(yearArr.getJSONObject(k).get("NAME").toString())){
+						arr.getJSONObject(i).put("checked","true");
+						//对应的子节点选中
+						if(null != yearArr.getJSONObject(k).get("subDepartment")
+								&& "" != yearArr.getJSONObject(k).get("subDepartment").toString()){
+							JSONArray subArray = JSONArray.fromObject(arr.getJSONObject(i).get("subDepartment"));
+							JSONArray subCheckArray = JSONArray.fromObject(yearArr.getJSONObject(k).get("subDepartment"));
+							if(subArray.size()>0 && subCheckArray.size()>0){
+								for(int m=0;m<subArray.size();m++){
+									for(int n=0;n<subCheckArray.size();n++){
+										if(subArray.getJSONObject(m).get("NAME").toString().equals(subCheckArray.getJSONObject(n).get("NAME").toString())){
+											subArray.getJSONObject(m).put("checked","true");
+										}
+									}
+								}
+							}
+							arr.getJSONObject(i).put("subDepartment",subArray);
+						}
+					}
+				}
+			}
+		}
+		String json = arr.toString();
+		json = json.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "children").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url");
+		return json;
+	}
+	
+	
+	/**
+	 * 当前年份是否配置
+	 * @param model
+	 * @return
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/countYearTable")
+	@ResponseBody
+	public String countYearTable(Model model)throws Exception{
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("table", "oa_department_"+pd.get("YEAR"));
+		int table_num = departmentService.countYearTable(pd);
+		String message="";
+		//是否存在对年份表
+		if(table_num ==0 ){
+			message = "haveno";
+		}
+		else{
+			//是否存在公司对应年份数据
+			PageData companypd = (PageData)annualPlanService.getCompanyID(pd);
+			if(null != companypd){
+				message = "success";
+			}
+			else{
+				message = "haveno";
+			}
+		}
+		return message;
+	}
+	
+	/**
+	 * 两个数组中的不同元素。 其中 list1比list2长
+	 * @param list1
+	 * @param list2
+	 * @return
+	 */
+	 private static List<String> getDiffrent(List<String> list1, List<String> list2) {
+		 List<String> diff = new ArrayList<String>();
+	        for(String str:list1)
+	        {
+	            if(!list2.contains(str))
+	            {
+	                diff.add(str);
+	            }
+	        }
+	        return diff;
+	    }
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/fhoa/fhfile/FhfileController.class


+ 265 - 0
WEB-INF/classes/com/zhcs/dt/controller/fhoa/fhfile/FhfileController.java

@@ -0,0 +1,265 @@
+package com.zhcs.dt.controller.fhoa.fhfile;
+
+import java.io.PrintWriter;
+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;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.propertyeditors.CustomDateEditor;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.InitBinder;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.fhoa.fhfile.FhfileManager;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Const;
+import com.zhcs.dt.util.DelAllFile;
+import com.zhcs.dt.util.FileDownload;
+import com.zhcs.dt.util.FileUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.PathUtil;
+import com.zhcs.dt.util.Tools;
+
+/** 
+ * 说明:文件管理
+ * 创建人:FH Q313596790
+ * 创建时间:2016-05-27
+ */
+@Controller
+@RequestMapping(value="/fhfile")
+public class FhfileController extends BaseController {
+	
+	String menuUrl = "fhfile/list.do"; //菜单地址(权限用)
+	@Resource(name="fhfileService")
+	private FhfileManager fhfileService;
+	
+	/**保存
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/save")
+	public ModelAndView save() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"新增Fhfile");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("FHFILE_ID", this.get32UUID());						//主键
+		pd.put("CTIME", Tools.date2Str(new Date()));				//上传时间
+		pd.put("USERNAME", Jurisdiction.getUsername());				//上传者
+		pd.put("DEPARTMENT_ID", Jurisdiction.getDEPARTMENT_ID());	//部门ID
+		pd.put("FILESIZE", FileUtil.getFilesize(PathUtil.getClasspath() + Const.FILEPATHFILEOA + pd.getString("FILEPATH")));	//文件大小
+		fhfileService.save(pd);
+		mv.addObject("msg","success");
+		mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**删除
+	 * @param out
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delete")
+	public void delete(PrintWriter out) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"删除Fhfile");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd = fhfileService.findById(pd);
+		fhfileService.delete(pd);
+		DelAllFile.delFolder(PathUtil.getClasspath()+ Const.FILEPATHFILEOA + pd.getString("FILEPATH")); //删除文件
+		out.write("success");
+		out.close();
+	}
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"列表Fhfile");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");				//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		String item = Jurisdiction.getDEPARTMENT_IDS();
+		if("0".equals(item) || "无权".equals(item)){
+			pd.put("item","");		//根据部门ID过滤
+		}else{
+			pd.put("item", item.replaceFirst("\\(", "\\('"+Jurisdiction.getDEPARTMENT_ID()+"',"));
+		}
+		page.setPd(pd);
+		List<PageData>	varList = fhfileService.list(page);		//列出Fhfile列表
+		List<PageData>	nvarList = new ArrayList<PageData>();
+		for(int i=0;i<varList.size();i++){
+			PageData npd = new PageData();
+			String FILEPATH = varList.get(i).getString("FILEPATH");
+			String Extension_name =  FILEPATH.substring(20, FILEPATH.length());//文件拓展名
+			String fileType = "file";
+			int zindex1 = "java,php,jsp,html,css,txt,asp".indexOf(Extension_name);
+			if(zindex1 != -1){
+				fileType = "wenben";	//文本类型
+			}
+			int zindex2 = "jpg,gif,bmp,png".indexOf(Extension_name);
+			if(zindex2 != -1){
+				fileType = "tupian";	//图片文件类型
+			}
+			int zindex3 = "rar,zip,rar5".indexOf(Extension_name);
+			if(zindex3 != -1){
+				fileType = "yasuo";		//压缩文件类型
+			}
+			int zindex4 = "doc,docx".indexOf(Extension_name);
+			if(zindex4 != -1){
+				fileType = "doc";		//doc文件类型
+			}
+			int zindex5 = "xls,xlsx".indexOf(Extension_name);
+			if(zindex5 != -1){
+				fileType = "xls";		//xls文件类型
+			}
+			int zindex6 = "ppt,pptx".indexOf(Extension_name);
+			if(zindex6 != -1){
+				fileType = "ppt";		//ppt文件类型
+			}
+			int zindex7 = "pdf".indexOf(Extension_name);
+			if(zindex7 != -1){
+				fileType = "pdf";		//ppt文件类型
+			}
+			int zindex8 = "fly,f4v,mp4,m3u8,webm,ogg,avi".indexOf(Extension_name);
+			if(zindex8 != -1){
+				fileType = "video";		//视频文件类型
+			}
+			npd.put("fileType", fileType);								 	//用于文件图标
+			npd.put("FHFILE_ID", varList.get(i).getString("FHFILE_ID"));	//唯一ID	
+			npd.put("NAME", varList.get(i).getString("NAME"));				//文件名
+			npd.put("FILEPATH", FILEPATH);									//文件名+扩展名
+			npd.put("CTIME", varList.get(i).getString("CTIME"));			//上传时间
+			npd.put("USERNAME", varList.get(i).getString("USERNAME"));		//用户名
+			npd.put("DEPARTMENT_ID", varList.get(i).getString("DEPARTMENT_ID"));//机构级别
+			npd.put("FILESIZE", varList.get(i).getString("FILESIZE"));		//文件大小
+			npd.put("BZ", varList.get(i).getString("BZ"));					//备注
+			nvarList.add(npd);
+		}
+		mv.setViewName("fhoa/fhfile/fhfile_list");
+		mv.addObject("varList", nvarList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());				//按钮权限
+		return mv;
+	}
+	
+	/**去新增页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goAdd")
+	public ModelAndView goAdd()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		mv.setViewName("fhoa/fhfile/fhfile_edit");
+		mv.addObject("msg", "save");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**去预览pdf文件页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goViewPdf")
+	public ModelAndView goViewPdf()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd = fhfileService.findById(pd);
+		mv.setViewName("fhoa/fhfile/fhfile_view_pdf");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**去预览txt,java,php,等文本文件页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goViewTxt")
+	public ModelAndView goViewTxt()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String encoding = pd.getString("encoding");
+		pd = fhfileService.findById(pd);
+		String code = Tools.readTxtFileAll(Const.FILEPATHFILEOA+pd.getString("FILEPATH"),encoding);
+		pd.put("code", code);
+		mv.setViewName("fhoa/fhfile/fhfile_view_txt");
+		mv.addObject("pd", pd);
+		return mv;
+	}	
+	
+	 /**批量删除
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/deleteAll")
+	@ResponseBody
+	public Object deleteAll() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"批量删除Fhfile");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
+		PageData pd = new PageData();		
+		Map<String,Object> map = new HashMap<String,Object>();
+		pd = this.getPageData();
+		List<PageData> pdList = new ArrayList<PageData>();
+		String DATA_IDS = pd.getString("DATA_IDS");
+		if(null != DATA_IDS && !"".equals(DATA_IDS)){
+			String ArrayDATA_IDS[] = DATA_IDS.split(",");
+			PageData fpd = new PageData();
+			for(int i=0;i<ArrayDATA_IDS.length;i++){
+				fpd.put("FHFILE_ID", ArrayDATA_IDS[i]);
+				fpd = fhfileService.findById(fpd);
+				DelAllFile.delFolder(PathUtil.getClasspath()+ Const.FILEPATHFILEOA + fpd.getString("FILEPATH")); //删除物理文件
+			}
+			fhfileService.deleteAll(ArrayDATA_IDS);		//删除数据库记录
+			pd.put("msg", "ok");
+		}else{
+			pd.put("msg", "no");
+		}
+		pdList.add(pd);
+		map.put("list", pdList);
+		return AppUtil.returnObject(pd, map);
+	}
+	
+	/**下载
+	 * @param response
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/download")
+	public void download(HttpServletResponse response)throws Exception{
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd = fhfileService.findById(pd);
+		String fileName = pd.getString("FILEPATH");
+		FileDownload.fileDownload(response, PathUtil.getClasspath() + Const.FILEPATHFILEOA + fileName, pd.getString("NAME")+fileName.substring(19, fileName.length()));
+	}
+	
+	@InitBinder
+	public void initBinder(WebDataBinder binder){
+		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+		binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
+	}
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/fhoa/myleave/MyleaveController.class


+ 238 - 0
WEB-INF/classes/com/zhcs/dt/controller/fhoa/myleave/MyleaveController.java

@@ -0,0 +1,238 @@
+package com.zhcs.dt.controller.fhoa.myleave;
+
+import java.io.PrintWriter;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import org.springframework.beans.propertyeditors.CustomDateEditor;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.InitBinder;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.activiti.AcStartController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.fhoa.myleave.MyleaveManager;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.ObjectExcelView;
+import com.zhcs.dt.util.PageData;
+
+/** 
+ * 说明:请假申请
+ * 创建人:FH Q313596790
+ * 修改时间:2018-02-09
+ */
+@Controller
+@RequestMapping(value="/myleave")
+public class MyleaveController extends AcStartController {
+	
+	String menuUrl = "myleave/list.do"; //菜单地址(权限用)
+	@Resource(name="myleaveService")
+	private MyleaveManager myleaveService;
+	
+	/**保存请假单
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/save")
+	public ModelAndView save(){
+		logBefore(logger, Jurisdiction.getUsername()+"新增Myleave");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("MYLEAVE_ID", this.get32UUID());					//主键
+		pd.put("USERNAME", Jurisdiction.getUsername());			//用户名
+		try {
+			/** 工作流的操作 **/
+			Map<String,Object> map = new LinkedHashMap<String, Object>();
+			map.put("请假人员", Jurisdiction.getU_name());			//当前用户的姓名
+			map.put("开始时间", pd.getString("STARTTIME"));
+			map.put("结束时间", pd.getString("ENDTIME"));
+			map.put("请假时长", pd.getString("WHENLONG"));
+			map.put("请假类型", pd.getString("TYPE"));
+			map.put("请假事由", pd.getString("REASON"));
+			map.put("USERNAME", Jurisdiction.getUsername());		//指派代理人为当前用户
+			startProcessInstanceByKeyHasVariables("KEY_leave",map);	//启动流程实例(请假单流程)通过KEY
+			myleaveService.save(pd);								//记录存入数据库
+			mv.addObject("ASSIGNEE_",Jurisdiction.getUsername());	//用于给待办人发送新任务消息
+			mv.addObject("msg","success");
+		} catch (Exception e) {
+			mv.addObject("errer","errer");
+			mv.addObject("msgContent","请联系管理员部署相应业务流程!");
+		}								
+		mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**删除
+	 * @param out
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delete")
+	public void delete(PrintWriter out) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"删除Myleave");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		myleaveService.delete(pd);
+		out.write("success");
+		out.close();
+	}
+	
+	/**修改
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/edit")
+	public ModelAndView edit() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"修改Myleave");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		myleaveService.edit(pd);
+		mv.addObject("msg","success");
+		mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"列表Myleave");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");				//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		pd.put("USERNAME", "admin".equals(Jurisdiction.getUsername())?"":Jurisdiction.getUsername()); //除admin用户外,只能查看自己的数据
+		page.setPd(pd);
+		List<PageData>	varList = myleaveService.list(page);	//列出Myleave列表
+		mv.setViewName("fhoa/myleave/myleave_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());				//按钮权限
+		return mv;
+	}
+	
+	/**去新增页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goAdd")
+	public ModelAndView goAdd()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		mv.setViewName("fhoa/myleave/myleave_edit");
+		mv.addObject("msg", "save");
+		mv.addObject("pd", pd);
+		return mv;
+	}	
+	
+	 /**去修改页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goEdit")
+	public ModelAndView goEdit()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd = myleaveService.findById(pd);	//根据ID读取
+		mv.setViewName("fhoa/myleave/myleave_edit");
+		mv.addObject("msg", "edit");
+		mv.addObject("pd", pd);
+		return mv;
+	}	
+	
+	 /**批量删除
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/deleteAll")
+	@ResponseBody
+	public Object deleteAll() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"批量删除Myleave");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
+		PageData pd = new PageData();		
+		Map<String,Object> map = new HashMap<String,Object>();
+		pd = this.getPageData();
+		List<PageData> pdList = new ArrayList<PageData>();
+		String DATA_IDS = pd.getString("DATA_IDS");
+		if(null != DATA_IDS && !"".equals(DATA_IDS)){
+			String ArrayDATA_IDS[] = DATA_IDS.split(",");
+			myleaveService.deleteAll(ArrayDATA_IDS);
+			pd.put("msg", "ok");
+		}else{
+			pd.put("msg", "no");
+		}
+		pdList.add(pd);
+		map.put("list", pdList);
+		return AppUtil.returnObject(pd, map);
+	}
+	
+	 /**导出到excel
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/excel")
+	public ModelAndView exportExcel() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"导出Myleave到excel");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
+		ModelAndView mv = new ModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		Map<String,Object> dataMap = new HashMap<String,Object>();
+		List<String> titles = new ArrayList<String>();
+		titles.add("用户名");	//1
+		titles.add("类型");	//2
+		titles.add("开始时间");	//3
+		titles.add("结束时间");	//4
+		titles.add("时长");	//5
+		titles.add("事由");	//6
+		titles.add("审批意见");	//7
+		dataMap.put("titles", titles);
+		List<PageData> varOList = myleaveService.listAll(pd);
+		List<PageData> varList = new ArrayList<PageData>();
+		for(int i=0;i<varOList.size();i++){
+			PageData vpd = new PageData();
+			vpd.put("var1", varOList.get(i).getString("USERNAME"));	    //1
+			vpd.put("var2", varOList.get(i).getString("TYPE"));	    //2
+			vpd.put("var3", varOList.get(i).getString("STARTTIME"));	    //3
+			vpd.put("var4", varOList.get(i).getString("ENDTIME"));	    //4
+			vpd.put("var5", varOList.get(i).getString("WHENLONG"));	    //5
+			vpd.put("var6", varOList.get(i).getString("REASON"));	    //6
+			vpd.put("var7", varOList.get(i).getString("OPINION"));	    //7
+			varList.add(vpd);
+		}
+		dataMap.put("varList", varList);
+		ObjectExcelView erv = new ObjectExcelView();
+		mv = new ModelAndView(erv,dataMap);
+		return mv;
+	}
+	
+	@InitBinder
+	public void initBinder(WebDataBinder binder){
+		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+		binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
+	}
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/fhoa/staff/StaffController.class


+ 329 - 0
WEB-INF/classes/com/zhcs/dt/controller/fhoa/staff/StaffController.java

@@ -0,0 +1,329 @@
+package com.zhcs.dt.controller.fhoa.staff;
+
+import java.io.PrintWriter;
+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;
+
+import javax.annotation.Resource;
+
+import net.sf.json.JSONArray;
+
+import org.springframework.beans.propertyeditors.CustomDateEditor;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.InitBinder;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.fhoa.datajur.DatajurManager;
+import com.zhcs.dt.service.fhoa.department.DepartmentManager;
+import com.zhcs.dt.service.fhoa.staff.StaffManager;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.ObjectExcelView;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.Tools;
+
+/** 
+ * 说明:员工管理
+ * 创建人:FH Q313596790
+ * 创建时间:2016-04-23
+ */
+@Controller
+@RequestMapping(value="/staff")
+public class StaffController extends BaseController {
+	
+	String menuUrl = "staff/list.do"; //菜单地址(权限用)
+	@Resource(name="staffService")
+	private StaffManager staffService;
+	@Resource(name="departmentService")
+	private DepartmentManager departmentService;
+	@Resource(name="datajurService")
+	private DatajurManager datajurService;
+	
+	/**保存
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/save")
+	public ModelAndView save() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"新增Staff");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("STAFF_ID", this.get32UUID());	//主键
+		pd.put("USER_ID", "");					//绑定账号ID
+		staffService.save(pd);					//保存员工信息到员工表
+		String DEPARTMENT_IDS = departmentService.getDEPARTMENT_IDS(pd.getString("DEPARTMENT_ID"));//获取某个部门所有下级部门ID
+		pd.put("DATAJUR_ID", pd.getString("STAFF_ID")); //主键
+		pd.put("DEPARTMENT_IDS", DEPARTMENT_IDS);		//部门ID集
+		datajurService.save(pd);						//把此员工默认部门及以下部门ID保存到组织数据权限表
+		mv.addObject("msg","success");
+		mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**删除
+	 * @param out
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delete")
+	public void delete(PrintWriter out) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"删除Staff");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		staffService.delete(pd);
+		out.write("success");
+		out.close();
+	}
+	
+	/**修改
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/edit")
+	public ModelAndView edit() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"修改Staff");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		staffService.edit(pd);
+		String DEPARTMENT_IDS = departmentService.getDEPARTMENT_IDS(pd.getString("DEPARTMENT_ID"));//获取某个部门所有下级部门ID
+		pd.put("DATAJUR_ID", pd.getString("STAFF_ID")); //主键
+		pd.put("DEPARTMENT_IDS", DEPARTMENT_IDS);		//部门ID集
+		datajurService.edit(pd);						//把此员工默认部门及以下部门ID保存到组织数据权限表
+		mv.addObject("msg","success");
+		mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**列表(检索条件中的部门,只列出此操作用户最高部门权限以下所有部门的员工)
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"列表Staff");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");							//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		String DEPARTMENT_ID = pd.getString("DEPARTMENT_ID");
+		pd.put("DEPARTMENT_ID", null == DEPARTMENT_ID?Jurisdiction.getDEPARTMENT_ID():DEPARTMENT_ID);	//只有检索条件穿过值时,才不为null,否则读取缓存
+		pd.put("item", (null == pd.getString("DEPARTMENT_ID")?Jurisdiction.getDEPARTMENT_IDS():departmentService.getDEPARTMENT_IDS(pd.getString("DEPARTMENT_ID"))));	//部门检索条件,列出此部门下级所属部门的员工
+	
+		/* 比如员工 张三 所有部门权限的部门为 A , A 的下级有  C , D ,F ,那么当部门检索条件值为A时,只列出A以下部门的员工(自己不能修改自己的信息,只能上级部门修改),不列出部门为A的员工,当部门检索条件值为C时,可以列出C及C以下员工 */
+		if(!(null == DEPARTMENT_ID || DEPARTMENT_ID.equals(Jurisdiction.getDEPARTMENT_ID()))){
+			pd.put("item", pd.getString("item").replaceFirst("\\(", "\\('"+DEPARTMENT_ID+"',"));
+		}
+		
+		page.setPd(pd);
+		List<PageData>	varList = staffService.list(page);					//列出Staff列表
+		//列表页面树形下拉框用(保持下拉树里面的数据不变)
+		String ZDEPARTMENT_ID = pd.getString("ZDEPARTMENT_ID");
+		ZDEPARTMENT_ID = Tools.notEmpty(ZDEPARTMENT_ID)?ZDEPARTMENT_ID:Jurisdiction.getDEPARTMENT_ID();
+		pd.put("ZDEPARTMENT_ID", ZDEPARTMENT_ID);
+		List<PageData> zdepartmentPdList = new ArrayList<PageData>();
+		JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartmentToSelect(ZDEPARTMENT_ID,zdepartmentPdList));
+		mv.addObject("zTreeNodes", arr.toString());
+		PageData dpd = departmentService.findById(pd);
+		if(null != dpd){
+			ZDEPARTMENT_ID = dpd.getString("NAME");
+		}
+		mv.addObject("depname", ZDEPARTMENT_ID);
+		mv.setViewName("fhoa/staff/staff_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**去新增页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goAdd")
+	public ModelAndView goAdd()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		List<PageData> zdepartmentPdList = new ArrayList<PageData>();
+		JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartmentToSelect(Jurisdiction.getDEPARTMENT_ID(),zdepartmentPdList));
+		mv.addObject("zTreeNodes", (null == arr ?"":arr.toString()));
+		mv.addObject("msg", "save");
+		mv.addObject("pd", pd);
+		mv.setViewName("fhoa/staff/staff_edit");
+		return mv;
+	}	
+	
+	 /**去修改页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goEdit")
+	public ModelAndView goEdit()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		List<PageData> zdepartmentPdList = new ArrayList<PageData>();
+		JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartmentToSelect(Jurisdiction.getDEPARTMENT_ID(),zdepartmentPdList));
+		mv.addObject("zTreeNodes", (null == arr ?"":arr.toString()));
+		pd = staffService.findById(pd);	//根据ID读取
+		mv.setViewName("fhoa/staff/staff_edit");
+		mv.addObject("depname", departmentService.findById(pd).getString("NAME"));
+		mv.addObject("msg", "edit");
+		mv.addObject("pd", pd);
+		return mv;
+	}	
+	
+	 /**批量删除
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/deleteAll")
+	@ResponseBody
+	public Object deleteAll() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"批量删除Staff");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
+		PageData pd = new PageData();		
+		Map<String,Object> map = new HashMap<String,Object>();
+		pd = this.getPageData();
+		List<PageData> pdList = new ArrayList<PageData>();
+		String DATA_IDS = pd.getString("DATA_IDS");
+		if(null != DATA_IDS && !"".equals(DATA_IDS)){
+			String ArrayDATA_IDS[] = DATA_IDS.split(",");
+			staffService.deleteAll(ArrayDATA_IDS);
+			pd.put("msg", "ok");
+		}else{
+			pd.put("msg", "no");
+		}
+		pdList.add(pd);
+		map.put("list", pdList);
+		return AppUtil.returnObject(pd, map);
+	}
+	
+	 /**绑定用户
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/userBinding")
+	@ResponseBody
+	public Object userBinding() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"绑定用户");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
+		PageData pd = new PageData();		
+		Map<String,Object> map = new HashMap<String,Object>();
+		pd = this.getPageData();
+		staffService.userBinding(pd);
+		return AppUtil.returnObject(pd, map);
+	}
+	
+	 /**导出到excel
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/excel")
+	public ModelAndView exportExcel() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"导出Staff到excel");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
+		ModelAndView mv = new ModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		Map<String,Object> dataMap = new HashMap<String,Object>();
+		List<String> titles = new ArrayList<String>();
+		titles.add("姓名");	//1
+		titles.add("英文");	//2
+		titles.add("编码");	//3
+		titles.add("部门");	//4
+		titles.add("职责");	//5
+		titles.add("电话");	//6
+		titles.add("邮箱");	//7
+		titles.add("性别");	//8
+		titles.add("出生日期");	//9
+		titles.add("民族");	//10
+		titles.add("岗位类别");	//11
+		titles.add("参加工作时间");	//12
+		titles.add("籍贯");	//13
+		titles.add("政治面貌");	//14
+		titles.add("入团时间");	//15
+		titles.add("身份证号");	//16
+		titles.add("婚姻状况");	//17
+		titles.add("进本单位时间");	//18
+		titles.add("现岗位");	//19
+		titles.add("上岗时间");	//20
+		titles.add("学历");	//21
+		titles.add("毕业学校");	//22
+		titles.add("专业");	//23
+		titles.add("职称");	//24
+		titles.add("职业资格证");	//25
+		titles.add("劳动合同时长");	//26
+		titles.add("签订日期");	//27
+		titles.add("终止日期");	//28
+		titles.add("现住址");	//29
+		titles.add("绑定账号ID");	//30
+		titles.add("备注");	//31
+		dataMap.put("titles", titles);
+		List<PageData> varOList = staffService.listAll(pd);
+		List<PageData> varList = new ArrayList<PageData>();
+		for(int i=0;i<varOList.size();i++){
+			PageData vpd = new PageData();
+			vpd.put("var1", varOList.get(i).getString("NAME"));	    //1
+			vpd.put("var2", varOList.get(i).getString("NAME_EN"));	    //2
+			vpd.put("var3", varOList.get(i).getString("BIANMA"));	    //3
+			vpd.put("var4", varOList.get(i).getString("DEPARTMENT_ID"));	    //4
+			vpd.put("var5", varOList.get(i).getString("FUNCTIONS"));	    //5
+			vpd.put("var6", varOList.get(i).getString("TEL"));	    //6
+			vpd.put("var7", varOList.get(i).getString("EMAIL"));	    //7
+			vpd.put("var8", varOList.get(i).getString("SEX"));	    //8
+			vpd.put("var9", varOList.get(i).getString("BIRTHDAY"));	    //9
+			vpd.put("var10", varOList.get(i).getString("NATION"));	    //10
+			vpd.put("var11", varOList.get(i).getString("JOBTYPE"));	    //11
+			vpd.put("var12", varOList.get(i).getString("JOBJOINTIME"));	    //12
+			vpd.put("var13", varOList.get(i).getString("FADDRESS"));	    //13
+			vpd.put("var14", varOList.get(i).getString("POLITICAL"));	    //14
+			vpd.put("var15", varOList.get(i).getString("PJOINTIME"));	    //15
+			vpd.put("var16", varOList.get(i).getString("SFID"));	    //16
+			vpd.put("var17", varOList.get(i).getString("MARITAL"));	    //17
+			vpd.put("var18", varOList.get(i).getString("DJOINTIME"));	    //18
+			vpd.put("var19", varOList.get(i).getString("POST"));	    //19
+			vpd.put("var20", varOList.get(i).getString("POJOINTIME"));	    //20
+			vpd.put("var21", varOList.get(i).getString("EDUCATION"));	    //21
+			vpd.put("var22", varOList.get(i).getString("SCHOOL"));	    //22
+			vpd.put("var23", varOList.get(i).getString("MAJOR"));	    //23
+			vpd.put("var24", varOList.get(i).getString("FTITLE"));	    //24
+			vpd.put("var25", varOList.get(i).getString("CERTIFICATE"));	    //25
+			vpd.put("var26", varOList.get(i).get("CONTRACTLENGTH").toString());	//26
+			vpd.put("var27", varOList.get(i).getString("CSTARTTIME"));	    //27
+			vpd.put("var28", varOList.get(i).getString("CENDTIME"));	    //28
+			vpd.put("var29", varOList.get(i).getString("ADDRESS"));	    //29
+			vpd.put("var30", varOList.get(i).getString("USER_ID"));	    //30
+			vpd.put("var31", varOList.get(i).getString("BZ"));	    //31
+			varList.add(vpd);
+		}
+		dataMap.put("varList", varList);
+		ObjectExcelView erv = new ObjectExcelView();
+		mv = new ModelAndView(erv,dataMap);
+		return mv;
+	}
+	
+	@InitBinder
+	public void initBinder(WebDataBinder binder){
+		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+		binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
+	}
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualDailyCompController.class


+ 2593 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualDailyCompController.java

@@ -0,0 +1,2593 @@
+package com.zhcs.dt.controller.information.annualPlan;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.UUID;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import oracle.net.aso.p;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.service.information.annualPlan.AnnualPlanManager;
+import com.zhcs.dt.service.information.annualPlan.DownloadZip;
+import com.zhcs.dt.service.information.annualPlan.ImoprtJson;
+import com.zhcs.dt.service.information.annualPlan.ImportDoc;
+import com.zhcs.dt.service.information.annualPlan.MultExcelUtils;
+import com.zhcs.dt.service.information.annualPlan.WordUtils;
+import com.zhcs.dt.service.information.annualPlan.impl.AnnualDailyCompService;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.Tools;
+
+/** 
+ * 类名称:年度日常养护计划完成情况
+ */
+@Controller
+@RequestMapping(value="/annualDailyComp")
+class AnnualDailyCompController extends BaseController {
+	@Resource(name="annualDailyCompService")
+	private AnnualDailyCompService annualDailyCompService;
+	@Resource(name="annualPlanService")
+	private AnnualPlanManager annualPlanService;
+	private ShowTableRecodUtil showTableRecodUtil = new ShowTableRecodUtil();
+	private int actulItemIndex = 0;
+	 /**显示、编辑子表格
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showTableRecod")
+	public ModelAndView showTableRecod()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		int viewType = setViewType(pd.getString("TABLETYPE"));
+		List<PageData> varList = new ArrayList<PageData>();
+		PageData monPlanList = new PageData();
+		String name = pd.getString("NAME");
+		String projectName = "";
+		if(name.contains("---")){
+			projectName = name.split("---")[1];
+		}
+		pd.put("PROJECT_NAME", projectName);
+		if (viewType == 1 || viewType == 2) varList = showTableRecodUtil.showTableRecod(annualDailyCompService, pd);
+		else if (viewType == 3){
+		    varList = annualDailyCompService.showTableRecod2(pd);
+		    monPlanList = annualDailyCompService.getMonPlan(pd);
+		}
+		String mode = "edit";
+		if (varList == null || varList.size() == 0) {
+			//设置查询oa_department的动态表名
+			pd.put("table", "oa_department_"+pd.getString("YEAR").toString());
+		    if (viewType == 1) varList = annualDailyCompService.showRoad(pd);
+		    else if (viewType == 3) {
+		        if (pd.get("TABLETYPE").equals("highway_prevention_project_dettable")
+		                ||pd.get("TABLETYPE").equals("highway_repair_project_dettable")
+	                    ||pd.get("TABLETYPE").equals("highway_test_project_dettable")
+	                    ||pd.get("TABLETYPE").equals("highway_emergency_project_dettable")
+	                    ||pd.get("TABLETYPE").equals("highway_scientific_project_dettable")
+	                    ||pd.get("TABLETYPE").equals("highway_special_project_dettable")) {
+	                List<PageData> sublist = new ArrayList<PageData>();
+	                PageData nulldata = new PageData();
+	                nulldata.put("ITEM_NAME", "");
+	                nulldata.put("UNIT", "");
+	                nulldata.put("UNIT_PRICE", "");
+	                nulldata.put("NUMBER", "");
+	                nulldata.put("TOTAL_COST", "");
+	                for (int i = 0; i < 3; i++) {
+	                    sublist.add(nulldata);
+	                }
+	                mv.addObject("sublist", sublist);
+	                mv.addObject("listSize", 6);
+	            }
+            }
+		    mode = "add";
+        }else if (viewType == 2){
+            mv.addObject("dataMap", JSONObject.fromObject(varList.get(0)));
+        }else if (viewType == 3){
+            mv.addObject("dataMap", JSONObject.fromObject(varList.get(0)));
+            if (pd.get("TABLETYPE").equals("highway_prevention_project_dettable")
+                    ||pd.get("TABLETYPE").equals("highway_repair_project_dettable")
+                    ||pd.get("TABLETYPE").equals("highway_special_project_dettable")
+                    ||pd.get("TABLETYPE").equals("highway_emergency_project_dettable")
+                    ||pd.get("TABLETYPE").equals("highway_test_project_dettable")
+                    ||pd.get("TABLETYPE").equals("highway_scientific_project_dettable")) {
+                pd.put("PROJECT_NAME", varList.get(0).get("PROJECT_NAME"));
+                pd.put("subtable", pd.get("TABLETYPE")+"_cost");
+                List<PageData> sublist = annualDailyCompService.wordListRecorde(pd);
+//                PageData nulldata = new PageData();
+//                nulldata.put("ITEM_NAME", "");
+//                nulldata.put("UNIT", "");
+//                nulldata.put("UNIT_PRICE", "");
+//                nulldata.put("NUMBER", "");
+//                nulldata.put("TOTAL_COST", "");
+//                int size = 3-sublist.size();
+//                for (int i = 0; i < size; i++) {
+//                    sublist.add(nulldata);
+//                }
+                int listSize = sublist.size()+3;
+                mv.addObject("sublist", JSONArray.fromObject(sublist));
+                mv.addObject("listSize", listSize);
+            }
+        }
+		JSONArray arr = JSONArray.fromObject(varList);
+		mv.addObject("varList", arr);
+		mv.addObject("monPlanList", monPlanList==null?pd:JSONObject.fromObject(monPlanList));
+		pd.put("mode", mode);
+		mv.setViewName("information/annualPlan/annualTableRecord/"+pd.getString("TABLETYPE"));
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+
+	@RequestMapping(value="/saveData")
+	@ResponseBody
+	public Object saveData(String data,String TABLETYPE,String COMPANY_ID,String YEAR,String ROAD_ID,String COMPANY,String ROAD) throws Exception{
+	    ModelAndView mv = this.getModelAndView();
+	    PageData pd = new PageData();
+	    pd.put("data", data);
+	    pd.put("TABLETYPE", TABLETYPE);
+	    pd.put("COMPANY_ID", COMPANY_ID);
+	    pd.put("YEAR", YEAR);
+	    pd.put("ROAD_ID", ROAD_ID);
+	    pd.put("COMPANY", COMPANY);
+	    pd.put("ROAD", ROAD);
+	    JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
+	    int viewType = setViewType(pd.getString("TABLETYPE"));
+        List<PageData> varList = new ArrayList<PageData>();
+        if (viewType == 1){
+        	varList = annualDailyCompService.hasTableRecod(pd);
+        }
+        else if (viewType == 2){
+        	varList = annualDailyCompService.hasTableRecod2(pd);
+        }
+        Map<String,Object> map = dealWithData(pd,varList,jsonarray);
+        if(pd.getString("TABLETYPE").equals("highway_annual_plan_sumtable")){
+        	//需要把预备费合入预备费表highway_reserve_fees_sumtable_total
+        	if (jsonarray.size()>0) {
+        		Object reserve = jsonarray.getJSONObject(0).get("RESERVE_DESIGN");
+        		pd.put("RESERVE_DESIGN", reserve);
+        	}
+        	
+        	dealReserveRecod(pd);
+        }
+        return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	private void dealReserveRecod(PageData pd) throws Exception{
+		pd.put("TABLETYPE", "highway_reserve_fees_sumtable_total");
+		List<PageData> varList = annualDailyCompService.hasTableRecod2(pd);
+		if((varList == null || varList.size() == 0) && (pd.get("RESERVE_DESIGN") != null && !"".equals(pd.get("RESERVE_DESIGN")))){
+			annualDailyCompService.saveRecodToReserve(pd);
+		}else{
+			if("".equals(pd.get("RESERVE_DESIGN"))){
+				pd.put("RESERVE_DESIGN",null);
+			}
+			annualDailyCompService.updateRecodToReserve(pd);
+		}
+	}
+	
+	@RequestMapping(value="/saveDocData")
+	@ResponseBody
+	public Object saveDocData(String data,String dataYDFJ) throws Exception{
+	    ModelAndView mv = this.getModelAndView();
+	    PageData pd = new PageData();
+	    pd = this.getPageData();
+	    JSONArray jsonarray = JSONArray.fromObject(data);
+	    Map<String,Object> map = new HashMap<String,Object>();
+//	    JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
+	    List<PageData> varList = new ArrayList<PageData>();
+	    if (pd.get("TABLETYPE").equals("highway_technica_statable")||pd.get("TABLETYPE").equals("highway_traiffcinfo_sumtable")) {
+	        varList = annualDailyCompService.hasTableRecod2(pd);
+        }else {
+            varList = annualDailyCompService.hasTableRecod3(pd);
+        }
+	    if(!(pd.get("TABLETYPE").equals("highway_technica_statable") || pd.get("TABLETYPE").equals("highway_traiffcinfo_sumtable")) 
+	    		&& pd.get("mode").equals("add")){
+	    	if(varList.size() >0){
+	    		map.put("msg", "已存在相同立项表");
+	    		return AppUtil.returnObject(new PageData(), map);
+	    	}else{
+	    		pd.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+				pd.put("MTIME", Tools.date2Str(new Date()));	//修改时间
+				pd.put("STATUS", "编制中");	//修改时间
+				pd.put("COMPILER", Jurisdiction.getUsername());
+	        	pd.put("COMPILE_TIME", Tools.date2Str(new Date()));
+	        	List<PageData> tableVarList = annualDailyCompService.hasTableRecodFormTableList(pd);  //查找annual_table_list是否已存在该立项表记录
+	        	if(tableVarList.size() == 0){
+	        		annualPlanService.addNewTableInfo(pd);	//insert annual_table_list新增立项详表
+	        	}
+	    	}
+	    }
+	    JSONArray dataArray = new JSONArray();
+	    if (jsonarray.size() > 0 && jsonarray != null) {
+	        dataArray.add(jsonarray.get(0));
+        }
+	    map = dealWithData(pd,varList,dataArray);
+	    if (jsonarray.size() > 0 && map.get("msg").equals("success") && !pd.get("TABLETYPE").equals("highway_scientific_project_dettable")
+	            && !pd.get("TABLETYPE").equals("highway_technica_statable") && !pd.get("TABLETYPE").equals("highway_traiffcinfo_sumtable")) {
+	        JSONObject jsonmap = JSONObject.fromObject(dataYDFJ);
+            map = dealWithYDFJData(pd,jsonmap);
+        }
+	    if (jsonarray.size() > 1 && map.get("msg").equals("success")) {
+	        JSONArray sublistArray = jsonarray.discard(0);
+	        pd.put("TABLETYPE", pd.get("TABLETYPE")+"_cost");
+	        map = dealWithSubListData(pd,sublistArray);
+        }
+	    return AppUtil.returnObject(new PageData(), map);   
+	}
+	
+	/**
+	 * 处理新增编辑数据
+	 */
+	@ResponseBody
+	public Map<String,Object> dealWithData(PageData pd,List<PageData> varList,JSONArray jsonarray) throws Exception{
+	    Map<String,Object> map = new HashMap<String,Object>();
+	    try {
+	        for (Object object : jsonarray) {
+	            JSONObject arrMap = JSONObject.fromObject(object);
+	            Set entryarray = arrMap.entrySet();
+	            ArrayList<Object> keyarray = new ArrayList<Object>();
+	            ArrayList<Object> valuearray = new ArrayList<Object>();
+	            for (Object entry : entryarray) {
+	                Object[] arr = entry.toString().split("=");
+	                boolean saveFlag = true;
+	                //编辑
+	                if (varList != null && varList.size() != 0) 
+	                    saveFlag = !"ROAD".equals(arr[0])&&!"YEAR".equals(arr[0])&&!"COMPANY".equals(arr[0])
+	                    &&!"ROAD_ID".equals(arr[0])&&!"COMPANY_ID".equals(arr[0])&&!"PROJECT_NAME".equals(arr[0]);
+	                saveFlag = saveFlag && !"STATUS".equals(arr[0]);
+	                if (saveFlag) {
+	                    keyarray.add(arr[0]);
+	                    if (arr.length > 1) {
+	                        valuearray.add(arr[1]);
+	                    }else {
+	                        valuearray.add(null);
+	                    }
+	                }
+	            }
+	            pd.put("KEYS", StringUtils.join(keyarray.toArray(), ","));
+	            pd.put("KEYARRAY", keyarray);
+	            pd.put("VALUEARRAY", valuearray);
+	            pd.put("ROAD_ID", arrMap.get("ROAD_ID"));
+	            pd.put("PROJECT_NAME", arrMap.get("PROJECT_NAME"));
+	            pd.put("viewtype", setViewType(pd.getString("TABLETYPE")));
+	            if (pd.getString("TABLETYPE").equals("highway_technica_statable")||pd.getString("TABLETYPE").equals("highway_traiffcinfo_sumtable"))
+	                pd.put("viewtype", 1);
+	            //新增
+	            if (varList == null || varList.size() == 0) annualDailyCompService.saveTableRecod(pd);
+	            //编辑
+	            else if (keyarray.size() > 0) annualDailyCompService.editTableRecod(pd);
+	        }
+	        map.put("msg","success");
+	    } catch (Exception e) {
+	        map.put("msg","保存失败!");
+	        logger.warn(e);
+	    }
+	    return map;
+	}
+	
+	/**
+	 * 处理立项表子表新增编辑数据
+	 */
+	@ResponseBody
+	public Map<String,Object> dealWithSubListData(PageData pd,JSONArray jsonarray) throws Exception{
+	    List<Map<String, String>> idlist = new ArrayList<Map<String,String>>();
+	    //List<String> SubListid = annualDailyCompService.selectSubListIdByRoad(pd);
+	    List<String> delSubListuid = new ArrayList<String>();
+	    for (Object object : jsonarray) {
+	        JSONObject arrMap = JSONObject.fromObject(object);
+	        Set entryarray = arrMap.entrySet();
+	        boolean flag = true;	        
+	        /*if(SubListid.contains(arrMap.get("ID"))){
+	        	//TODU
+	        }*/
+	        if (!pd.get("TABLETYPE").equals("highway_scientific_project_dettable_cost")) {
+	            if ((!arrMap.get("ID").equals(""))&&arrMap.get("ITEM_NAME").equals("")&&arrMap.get("UNIT").equals("")
+	                    &&arrMap.get("UNIT_PRICE").equals("")&&arrMap.get("NUMBER").equals("")){
+	                arrMap.put("TABLETYPE", pd.get("TABLETYPE"));
+	                annualDailyCompService.deleteSubListDataById(arrMap);
+	                annualDailyCompService.deleteRecodInfo(arrMap);
+	                flag = false;
+	            }else if (arrMap.get("ITEM_NAME").equals("")) {
+	                flag = false;
+                }
+            }else if ((!arrMap.get("ID").equals(""))&&arrMap.get("SUBJECT").equals("")&&arrMap.get("COSET").equals("")
+                   &&arrMap.get("EXPENDITURE_SUBJECT").equals("")&&arrMap.get("EXPENDITURE_COST").equals("")) {
+                arrMap.put("TABLETYPE", pd.get("TABLETYPE"));
+                annualDailyCompService.deleteSubListDataById(arrMap);
+                flag = false;
+            }else if (arrMap.get("SUBJECT").equals("")&&arrMap.get("COSET").equals("")
+                    &&arrMap.get("EXPENDITURE_SUBJECT").equals("")&&arrMap.get("EXPENDITURE_COST").equals("")) {
+                flag = false;
+            }
+	        if (flag) {
+	            ArrayList<Object> keyarray = new ArrayList<Object>();
+	            ArrayList<Object> valuearray = new ArrayList<Object>();
+	            for (Object entry : entryarray) {
+	                Object[] arr = entry.toString().split("=");
+	                if (arr.length > 1) {
+	                    boolean saveFlag = true;
+	                    //编辑
+	                    if (!arrMap.get("ID").equals(""))
+	                        saveFlag = !"ROAD".equals(arr[0])&&!"YEAR".equals(arr[0])&&!"COMPANY".equals(arr[0])&&!"ROAD_ID".equals(arr[0])
+	                        &&!"COMPANY_ID".equals(arr[0])&&!"ID".equals(arr[0])&&!"PROJECT_NAME".equals(arr[0]);
+	                    else saveFlag = !"ID".equals(arr[0]);
+	                    if (saveFlag) {
+	                        keyarray.add(arr[0]);
+	                        if(arr.length>2){
+	                        	String valueStr="";
+	                        	for(int k=1;k<arr.length;k++){
+	                        		valueStr+="="+arr[k];
+	                        	}
+	                        	valuearray.add(valueStr.subSequence(1, valueStr.length()));
+	                        	System.out.println(valueStr);
+	                        }
+	                        else{
+	                        	 valuearray.add(arr[1]);
+	                        }
+	                       
+	                        
+	                    }
+	                }
+	            }
+	            if (arrMap.get("ID").equals("")){
+	                String id = UUID.randomUUID().toString().replaceAll("-", "");
+	                keyarray.add("ID");
+	                valuearray.add(id);
+	                Map<String, String> idmap = new HashMap<String, String>();
+	                idmap.put("id", id);
+	                idmap.put("name", (String)arrMap.get("ITEM_NAME"));
+	                idlist.add(idmap);
+	            }
+	            pd.put("KEYS", StringUtils.join(keyarray.toArray(), ","));
+	            pd.put("KEYARRAY", keyarray);
+	            pd.put("VALUEARRAY", valuearray);
+	            pd.put("ROAD_ID", arrMap.get("ROAD_ID"));
+	            pd.put("ID", arrMap.get("ID"));
+	            //新增
+	            if (arrMap.get("ID").equals("")) annualDailyCompService.saveSubListData(pd);
+	            //编辑
+	            else if (keyarray.size() > 0) annualDailyCompService.editSubListData(pd);
+            }
+	    }
+	    Map<String,Object> map = new HashMap<String,Object>();
+	    map.put("msg","success");
+	    map.put("idlist",idlist);
+	    return map;
+	}
+	/**
+	 * 处理立项表进度月度分解新增编辑数据
+	 */
+	@ResponseBody
+	public Map<String,Object> dealWithYDFJData(PageData pd,JSONObject jsonmap) throws Exception{
+	    annualDailyCompService.deleteMonthRecord(pd);
+        for (int i = 1; i < 13; i++) {
+            pd.put("MONTH",i);
+            if ((!jsonmap.get("PLAN_COST_"+i).equals(""))||(!jsonmap.get("PLAN_QUANTITIES_"+i).equals(""))) {
+                pd.put("PLAN_COST", jsonmap.get("PLAN_COST_"+i).equals("")?null:jsonmap.get("PLAN_COST_"+i));
+                pd.put("PLAN_QUANTITIES", jsonmap.get("PLAN_QUANTITIES_"+i).equals("")?null:jsonmap.get("PLAN_QUANTITIES_"+i));
+                annualDailyCompService.insertMonthRecord(pd);
+            }
+        }
+	    Map<String,Object> map = new HashMap<String,Object>();
+	    map.put("msg","success");
+	    return map;
+	}
+	
+	@RequestMapping(value="/saveRecordInfo")
+	@ResponseBody
+	public Object saveRecordInfo(String recordData,String recordBeforeValue) throws Exception{
+	    ModelAndView mv = this.getModelAndView();
+	    PageData pd = new PageData();
+	    pd = this.getPageData();
+	    //{"102":{"PLAN_COST":"212"},"104":{"PLAN_COST":"44456"}}
+	    JSONObject datamap = JSONObject.fromObject(recordData);
+	    JSONObject datamapb = JSONObject.fromObject(recordBeforeValue);
+//	    JSONObject datamap = JSONObject.fromObject(pd.get("recordData"));
+//	    JSONObject datamapb = JSONObject.fromObject(pd.get("recordBeforeValue"));
+	    //[102={"PLAN_COST":" 00"}, 104={"PLAN_COST":"777"}]
+	    Set entryarray = datamap.entrySet();
+	    Set entryarrayb = datamapb.entrySet();
+//	    pd.put("MODIFIER", "admin");
+	    pd.put("MODIFIER", Jurisdiction.getU_name());
+	    for (Object entry : entryarray) {
+	        //102={"PLAN_COST":" 00"}
+	        Object[] arr = entry.toString().split("=");
+	        pd.put(pd.get("type"), arr[0]);
+	        if(arr.length>2){
+            	String valueStr="";
+            	for(int k=1;k<arr.length;k++){
+            		valueStr+="="+arr[k];
+            	}
+            	arr[1] = valueStr.subSequence(1, valueStr.length());
+            }
+	        JSONObject columnmap = JSONObject.fromObject(arr[1]);
+	        Set columnentry = columnmap.entrySet();
+	        for (Object column : columnentry) {
+	            Object[] columnarr = column.toString().split("=");
+	            pd.put("TABLE_FIELDS", columnarr[0]);
+	            if(columnarr.length>2){
+	            	String columnStr="";
+	            	for(int k=1;k<columnarr.length;k++){
+	            		columnStr+="="+columnarr[k];
+	            	}
+	            	columnarr[1] = columnStr.subSequence(1, columnStr.length());
+	            }
+	            if (columnarr.length > 1) pd.put("AFTER", columnarr[1]);
+	            else pd.put("AFTER", null);
+	            for (Object entryb : entryarrayb) {
+	                if (entryb.toString().indexOf((String) arr[0]) == 0) {
+	                    Object[] arrb = entryb.toString().split("=");
+	                    if(arrb.length>2){
+	    	            	String arrbStr="";
+	    	            	for(int k=1;k<arrb.length;k++){
+	    	            		arrbStr+="="+arrb[k];
+	    	            	}
+	    	            	arrb[1] = arrbStr.subSequence(1, arrbStr.length());
+	    	            }
+	                    JSONObject columnmapb = JSONObject.fromObject(arrb[1]);
+	                    Set columnentryb = columnmapb.entrySet();
+	                    for (Object columnb : columnentryb) {
+	                        if (columnb.toString().indexOf((String) columnarr[0]) == 0) {
+	                            Object[] columnarrb = columnb.toString().split("=");
+	                            if(columnarrb.length>2){
+	    	    	            	String columnarrbStr="";
+	    	    	            	for(int k=1;k<columnarrb.length;k++){
+	    	    	            		columnarrbStr+="="+columnarrb[k];
+	    	    	            	}
+	    	    	            	columnarrb[1] = columnarrbStr.subSequence(1, columnarrbStr.length());
+	    	    	            }
+	                            
+	                            pd.put("BEFORE", columnarrb[1]);
+	                            break;
+	                        }
+	                    }
+	                    break;
+                    }
+	            }
+	            annualDailyCompService.insertRecodInfo(pd);
+	        }
+	    }
+	    Map<String,Object> map = new HashMap<String,Object>();
+	    map.put("msg","success");
+        return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	@RequestMapping(value="/showRecodInfo")
+	@ResponseBody
+	public Object showRecodInfo() throws Exception{
+	    PageData pd = new PageData();
+	    pd = this.getPageData();
+//	    pd.put("MODIFIER", "admin");
+	    Map<String,Object> map = new HashMap<String,Object>();
+        List<PageData> rocordInfoList = annualDailyCompService.showRecodInfo(pd);
+        JSONArray rocordInfoListarr = JSONArray.fromObject(rocordInfoList);
+        map.put("rocordInfoList", rocordInfoList);
+	    return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	//多sheet
+//	@RequestMapping(value="/export")
+//    @ResponseBody
+//    public ModelAndView export(HttpServletRequest request, HttpServletResponse response) throws Exception {
+//	    ModelAndView mv = this.getModelAndView();
+//	    PageData pd = new PageData();
+//	    pd = this.getPageData();
+//	    List<PageData> exceldata = setMultExcelData(pd);
+//        String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
+//        MultExcelUtils ex = new MultExcelUtils();
+//        ex.exportExcel("高管中心数据.xlsx",path,response,exceldata);
+//        return mv;
+//    }
+
+	//单sheet
+//	@RequestMapping(value="/export")
+//	@ResponseBody
+//	public ModelAndView export(HttpServletRequest request, HttpServletResponse response) throws Exception {
+//	    ModelAndView mv = this.getModelAndView();
+//	    PageData pd = new PageData();
+//	    pd = this.getPageData();
+//	    List<PageData> list = annualDailyCompService.showTableRecod(pd);
+//	    String fileName = "单位日常养护计划完成情况汇总表.xlsx";
+//	    String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
+//	    ExcelUtils ex = new ExcelUtils();
+//	    ex.exportExcel(fileName, path, response, list, (String)pd.get("keyStr"));
+//	    return mv;
+//	}
+	
+	/**
+	 * 计划
+	 * @param param
+	 * @return
+	 * @throws Exception
+	 */
+	public List<PageData> setPlanMultExcelData(PageData param) throws Exception {
+	    List<PageData> result = new ArrayList<PageData>();
+	    String[] modelNames = {
+				"高速公路预备费使用情况汇总表","高速公路年度养护计划汇总表","高速公路日常养护计划统计表",
+	            //分报告
+	            "高速公路预防养护计划统计表","高速公路修复养护计划统计表","高速公路专项养护计划统计表",
+				"高速公路试验检测项目计划统计表","高速公路科研项目计划统计表","高速公路设备大修项目计划统计表"
+	            //无模板
+	            ,"高速公路养护质量目标表(SRI)","高速公路养护质量目标表(PWI)"
+	        };
+		    String[] keyStrs = {
+		    		"","","",
+	            //分报告
+	            "PROJECT_NAME,PROJECT_TYPE,SCALE,QUANTITIES,ESTIMATION,REMARKS"//1
+	            ,"PROJECT_NAME,PROJECT_TYPE,SCALE,QUANTITY,ESTIMATION,REMARKS"//2
+				,"PROJECT_NAME,QUANTITIES,PROJECT_COST,OTHER_MATTER"//9  
+				 ,"PROJECT_NAME,PROJECT_TYPE,CONTENTS,COST_ESTIMAT,REMARKS"//7
+	            ,"PROJECT_NAME,PROJECT_TYPE,RESEARCH_CONTENTS,COST_ESTIMAT,REMARKS"//3
+	            ,"PROJECT_NAME,PROJECT_TYPE,PROJECT_DESCRIBE,ESTIMATE_COST,REMARKS" //5                          
+	            //无模板
+	            ,"",""
+		    };
+		    String[] tableNames = {
+		    		"highway_reserve_fees_sumtable","highway_annual_plan_sumtable","highway_daily_plan_statable",
+	            //分报告
+	            "highway_prevention_plan_statable","highway_repair_plan_statable","highway_special_plan_statable","highway_test_plan_statable",
+				"highway_scientific_plan_statable",
+				"highway_equipment_overhaul_plan_statable"
+	            //无模板
+	            ,"highway_quality_goals_table","highway_quality_goals_table"
+	        };
+		    
+		    int[] startRowIndexs = {0,0,0,3,3,3,3,3,3,0,0};
+		    int[] tabletype = {0,0,0,2,2,2,2,2,2,0,0};
+		    int[] totalRange = {0,0,0,4,4,2,3,3,3,0,0};
+		    String[][][] funcArrys = {
+			{},{},{},
+	            //分报告
+	            {},{},{},{},{},{}            
+	            //无模板
+	            ,{},{}
+		    };
+	    
+	    PageData pd = new PageData();
+	    pd.put("COMPANY_ID", param.get("COMPANY_ID"));
+	    pd.put("ROAD_ID", param.get("ROAD_ID"));
+	    pd.put("ROAD", param.get("ROAD"));
+	    for (int i = 0; i < tableNames.length; i++) {
+            PageData data = new PageData();
+            data.put("modelName", modelNames[i]);
+            data.put("keyStr", keyStrs[i]);
+            data.put("startRowIndex", startRowIndexs[i]);
+            data.put("funcArry", funcArrys[i]);
+            data.put("tabletype", tabletype[i]);
+            data.put("totalRange", totalRange[i]);
+            pd.put("TABLETYPE", tableNames[i]);
+            pd.put("YEAR", param.get("YEAR"));
+            int viewType = setViewType(pd.getString("TABLETYPE"));
+            List<PageData> list = new ArrayList<PageData>();
+            if (viewType == 1 || viewType == 2) list = showTableRecodUtil.showTableRecod(annualDailyCompService, pd);
+            else if (viewType == 3) list = annualDailyCompService.showTableRecod2(pd);
+//            List<PageData> list = annualDailyCompService.selectAllRecod(pd);
+//            List<PageData> list = annualDailyCompService.exportTableRecod(pd);
+            data.put("list", list);
+            data.put("pd", pd);
+            result.add(data);
+        }
+	    return result;
+    }
+	
+	/**
+	 * 完成情况 excel 数据准备
+	 * @param param
+	 * @return
+	 * @throws Exception
+	 */
+	public List<PageData> setCompleteMultExcelData(PageData param) throws Exception {
+	    List<PageData> result = new ArrayList<PageData>();
+	    String[] modelNames = {
+	    	"高速公路养护计划完成情况汇总表","高速公路日常养护计划完成情况汇总表","高速公路日常养护计划完成情况详表"
+	    	,"高速公路预防养护计划完成情况汇总表","高速公路修复养护计划完成情况汇总表","高速专项养护计划完成情况汇总表"
+	    	,"高速公路试验检测项目计划完成情况汇总表","高速公路科研项目计划完成情况汇总表","高速公路设备大修项目计划完成情况汇总表"
+        };
+	    String[] keyStrs = {
+	    	"","",""
+	    	,"PROJECT_NAME,PROJECT_TYPE,SCALE,PLAN_QUANTITIES,PLAN_COST,ACTUAL_QUANTITIES,ACTUAL_COST,COMPLETE_RATIO,REMARKS"
+	    	,"PROJECT_NAME,PROJECT_TYPE,SCALE,PLAN_QUANTITIES,PLAN_COST,ACTUAL_QUANTITIES,ACTUAL_COST,COST_COMPLETE_RATIO,REMARKS" 
+	    	,"SPECIAL_PROJECT_NAME,PLAN_COST,ACTUAL_COST,COST_COMPLETE_RATIO,COMPLETE_DESCRIBE,REMARKS"
+	    	,"PROJECT_NAME,PROJECT_TYPE,PLAN_COST,ACTUAL_COST,COMPLETE_RATIO,XMWCQKSM,REMARKS"
+	    	,"PROJECT_NAME,PROJECT_TYPE,PLAN_COST,ACTUAL_COST,COST_COMPLETE_RATIO,XMWCQKSM,REMARKS"
+            ,"PROJECT_NAME,PROJECT_TYPE,PLAN_COST,ACTUAL_COST,COMPLETE_RATIO,XMWCQKSM,REMARKS"
+	    };
+	    String[] tableNames = {
+	    	"highway_plan_comp_sumtable","highway_daily_comp_sumtable","highway_daily_comp_dettable" 
+	    	,"highway_prevention_plan_sumtable","highway_repair_comp_sumtable","highway_special_comp_sumtable"
+	    	,"highway_test_comp_sumtable","highway_scientific_comp_sumtable","highway_equipment_overhaul_comp_sumtable"
+        };
+	    
+	    int[] startRowIndexs = {0,0,0,4,4,3,3,3,3};
+	    int[] tabletype = {0,0,0,2,2,2,2,2,2};
+	    int[] totalRange = {0,0,0,4,4,1,2,2,2};
+	    String[][][] funcArrys = {
+            //分报告
+	    	{},{},{}
+	    	,{{"percent","COMPLETE_RATIO","IF(ISERROR((H#row#/F#row#)),\"\",(H#row#/F#row#))"}} //11 highway_prevention_plan_sumtable
+	    	,{{"percent","COST_COMPLETE_RATIO","IF(ISERROR((H#row#/F#row#)),\"\",(H#row#/F#row#))"}} //10 highway_repair_comp_sumtable
+	    	,{{"percent","COST_COMPLETE_RATIO","IF(ISERROR((D#row#/C#row#)),\"\",(D#row#/C#row#))"}} //12 highway_special_comp_sumtable
+            ,{{"percent","COMPLETE_RATIO","IF(ISERROR((E#row#/D#row#)),\"\",(E#row#/D#row#))"}} //8 highway_test_comp_sumtable
+            ,{{"percent","COST_COMPLETE_RATIO","IF(ISERROR((E#row#/D#row#)),\"\",(E#row#/D#row#))"}} //4 highway_scientific_comp_sumtable
+            ,{{"percent","COMPLETE_RATIO","IF(ISERROR((E#row#/D#row#)),\"\",(E#row#/D#row#))"}} //6 highway_equipment_overhaul_comp_sumtable
+	    };
+	    
+	    PageData pd = new PageData();
+	    pd.put("COMPANY_ID", param.get("COMPANY_ID"));
+	    pd.put("ROAD_ID", param.get("ROAD_ID"));
+	    pd.put("ROAD", param.get("ROAD"));
+	    for (int i = 0; i < tableNames.length; i++) {
+            PageData data = new PageData();
+            data.put("modelName", modelNames[i]);
+            data.put("keyStr", keyStrs[i]);
+            data.put("startRowIndex", startRowIndexs[i]);
+            data.put("funcArry", funcArrys[i]);
+            data.put("tabletype", tabletype[i]);
+            data.put("totalRange", totalRange[i]);
+            pd.put("TABLETYPE", tableNames[i]);
+            pd.put("YEAR", param.get("YEAR"));
+            int viewType = setViewType(pd.getString("TABLETYPE"));
+            List<PageData> list = new ArrayList<PageData>();
+            if (viewType == 1 || viewType == 2) list = showTableRecodUtil.showTableRecod(annualDailyCompService, pd);
+            else if (viewType == 3) list = annualDailyCompService.showTableRecod2(pd);
+//            List<PageData> list = annualDailyCompService.selectAllRecod(pd);
+//            List<PageData> list = annualDailyCompService.exportTableRecod(pd);
+            data.put("list", list);
+            data.put("pd", pd);
+            result.add(data);
+        }
+	    return result;
+    }
+	
+	
+	public List<PageData> setMultExcelData2(PageData param) throws Exception {
+	    List<PageData> result = new ArrayList<PageData>();
+	    String[] modelNames = {"单位养护计划完成情况汇总表","单位日常养护计划完成情况汇总表","单位预防养护计划完成情况汇总表",
+	            "单位修复养护计划完成情况汇总表","单位养护计划汇总表","单位日常养护计划汇总表",
+	            "单位预防养护计划汇总表","单位修复养护计划汇总表"};
+	    String[] keyStrs = {
+	            "ROAD,DESIGN_KM,CARE_KM,DAILY_DESIGN,DAILY_COMPLETE,DAILY_PROPORTION,DAILY_KM,"
+                    + "MINOR_PREVENTION_DESIGN,MINOR_PREVENTION_COMPLETE,MINOR_PREVENTION_PROPORTION,MIDDLE_PREVENTION_DESIGN,MIDDLE_PREVENTION_COMPLETE,MIDDLE_PREVENTION_PROPORTION,OVERHAUL_PREVENTION_DESIGN,OVERHAUL_PREVENTION_COMPLETE,OVERHAUL_PREVENTION_PROPORTION,SUM_PREVENTION_DESIGN,SUM_PREVENTION_COMPLETE,SUM_PREVENTION_PROPORTION,"
+                    + "MINOR_REPAIR_DESIGN,MINOR_REPAIR_COMPLETE,MINOR_REPAIR_PROPORTION,MIDDLE_REPAIR_DESIGN,MIDDLE_REPAIR_COMPLETE,MIDDLE_REPAIR_PROPORTION,OVERHAUL_DESIGN,OVERHAUL_COMPLETE,OVERHAUL_PROPORTION,SUM_REPAIR_DESIGN,SUM_REPAIR_COMPLETE,SUM_REPAIR_PROPORTION,"
+                    + "SPECIAL_DESIGN,SPECIAL_COMPLETE,SPECIAL_PROPORTION,"
+                    + "EMERGENCY_DESIGN,EMERGENCY_COMPLETE,EMERGENCY_PROPORTION,"
+                    + "TEST_DESIGN,TEST_COMPLETE,TEST_PROPORTION,"
+                    + "SCIENTIFIC_DESIGN,SCIENTIFIC_COMPLETE,SCIENTIFIC_PROPORTION,"
+                    + "DEVICE_DESIGN,DEVICE_COMPLETE,DEVICE_PROPORTION,"
+                    + "RESERVE_DESIGN,RESERVE_COMPLETE,RESERVE_PROPORTION,"
+                    + "TOTAL_DESIGN,TOTAL_COMPLETE,TOTAL_PROPORTION"
+                ,"ROAD,DESIGN_KM,CARE_KM,PLAN_COST,CLEAN_COST,PATROL_COST,SUBGRADE_COST,PAVEMENT_COST,BRIDGE_COST,CULVERT_COST,TUNNEL_COST,TRAFFIC_SAFE_COST,ROADSIDE_COST,GREEN_COST,MAINT_COST,EMERGENCY_COST,TOTAL_COST,COST_KM,COM_RETIO"
+                ,"ROAD,DESIGN_KM,CARE_KM,PLAN_COST,SUBGRADE_COST,PAVEMENT_COST,BRIDGE_COST,TUNNEL_COST,TRAFFIC_SAFE_COST,ROADSIDE_COST,GREEN_COST,OTHER_COST,SUM_COST,COM_RETIO"
+                ,"ROAD,DESIGN_MK,MAINTAIN_KM,PLAN_COST,"
+                    + "MIN_SUBGRADE_COST,MIN_PAVEMENT_COST,MIN_BRIDGE_COST,MIN_TUNNEL_COST,MIN_TRAFFIC_SAFE_COST,MIN_ROADSIDE_COST,MIN_GREEN_COST,MIN_OTHER_COST,MIN_SUM_COST,"
+                    + "MID_SUBGRADE_COST,MID_PAVEMENT_COST,MID_BRIDGE_COST,MID_TUNNEL_COST,MID_TRAFFIC_SAFE_COST,MID_ROADSIDE_COST,MID_GREEN_COST,MID_OTHER_COST,MID_SUM_COST,"
+                    + "MAX_SUBGRADE_COST,MAX_PAVEMENT_COST,MAX_BRIDGE_COST,MAX_TUNNEL_COST,MAX_TRAFFIC_SAFE_COST,MAX_ROADSIDE_COST,MAX_GREEN_COST,MAX_OTHER_COST,MAX_SUM_COST,"
+                    + "SUBGRADE_COST,PAVEMENT_COST,BRIDGE_COST,TUNNEL_COST,TRAFFIC_SAFE_COST,ROADSIDE_COST,GREEN_COST,OTHER_COST,TOTAL,COM_RETIO"
+                ,"ROAD,DESIGN_KM,CARE_KM,DAILY_DESIGN,DAILY_COST_KM,"
+                    + "MINOR_PREVENTION_DESIGN,MIDDLE_PREVENTION_DESIGN,OVERHAUL_PREVENTION_DESIGN,SUM_PREVENTION,"
+                    + "MINOR_REPAIR_DESIGN,MIDDLE_REPAIR,OVERHAUL_DESIGN,SUM_REPAIR,"
+                    + "SPECIAL_DESIGN,TEST_DESIGN,SCIENTIFIC_DESIGN,DEVICE_DESIGN,EMERGENCY_DESIGN,RESERVE_DESIGN,TOTAL_COST,TOTAL_COST_KM"
+                ,"ROAD,DESIGN_KM,CARE_KM,CLEAN,PATROL,SUBGRADE,PAVEMENT,BRIDGE,CULVERT,TUNNEL,SAFE,LINE,GREEN,CAR,EMERGENCY,TOTAL_COST,COST_KM"     
+                ,"ROAD,DESIGN_KM,CARE_KM,MIN_SUBGRADE,MIN_PAVEMENT,MIN_BRIDGE,MIN_TUNNEL,MIN_TOTAL,MID_SUBGRADE,MID_PAVEMENT,MID_BRIDGE,MID_TUNNEL,MID_TOTAL,"
+                		+ "MAX_SUBGRADE,MAX_PAVEMENT,MAX_BRIDGE,MAX_TUNNEL,MAX_TOTAL,TOTAL_SUBGRADE,TOTAL_PAVEMENT,TOTAL_BRIDGE,TOTAL_TUNNEL,TOTAL"
+                ,"ROAD,DESIGN_MK,MAINTAIN_KM,"
+                    + "MIN_SUBGRADE,MIN_PAVEMENT,MIN_BRIDGE,MIN_TUNNEL,MIN_TRAFFIC_SAFE,MIN_ROADSIDE,MIN_GREEN,MIN_OTHER,MIN_SUM,"
+                    + "MID_SUBGRADE,MID_PAVEMENT,MID_BRIDGE,MID_TUNNEL,MID_TRAFFIC_SAFE,MID_ROADSIDE,MID_GREEN,MID_OTHER,MID_SUM,"
+                    + "MAX_SUBGRADE,MAX_PAVEMENT,MAX_BRIDGE,MAX_TUNNEL,MAX_TRAFFIC_SAFE,MAX_ROADSIDE,MAX_GREEN,MAX_OTHER,MAX_SUM,"
+                    + "SUBGRADE,PAVEMENT,BRIDGE,TUNNEL,TRAFFIC_SAFE,ROADSIDE,GREEN,OTHER,TOTAL"
+	    };
+	    String[] tableNames = {"annual_comp_sumtable","annual_daily_comp_sumtable","annual_prevention_comp_sumtable",
+	            "annual_repair_comp_sumtable","annual_plan_sumtable","annual_daily_plan_sumtable",
+	            "annual_prevention_plan_sumtable","annual_repair_plan_sumtable"};
+	    int[] startRowIndexs = {4,3,3,  4,3,2,  3,3};
+	    int[] tabletype = {1,1,1,  1,1,1,  1,1};
+	    int[] totalRange = {0,0,0,  0,0,0,  0,0};
+	    String[][][] funcArrys = {
+	            {{"percent","DAILY_PROPORTION","IF(ISERROR((G#row#/F#row#)),\"\",(G#row#/F#row#))"}
+    	            ,{"percent","DAILY_KM","IF(ISERROR((G#row#/E#row#)),\"\",(G#row#/E#row#))"}
+    	            ,{"percent","MINOR_PREVENTION_PROPORTION","IF(ISERROR((K#row#/J#row#)),\"\",(K#row#/J#row#))"}
+    	            ,{"percent","MIDDLE_PREVENTION_PROPORTION","IF(ISERROR((N#row#/M#row#)),\"\",(N#row#/M#row#))"}
+    	            ,{"percent","OVERHAUL_PREVENTION_PROPORTION","IF(ISERROR((Q#row#/P#row#)),\"\",(Q#row#/P#row#))"}
+    	            ,{"sum","SUM_PREVENTION_DESIGN","SUM(J#row#,M#row#,P#row#)"}
+    	            ,{"sum","SUM_PREVENTION_COMPLETE","SUM(K#row#,N#row#,Q#row#)"}
+    	            ,{"percent","SUM_PREVENTION_PROPORTION","IF(ISERROR((T#row#/S#row#)),\"\",(T#row#/S#row#))"}
+    	            ,{"percent","MINOR_REPAIR_PROPORTION","IF(ISERROR((W#row#/V#row#)),\"\",(W#row#/V#row#))"}
+    	            ,{"percent","MIDDLE_REPAIR_PROPORTION","IF(ISERROR((Z#row#/Y#row#)),\"\",(Z#row#/Y#row#))"}
+    	            ,{"percent","OVERHAUL_PROPORTION","IF(ISERROR((AC#row#/AB#row#)),\"\",(AC#row#/AB#row#))"}
+    	            ,{"sum","SUM_REPAIR_DESIGN","SUM(V#row#,Y#row#,AB#row#)"}
+    	            ,{"sum","SUM_REPAIR_COMPLETE","SUM(W#row#,Z#row#,AC#row#)"}
+    	            ,{"percent","SUM_REPAIR_PROPORTION","IF(ISERROR((AF#row#/AE#row#)),\"\",(AF#row#/AE#row#))"}
+    	            ,{"percent","SPECIAL_PROPORTION","IF(ISERROR((AI#row#/AH#row#)),\"\",(AI#row#/AH#row#))"}
+    	            ,{"percent","EMERGENCY_PROPORTION","IF(ISERROR((AL#row#/AK#row#)),\"\",(AL#row#/AK#row#))"}
+    	            ,{"percent","TEST_PROPORTION","IF(ISERROR((AO#row#/AN#row#)),\"\",(AO#row#/AN#row#))"}
+    	            ,{"percent","SCIENTIFIC_PROPORTION","IF(ISERROR((AR#row#/AQ#row#)),\"\",(AR#row#/AQ#row#))"}
+    	            ,{"percent","DEVICE_PROPORTION","IF(ISERROR((AU#row#/AT#row#)),\"\",(AU#row#/AT#row#))"}
+    	            ,{"percent","RESERVE_PROPORTION","IF(ISERROR((AX#row#/AW#row#)),\"\",(AX#row#/AW#row#))"}
+    	            ,{"sum","TOTAL_DESIGN","IF(ISNUMBER(F#row#),F#row#,0)+IF(ISNUMBER(S#row#),S#row#,0)+IF(ISNUMBER(AE#row#),AE#row#,0)+IF(ISNUMBER(AN#row#),AN#row#,0)+IF(ISNUMBER(AQ#row#),AQ#row#,0)+IF(ISNUMBER(AT#row#),AT#row#,0)+IF(ISNUMBER(AW#row#),AW#row#,0)+IF(ISNUMBER(AH#row#),AH#row#,0)+IF(ISNUMBER(AK#row#),AK#row#,0)"}
+    	            ,{"sum","TOTAL_COMPLETE","IF(ISNUMBER(G#row#),G#row#,0)+IF(ISNUMBER(T#row#),T#row#,0)+IF(ISNUMBER(AF#row#),AF#row#,0)+IF(ISNUMBER(AO#row#),AO#row#,0)+IF(ISNUMBER(AR#row#),AR#row#,0)+IF(ISNUMBER(AU#row#),AU#row#,0)+IF(ISNUMBER(AX#row#),AX#row#,0)+IF(ISNUMBER(AI#row#),AI#row#,0)+IF(ISNUMBER(AL#row#),AL#row#,0)"}
+    	            ,{"percent","TOTAL_PROPORTION","IF(ISERROR((BA#row#/AZ#row#)),\"\",(BA#row#/AZ#row#))"}
+	            }
+	            ,{{"sum","TOTAL_COST","SUM(G#row#:R#row#)"}
+	                ,{"percent","COST_KM","IF(ISERROR((S#row#/E#row#)),\"\",(S#row#/E#row#))"}
+	                ,{"percent","COM_RETIO","IF(ISERROR((S#row#/F#row#)),\"\",(S#row#/F#row#))"}
+	            }
+	            ,{{"sum","SUM_COST","SUM(G#row#:N#row#)"}}
+	            ,{{"sum","MIN_SUM_COST","SUM(G#row#:N#row#)"}
+    	            ,{"sum","MID_SUM_COST","SUM(P#row#:W#row#)"}
+    	            ,{"sum","MAX_SUM_COST","SUM(Y#row#:AF#row#)"}
+    	            ,{"sum","SUBGRADE_COST","SUM(G#row#,P#row#,Y#row#)"}
+    	            ,{"sum","PAVEMENT_COST","SUM(H#row#,Q#row#,Z#row#)"}
+    	            ,{"sum","BRIDGE_COST","SUM(I#row#,R#row#,AA#row#)"}
+    	            ,{"sum","TUNNEL_COST","SUM(J#row#,S#row#,AB#row#)"}
+    	            ,{"sum","TRAFFIC_SAFE_COST","SUM(K#row#,T#row#,AC#row#)"}
+    	            ,{"sum","ROADSIDE_COST","SUM(L#row#,U#row#,AD#row#)"}
+    	            ,{"sum","GREEN_COST","SUM(M#row#,V#row#,AE#row#)"}
+    	            ,{"sum","OTHER_COST","SUM(N#row#,W#row#,AF#row#)"}
+    	            ,{"sum","TOTAL","SUM(AH#row#:AO#row#)"}
+	            }
+	            ,{{"percent","DAILY_COST_KM","IF(ISERROR((F#row#/E#row#)),\"\",(F#row#/E#row#))"}
+    	            ,{"sum","SUM_PREVENTION","SUM(H#row#:J#row#)"}
+    	            ,{"sum","SUM_REPAIR","SUM(L#row#:N#row#)"}
+    	            ,{"sum","TOTAL_COST","IF(ISNUMBER(F#row#),F#row#,0)+IF(ISNUMBER(K#row#),K#row#,0)+IF(ISNUMBER(O#row#),O#row#,0)+IF(ISNUMBER(Q#row#),Q#row#,0)+IF(ISNUMBER(R#row#),R#row#,0)+IF(ISNUMBER(S#row#),S#row#,0)+IF(ISNUMBER(T#row#),T#row#,0)+IF(ISNUMBER(U#row#),U#row#,0)+IF(ISNUMBER(P#row#),P#row#,0)"}
+    	            ,{"percent","TOTAL_COST_KM","IF(ISERROR((V#row#/E#row#)),\"\",(V#row#/E#row#))"}
+	            }
+	            ,{{"sum","TOTAL_COST","SUM(F#row#:Q#row#)"}
+	                ,{"percent","COST_KM","IF(ISERROR((R#row#/E#row#)),\"\",(R#row#/E#row#))"}
+	            }
+	            ,{{"sum","MIN_TOTAL","SUM(F#row#:I#row#)"}
+	            	,{"sum","MID_TOTAL","SUM(K#row#:N#row#)"}
+	            	,{"sum","MAX_TOTAL","SUM(P#row#:S#row#)"}
+	            	,{"sum","TOTAL_SUBGRADE","SUM(F#row#,K#row#,P#row#)"}
+	            	,{"sum","TOTAL_PAVEMENT","SUM(G#row#,L#row#,Q#row#)"}
+	            	,{"sum","TOTAL_BRIDGE","SUM(H#row#,M#row#,R#row#)"}
+	            	,{"sum","TOTAL_TUNNEL","SUM(I#row#,N#row#,S#row#)"}
+	            	,{"sum","TOTAL","SUM(U#row#:X#row#)"}}
+	            ,{{"sum","MIN_SUM","SUM(F#row#:M#row#)"}
+    	            ,{"sum","MID_SUM","SUM(O#row#:V#row#)"}
+    	            ,{"sum","MAX_SUM","SUM(X#row#:AE#row#)"}
+    	            ,{"sum","SUBGRADE","SUM(F#row#,O#row#,X#row#)"}
+    	            ,{"sum","PAVEMENT","SUM(G#row#,P#row#,Y#row#)"}
+    	            ,{"sum","BRIDGE","SUM(H#row#,Q#row#,Z#row#)"}
+    	            ,{"sum","TUNNEL","SUM(I#row#,R#row#,AA#row#)"}
+    	            ,{"sum","TRAFFIC_SAFE","SUM(J#row#,S#row#,AB#row#)"}
+    	            ,{"sum","ROADSIDE","SUM(K#row#,T#row#,AC#row#)"}
+    	            ,{"sum","GREEN","SUM(L#row#,U#row#,AD#row#)"}
+    	            ,{"sum","OTHER","SUM(M#row#,V#row#,AE#row#)"}
+    	            ,{"sum","TOTAL","SUM(AG#row#:AN#row#)"}
+	            }
+	    };
+	    PageData pd = new PageData();
+	    pd.put("COMPANY_ID", param.get("COMPANY_ID"));
+	    pd.put("ROAD_ID", param.get("ROAD_ID"));
+	    for (int i = 0; i < tableNames.length; i++) {
+	        PageData data = new PageData();
+	        data.put("modelName", modelNames[i]);
+	        data.put("keyStr", keyStrs[i]);
+	        data.put("startRowIndex", startRowIndexs[i]);
+	        data.put("funcArry", funcArrys[i]);
+	        data.put("tabletype", tabletype[i]);
+	        data.put("totalRange", totalRange[i]);
+	        pd.put("TABLETYPE", tableNames[i]);
+	        pd.put("YEAR", param.get("YEAR"));
+	        int viewType = setViewType(pd.getString("TABLETYPE"));
+	        List<PageData> list = new ArrayList<PageData>();
+	        if (viewType == 1 || viewType == 2) list = showTableRecodUtil.showTableRecod(annualDailyCompService, pd);
+	        else if (viewType == 3) list = annualDailyCompService.showTableRecod2(pd);
+//            List<PageData> list = annualDailyCompService.selectAllRecod(pd);
+//            List<PageData> list = annualDailyCompService.exportTableRecod(pd);
+	        data.put("list", list);
+	        data.put("pd", pd);
+	        result.add(data);
+	    }
+	    return result;
+	}
+	
+//	public List<PageData> setMultExcelData(PageData param) throws Exception {
+//	    List<PageData> result = new ArrayList<PageData>();
+//	    String[] modelNames = {"单位日常养护计划完成情况汇总表","单位养护计划完成情况汇总表"};
+//	    String[] keyStrs = {"ROAD,DESIGN_KM,CARE_KM,PLAN_COST,CLEAN_COST,PATROL_COST,SUBGRADE_COST,PAVEMENT_COST,BRIDGE_COST,CULVERT_COST,TUNNEL_COST,TRAFFIC_SAFE_COST,ROADSIDE_COST,GREEN_COST,MAINT_COST,EMERGENCY_COST,TOTAL_COST,COST_KM,COM_RETIO",
+//	    "ROAD,DESIGN_KM,CARE_KM,DAILY_DESIGN,DAILY_COMPLETE,DAILY_PROPORTION,DAILY_KM,PREVENTION_DESIGN,PREVENTION_COMPLETE,PREVENTION_PROPORTION,MINOR_REPAIR_DESIGN,MINOR_REPAIR_COMPLETE,MINOR_REPAIR_PROPORTION,MIDDLE_REPAIR_DESIGN,MIDDLE_REPAIR_COMPLETE,MIDDLE_REPAIR_PROPORTION,OVERHAULD_ESIGN,OVERHAUL_COMPLETE,OVERHAUL_PROPORTION,SPECIAL_DESIGN,SPECIAL_COMPLETE,SPECIAL_PROPORTION,TEST_DESIGN,TEST_COMPLETE,TEST_PROPORTION,SCIENTIFIC_DESIGN,SCIENTIFIC_COMPLETE,SCIENTIFIC_PROPORTION,DEVICE_DESIGN,DEVICE_COMPLETE,DEVICE_PROPORTION,RESERVE_DESIGN,RESERVE_COMPLETE,RESERVE_PROPORTION,TOTAL_DESIGN,TOTAL_COMPLETE,TOTAL_PROPORTION"};
+//	    String[] tableNames = {"annual_daily_comp_sumtable","annual_comp_sumtable"};
+//	    int[] startRowIndexs = {3,4};
+//	    String[][][] funcArrys = {{},
+//	            {{"percent","DAILY_PROPORTION","IF(ISERROR((G#row#/F#row#)),\"\",(G#row#/F#row#))"},
+//	        {"percent","PREVENTION_PROPORTION","IF(ISERROR((K#row#/J#row#)),\"\",(K#row#/J#row#))"}}};
+//	    PageData pd = new PageData();
+//	    pd.put("YEAR", param.get("YEAR"));
+//	    pd.put("COMPANY_ID", param.get("COMPANY_ID"));
+//	    for (int i = 0; i < tableNames.length; i++) {
+//	        PageData data = new PageData();
+//	        data.put("modelName", modelNames[i]);
+//	        data.put("keyStr", keyStrs[i]);
+//	        data.put("startRowIndex", startRowIndexs[i]);
+//	        data.put("funcArry", funcArrys[i]);
+//	        pd.put("TABLETYPE", tableNames[i]);
+//	        List<PageData> list = annualDailyCompService.selectAllRecod(pd);
+//	        data.put("list", list);
+//	        result.add(data);
+//	    }
+//	    return result;
+//	}
+	
+//	@RequestMapping("/exportDoc")
+//    public String exportDoc(HttpServletRequest request,HttpServletResponse response) throws Exception{
+//	    ModelAndView mv = this.getModelAndView();
+//        PageData pd = new PageData();
+//        pd = this.getPageData();
+//        List<PageData> list = annualDailyCompService.wordRecorde(pd);
+//        if (list != null && list.size() > 0) {
+//            Map<String,Object> map = list.get(0);
+//            if (pd.get("TABLETYPE").equals("highway_prevention_project_dettable")
+//                    ||pd.get("TABLETYPE").equals("highway_repair_project_dettable")
+//                    ||pd.get("TABLETYPE").equals("highway_special_project_dettable")
+//                    ||pd.get("TABLETYPE").equals("highway_test_project_dettable")
+//                    ||pd.get("TABLETYPE").equals("highway_scientific_project_dettable")) {
+//                pd.put("PROJECT_NAME", map.get("PROJECT_NAME"));
+//                pd.put("subtable", pd.get("TABLETYPE")+"_cost");
+//                List<PageData> sublist = annualDailyCompService.wordListRecorde(pd);
+//                PageData nulldata = new PageData();
+//                nulldata.put("ITEM_NAME", "");
+//                nulldata.put("UNIT", "");
+//                nulldata.put("UNIT_PRICE", "");
+//                nulldata.put("NUMBER", "");
+//                nulldata.put("TOTAL_COST", "");
+//                int size = 8-sublist.size();
+//                for (int i = 0; i < size; i++) {
+//                    sublist.add(nulldata);
+//                }
+//                map.put("list", sublist);
+//            }
+//            String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
+//            String fileName = "highwayl_equipment_overhaul_project_dettable";
+//            WordUtils.exportDoc(request,response,map,pd.getString("modelName"),path,fileName);
+//        }
+//        return null;
+//    }
+	
+	public String exportDoc(HttpServletRequest request,HttpServletResponse response,PageData pd) throws Exception{
+	    List<PageData> list = annualDailyCompService.wordRecorde(pd);
+	    if (list != null && list.size() > 0) {
+	        for (PageData map : list) {
+	            exportPerDoc(request,response,pd,map);
+            }
+	    }
+	    return null;
+	}
+	
+	public String exportPerDoc(HttpServletRequest request,HttpServletResponse response,PageData pd,PageData map) throws Exception{
+        if (pd.get("TABLETYPE").equals("highway_prevention_project_dettable")
+                ||pd.get("TABLETYPE").equals("highway_repair_project_dettable")
+                ||pd.get("TABLETYPE").equals("highway_special_project_dettable")
+                ||pd.get("TABLETYPE").equals("highway_emergency_project_dettable")
+                ||pd.get("TABLETYPE").equals("highway_test_project_dettable")
+                ||pd.get("TABLETYPE").equals("highway_scientific_project_dettable")) {
+            pd.put("PROJECT_NAME", map.get("PROJECT_NAME"));
+            pd.put("subtable", pd.get("TABLETYPE")+"_cost");
+            List<PageData> sublist = annualDailyCompService.wordListRecorde(pd);
+//            PageData nulldata = new PageData();
+//            nulldata.put("ITEM_NAME", "");
+//            nulldata.put("UNIT", "");
+//            nulldata.put("UNIT_PRICE", "");
+//            nulldata.put("NUMBER", "");
+//            nulldata.put("TOTAL_COST", "");
+//            int size = 8-sublist.size();
+//            for (int i = 0; i < size; i++) {
+//                sublist.add(nulldata);
+//            }
+            map.put("list", sublist);
+        }
+        String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
+        String fileName = map.getString("NAME");
+        WordUtils.exportDoc(request,response,map,pd.getString("modelName"),path,fileName);
+	    return null;
+	}
+	
+	public List<String> creatDoc(HttpServletRequest request,HttpServletResponse response,PageData pd) throws Exception{
+	    List<PageData> list = annualDailyCompService.wordRecorde(pd);
+	    List<String> paths = new ArrayList<String>();
+	    String filepath = "";
+	    if (list != null && list.size() > 0) {
+	        for (PageData map : list) {
+	            if (pd.get("modelName").equals("101_highway_technica_statable(SRI).ftl")) {
+                    map.put("PQI", Double.parseDouble(map.get("PCI").toString())*0.35+Double.parseDouble(map.get("RQI").toString())*0.3
+                        +Double.parseDouble(map.get("RDI").toString())*0.15+Double.parseDouble(map.get("PBI").toString())*0.1
+                        +Double.parseDouble(map.get("SRI").toString())*0.1);
+                    map.put("MQI", Double.parseDouble(map.get("SCI").toString())*0.08+Double.parseDouble(map.get("PQI").toString())*0.7
+                        +Double.parseDouble(map.get("BCI").toString())*0.12+Double.parseDouble(map.get("TCI").toString())*0.1);
+                    map.put("NAME", map.getString("NAME")+"(SRI)");
+                }else if (pd.get("modelName").equals("101_highway_technica_statable(PWI).ftl")) {
+                    map.put("PQI", Double.parseDouble(map.get("PCI").toString())*0.35+Double.parseDouble(map.get("RQI").toString())*0.3
+                        +Double.parseDouble(map.get("RDI").toString())*0.15+Double.parseDouble(map.get("PBI").toString())*0.1
+                        +Double.parseDouble(map.get("PWI").toString())*0.1);
+                    map.put("MQI", Double.parseDouble(map.get("SCI").toString())*0.08+Double.parseDouble(map.get("PQI").toString())*0.7
+                        +Double.parseDouble(map.get("BCI").toString())*0.12+Double.parseDouble(map.get("TCI").toString())*0.1);
+                    map.put("NAME", map.getString("NAME")+"(PWI)");
+                }
+	            List<String> keywords = getKeywordsJson(request,pd.getString("TABLETYPE"),map.getString("CATEGORY"));
+	            map.put("keywords", keywords);
+	            filepath = creatPerDoc(request,response,pd,map);
+	            paths.add(filepath);
+	        }
+	    }
+	    return paths;
+	}
+	
+	public String creatPerDoc(HttpServletRequest request,HttpServletResponse response,PageData pd,PageData map) throws Exception{
+	    if (pd.get("TABLETYPE").equals("highway_prevention_project_dettable")
+	            ||pd.get("TABLETYPE").equals("highway_repair_project_dettable")
+	            ||pd.get("TABLETYPE").equals("highway_special_project_dettable")
+	            ||pd.get("TABLETYPE").equals("highway_emergency_project_dettable")
+	            ||pd.get("TABLETYPE").equals("highway_test_project_dettable")
+	            ||pd.get("TABLETYPE").equals("highway_scientific_project_dettable")) {
+	        pd.put("PROJECT_NAME", map.get("PROJECT_NAME"));
+	        pd.put("subtable", pd.get("TABLETYPE")+"_cost");
+	        List<PageData> sublist = annualDailyCompService.wordListRecorde(pd);
+	        PageData nulldata = new PageData();
+	        nulldata.put("ITEM_NAME", "");
+	        nulldata.put("UNIT", "");
+	        nulldata.put("UNIT_PRICE", "");
+	        nulldata.put("NUMBER", "");
+	        nulldata.put("TOTAL_COST", "");
+//	        int size = 8-sublist.size();
+//	        for (int i = 0; i < size; i++) {
+//	            sublist.add(nulldata);
+//	        }
+	        map.put("list", sublist);
+	        if (map.get("KEY_WORDS") == null) {
+                map.put("KEY_WORDS", "");
+            }
+	    }
+	    String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
+	    String fileName = map.getString("NAME");
+	    String filepath = WordUtils.creatDoc(request,response,map,pd.getString("modelName"),path,fileName);
+	    return filepath;
+	}
+	
+	@RequestMapping("/exportFiles")
+	public String exportFiles(HttpServletRequest request,HttpServletResponse response) throws Exception{
+	    String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
+	    ModelAndView mv = this.getModelAndView();
+	    PageData pd = new PageData();
+	    pd = this.getPageData();
+	    List<String> paths = new ArrayList<String>();
+	    List<String> result = new ArrayList<String>();
+	    if (pd.getString("exportname").indexOf("总报告") > 0) {
+	        //年度报告
+	        List<PageData> exceldata = setMultExcelData2(pd);
+	        MultExcelUtils ex = new MultExcelUtils();
+	        String excelpath = ex.exportExcel(pd.getString("exportname")+".xlsx",path,response,exceldata);
+	        result.add(excelpath);
+        }else {
+        	List<PageData> exceldata = new ArrayList<PageData>();
+        	//导出计划、完成情况分卡
+        	if(null != pd.get("type")){
+        		//完成情况
+        		if(pd.get("type").toString().equals("COMPLETE")){
+        			 exceldata = setCompleteMultExcelData(pd);
+        		}
+        		//计划
+        		else if(pd.get("type").toString().equals("PLAN")){
+        			//word文档
+                    pd.put("modelName", "306_highway_prevention_project_dettable.ftl");
+                    pd.put("TABLETYPE", "highway_prevention_project_dettable");
+                    paths = creatDoc(request,response,pd);
+                    result.addAll(paths);
+                    pd.put("modelName", "306_highway_special_project_dettable.ftl");
+                    pd.put("TABLETYPE", "highway_special_project_dettable");
+                    paths = creatDoc(request,response,pd);
+                    result.addAll(paths);
+                    pd.put("modelName", "306_highway_repair_project_dettable.ftl");
+                    pd.put("TABLETYPE", "highway_repair_project_dettable");
+                    paths = creatDoc(request,response,pd);
+                    result.addAll(paths);
+                    pd.put("modelName", "101_highway_technica_statable(SRI).ftl");
+                    pd.put("TABLETYPE", "highway_technica_statable");
+                    paths = creatDoc(request,response,pd);
+                    result.addAll(paths);
+                    pd.put("modelName", "101_highway_technica_statable(PWI).ftl");
+                    pd.put("TABLETYPE", "highway_technica_statable");
+                    paths = creatDoc(request,response,pd);
+                    result.addAll(paths);
+                    pd.put("modelName", "102_highway_traiffcinfo_sumtable.ftl");
+                    pd.put("TABLETYPE", "highway_traiffcinfo_sumtable");
+                    paths = creatDoc(request,response,pd);
+                    result.addAll(paths);
+                    pd.put("modelName", "309_highway_test_project_dettable.ftl");
+                    pd.put("TABLETYPE", "highway_test_project_dettable");
+                    paths = creatDoc(request,response,pd);
+                    result.addAll(paths);
+                    pd.put("modelName", "311_highway_scientific_project_dettable.ftl");
+                    pd.put("TABLETYPE", "highway_scientific_project_dettable");
+                    paths = creatDoc(request,response,pd);
+                    result.addAll(paths);
+                    pd.put("modelName", "313_highway_equipment_overhaul_project_dettable.ftl");
+                    pd.put("TABLETYPE", "highway_equipment_overhaul_project_dettable");
+                    paths = creatDoc(request,response,pd);
+                    result.addAll(paths);
+                    exceldata = setPlanMultExcelData(pd);
+        		}
+        	}
+            //excel文档
+            MultExcelUtils ex = new MultExcelUtils();
+            String excelpath = ex.exportExcel(pd.getString("exportname")+".xlsx",path,response,exceldata);
+            result.add(excelpath);
+        }
+        //zip压缩下载
+        DownloadZip.downloadZip(response,request,result,path);
+	    return null;
+	}
+	
+	
+	
+//	@RequestMapping("/exportFiles")
+//	public String exportFiles(HttpServletRequest request,HttpServletResponse response) throws Exception{
+//	    ModelAndView mv = this.getModelAndView();
+//	    PageData pd = new PageData();
+//	    pd = this.getPageData();
+//	    //modelName=311_highway_scientific_project_dettable.ftl&COMPANY_ID=001&YEAR=2018&ROAD_ID=111&TABLETYPE=highway_scientific_project_dettable
+//	    pd.put("modelName", "306_highway_prevention_project_dettable.ftl");
+//	    pd.put("TABLETYPE", "highway_prevention_project_dettable");
+//	    exportDoc(request,response,pd);
+//	    pd.put("modelName", "306_highway_prevention_project_dettable.ftl");
+//	    pd.put("TABLETYPE", "highway_repair_project_dettable");
+//	    exportDoc(request,response,pd);
+//	    pd.put("modelName", "306_highway_prevention_project_dettable.ftl");
+//	    pd.put("TABLETYPE", "highway_special_project_dettable");
+//	    exportDoc(request,response,pd);
+//	    return null;
+//	}
+	
+	@RequestMapping(value="/getProJectName",produces = "application/json; charset=utf-8")
+	@ResponseBody
+	public String getProJectName(HttpServletRequest request) throws Exception {
+		try {
+			PageData pd = this.getPageData();
+			List<PageData> pdList =annualDailyCompService.hasTableRecod2(pd);
+			PageData pd1 = pdList.get(0);
+			String proJectName = pd1.getString("PROJECT_NAME");
+			return "{\"projectname\":\""+proJectName+"\"}";
+			} catch (Exception e) {
+			}
+		return null;
+	}
+	
+	@RequestMapping(value = "/importExcel",produces={"text/html;charset=UTF-8;","application/json;"})
+	@ResponseBody
+	public String importExcel(HttpServletResponse response,HttpServletRequest request, MultipartFile file) throws Exception {
+		String msg = new String();
+		try {
+			PageData pd = this.getPageData();
+			System.out.println("开始");
+			String path = request.getSession().getServletContext().getRealPath("upload");
+			String fileName = ImportDoc.getNowTime()+"-"+file.getOriginalFilename();
+			File targetFile = new File(path, fileName);
+			String filePath = targetFile.getAbsolutePath();
+			System.out.println(filePath);
+			if (!targetFile.exists()) {
+				targetFile.mkdirs();
+			}
+			file.transferTo(targetFile);
+			ImportDoc doc = new ImportDoc();
+			HashMap<Object, Object> m = doc.ReadByExcel(filePath);			
+			msg = this.checkData(pd, m).toString();
+			//如果错误信息list有值直接返回信息给前台,不操作数据库
+			if(!(msg.isEmpty())) {
+				return msg;
+			}
+			this.importExcelData(pd, m);
+			return msg;//Msg.msg.toString();
+			} catch (Exception e) {
+				msg = e.getMessage();
+				return msg;
+			}
+	}
+	
+	//处理Ecxel数据存入数据库
+	public void importExcelData(PageData pd, HashMap<Object, Object> m) throws Exception {
+		String jsonPath =  (String) pd.get("TABLETYPE");
+		JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
+		int viewType = setViewType(pd.getString("TABLETYPE"));
+        List<PageData> varList = new ArrayList<PageData>();
+        if (viewType == 1){
+        	varList = annualDailyCompService.hasTableRecod(pd);
+        }
+        else if (viewType == 2){
+        	varList = annualDailyCompService.hasTableRecod2(pd);
+        }
+		JSONArray dataArray = new JSONArray();
+		if (jsonarray.size() > 0 && jsonarray != null) {
+			List<ImoprtJson> docJson = ImportDoc.importJson(jsonPath);
+			JSONObject jsondate = (JSONObject) jsonarray.get(0);
+			for(ImoprtJson ijson : docJson) {
+				jsondate.put(ijson.getColumn(), (String) m.get(ijson.getIndex()));
+			}
+			dataArray.add(jsondate);
+		}
+		Map<String, Object> map = dealWithData(pd, varList, dataArray);
+		if(map.get("msg").equals("success")){
+			pd.put("STATUS", "编制中");
+			annualDailyCompService.updateStatus(pd);
+			annualDailyCompService.updatePlanStatus(pd);
+		}
+	}
+	/**
+	 * 获取登陆账号所属的角色
+	 * 
+	 * @param 
+	 * @return RoleName
+	 * @throws Exception 
+	 */
+	public String getRoleName() throws Exception {
+		PageData userInfo = annualDailyCompService.getCompanyAndRoad(Jurisdiction.getUsername().toString()); // 通过username获取公司和路段
+		// 通过ROLE_ID获取角色
+		String roleName = annualDailyCompService.getRoleName(userInfo.get("ROLE_ID").toString());
+		return roleName;
+	}
+	/**
+	 * 根据角色来处理word导入的数据
+	 * 
+	 * @param m
+	 * @throws Exception 
+	 */
+	public void checkm(HashMap<Object, Object> m,HashMap<Object, Object> m1) throws Exception {
+		
+		if(m1.containsKey("AUDIT_FEE")) {
+			m.remove(m1.get("AUDIT_FEE"));
+		}
+		if(m1.containsKey("AUDIT_MAKER")) {
+			m.remove(m1.get("AUDIT_MAKER"));
+		}
+		if(m1.containsKey("MATTER_YEAR")) {
+			m.remove(m1.get("MATTER_YEAR"));
+		}
+		if(m1.containsKey("MATTER_NEW_CARRY")) {
+			m.remove(m1.get("MATTER_NEW_CARRY"));
+		}
+		if(m1.containsKey("MATTER_CONSULT")) {
+			m.remove(m1.get("MATTER_CONSULT"));
+		}
+	}
+	@RequestMapping("/importDoc")
+	@ResponseBody
+	public Map<String, String> importDoc(HttpServletRequest request, MultipartFile file,String data,String TABLETYPE,
+			String COMPANY_ID,String YEAR,String ROAD_ID,String COMPANY,String ROAD,String REPORTID) throws Exception {
+		Map<String, String> msgMap = new HashMap<String, String>();
+		List<String> msgList = new ArrayList<String>();
+		try {
+			PageData pd = new PageData();// this.getPageData();
+			pd.put("data", data);
+			pd.put("TABLETYPE", TABLETYPE);
+			pd.put("COMPANY_ID", COMPANY_ID);
+			pd.put("YEAR", YEAR);
+			pd.put("ROAD_ID", ROAD_ID);
+			pd.put("COMPANY", COMPANY);
+			pd.put("ROAD", ROAD);
+			pd.put("REPORTID", REPORTID);
+			System.out.println("开始");
+			System.out.println( "***TABLETYPE"+TABLETYPE);
+			String path = request.getSession().getServletContext().getRealPath("upload");
+			String fileName = ImportDoc.getNowTime() + "-" + file.getOriginalFilename();
+			System.out.println(path);
+			// 获取当前登陆用户角色信息
+			String roleName = this.getRoleName();
+			System.out.println(roleName);
+			// String fileName = new Date().getTime()+".jpg";
+			File targetFile = new File(path, fileName);
+			String filePath = targetFile.getAbsolutePath();
+			System.out.println(filePath);
+			if (!targetFile.exists()) {
+				targetFile.mkdirs();
+			}
+			file.transferTo(targetFile);
+			ImportDoc doc = new ImportDoc();
+			HashMap<Object, Object> m = doc.ReadByDoc(filePath);
+/*			//导入项目是否已存在
+			String projectName = checkProjectName(pd, m);
+			if(projectName.isEmpty()){
+				msgList.add("项目已存在,请检查项目名称");
+				msgMap.put("error", msgList);
+				return msgMap;
+			}*/
+			// 校验方法
+			String msg = this.checkData(pd, m).toString();
+			// 如果错误信息list有值直接返回信息给前台,不操作数据库
+			if (!(msg.isEmpty())) {
+				msgMap.put("error", msg);
+				return msgMap;
+			}
+			// 如果角色是控股管理员全部导入
+			String jsonPath = (String) pd.get("TABLETYPE");
+			List<ImoprtJson> docJson = ImportDoc.importJson(jsonPath);
+			HashMap<Object, Object> m1 = doc.ReadByDoc(filePath);
+			for (ImoprtJson ijson : docJson) {
+				m1.put(ijson.getColumn(), ijson.getIndex());
+			}
+			/*if (roleName.equals("控股集团管理员") || roleName.equals("系统管理组")) {
+			} else {
+				// 不是就有选择导入
+				this.checkm(m, m1);
+			}*/
+			Map<String, Object> map = this.importDocData(pd, m);
+			String projectName = (String) m.get("1,2");
+			if(map.get("msg").equals("success")){
+//				msgList.add(projectName);
+				msgMap.put("projectName", projectName);
+			}else{
+//				msgList.add(map.get("msg").toString());
+				msgMap.put("error", map.get("msg").toString());
+			}
+			return msgMap;// Msg.msg.toString();
+		} catch (Exception e) {
+//			msgList.add(e.getMessage());
+			if("The document is really a OOXML file".equalsIgnoreCase(e.getMessage()) 
+				|| "The document is really a UNKNOWN file".equalsIgnoreCase(e.getMessage())){
+				String msg = "导入文件格式不正确";
+				msgMap.put("error", msg);
+			}else{
+				msgMap.put("error", e.getMessage());
+			}
+			return msgMap;
+		}
+	}
+	
+/*	public String checkProjectName(PageData pd, HashMap<Object, Object> m) throws Exception {
+		String projectName = "";
+		List<PageData> varList = annualDailyCompService.hasTableRecod2(pd);
+		projectName = (String) m.get("1,2");
+		for(PageData temppd : varList){
+			if(temppd.get("PROJECT_NAME") != null){
+				if(projectName.equalsIgnoreCase(temppd.get("PROJECT_NAME").toString())){
+					projectName = "";
+					break;
+				}
+			}
+		}
+		return projectName;
+	}*/
+	
+	private void addNewTableInfo(PageData pd, String name, String tabletype) throws Exception{
+		//根据TYPE得到NAME
+		String ProjectName = annualDailyCompService.getTableName(tabletype);
+		pd.put("TYPE", pd.get("TABLETYPE"));
+		pd.put("COMPANY_NAME", pd.get("COMPANY"));
+		pd.put("ROAD_NAME", pd.get("ROAD"));
+	    pd.put("NAME", ProjectName+"---"+name);
+    	pd.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+		pd.put("MTIME", Tools.date2Str(new Date()));	//修改时间
+		pd.put("STATUS", "编制中");	//修改时间
+		pd.put("PROJECT_NAME", name);
+	    annualPlanService.addNewTableInfo(pd);	//insert annual_table_list新增立项详表
+	}
+
+	public StringBuffer checkData(PageData pd, HashMap<Object, Object> m) throws IOException {
+		StringBuffer msgBuff = new StringBuffer();
+		String jsonPath = (String) pd.get("TABLETYPE");
+		  JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
+		  JSONObject jsondate = (JSONObject) jsonarray.get(0);
+		//获取页面传来的项目名称
+		String project_name = (String) jsondate.get("PROJECT_NAME");
+		//获取字段的项目名称
+		String project_name_doc = (String) m.get("1,2");
+		if(project_name != null && project_name.length() != 0) {
+			if(!project_name.equals(project_name_doc) )
+			{
+				String str ="项目名和页面项目不一致,请检查后上传。"+"\n";
+				msgBuff.append(str);
+				return msgBuff;
+			}
+		}
+		String okey = "";  //其他说明事项的实际位置
+		for(Object getKey: m.keySet()){
+			if(m.get(getKey).equals("其它说明事项")){
+				okey = getKey.toString();
+	        }
+		}
+		String moindex = okey.split(",")[0];
+		
+		// 子表路径存放
+		StringBuffer jsonPathz = new StringBuffer(jsonPath);
+		List<ImoprtJson> docJson = ImportDoc.importJson(jsonPath);
+		String qindex1 = "";
+		String oindex1 = "";
+		String indexs="";
+		String[] index = null;
+		String index1 = "";
+		String index2 = "";
+		for (ImoprtJson ijson : docJson) {			
+			if(ijson.getColumn().equals("QUALITY_PROGRESS") || ijson.getColumn().equals("RESEARCH_BASE")){
+				String [] qindex = ijson.getIndex().split(",");
+				qindex1 = qindex[0];
+				actulItemIndex = Integer.parseInt(moindex) - Integer.parseInt(qindex1) -4;
+			}
+			indexs = ijson.getIndex();
+			if(!indexs.isEmpty()){
+				// 获得单元格里面的内容
+				String value = (String) m.get(ijson.getIndex());
+				if(value==null) {
+					 value = "";
+				}
+				// 获取单元格所在位置			
+				index = ijson.getIndex().split(",");
+				index1 = index[0];
+				index2 = index[index.length-1];
+				if(ijson.getColumn().equals("OTHER_MATTER") || ijson.getColumn().equals("MATTER_YEAR")
+					|| ijson.getColumn().equals("MATTER_NEW_CARRY") || ijson.getColumn().equals("MATTER_CONSULT")){  //"OTHER_MATTER"取实际位置的DOC值
+					okey = String.valueOf(Integer.parseInt(ijson.getIndex().split(",")[0]) + actulItemIndex) + "," + ijson.getIndex().split(",")[1];
+					if(!okey.isEmpty()){
+						// 获得单元格里面的内容
+						value = (String) m.get(okey);
+						if(value==null) {
+							 value = "";
+						}
+					}
+				}
+				checkNoNullData(ijson, value.trim(), index1, index2, msgBuff);
+			}
+		}
+		// 检查子表
+		if (jsonPath.equals("highway_equipment_overhaul_project_dettable")
+				|| jsonPath.equals("highway_traiffcinfo_sumtable") || jsonPath.equals("highway_technica_statable")
+				|| jsonPath.equals("highway_daily_plan_statable"))
+		{
+			System.out.println("没有子表无需检查");
+		}else if(jsonPath.equals("highway_scientific_project_dettable"))
+		{  //科研分费用来源和费用支出
+			jsonPathz = jsonPathz.append("_cost");
+			List<ImoprtJson> docJsonz = ImportDoc.importJson(jsonPathz.toString());
+			//费用来源(科目)存放List
+			List<String> cList1 = new ArrayList<String>() ;
+			//费用支出(科目)存放List
+			List<String> cList2 = new ArrayList<String>() ;
+			for(int i =0;i<docJsonz.size();i++) {
+				List<ImoprtJson> docJson1 = (List<ImoprtJson>) docJsonz.get(i);
+				for (ImoprtJson ijson : docJson1) {
+					// 获得单元格里面的内容
+					String column = ijson.getColumn();
+					String value = (String) m.get(ijson.getIndex());
+					if(value==null) {
+						 value = "";
+					}
+					if(column.equals("SUBJECT")) {
+						cList1.add(value);
+					}
+					if(column.equals("EXPENDITURE_SUBJECT")) {
+						cList2.add(value);
+					}
+					// 获取单元格所在位置
+					//String index = ijson.getIndex();
+					index = ijson.getIndex().split(",");
+					index1 = index[0];
+					index2 = index[index.length-1];
+					checkNoNullData(ijson, value.trim(), index1, index2, msgBuff);
+				}
+			}
+		    List<String> checkList1 = ImportDoc.removeString(cList1);
+		   // long count1 = checkList1.stream().distinct().count();
+			//boolean isRepeat1 = count1 < checkList1.size();
+		    boolean isRepeat1 = ImportDoc.repeatList(checkList1);
+		    if(isRepeat1) {
+		    	String str = "费用来源(科目)有重复,请检查!"+"\n";
+		    	msgBuff.append(str);
+		    }
+		    List<String> checkList2 = ImportDoc.removeString(cList2);
+		    //long count2 = checkList2.stream().distinct().count();
+			//boolean isRepeat2 = count2 < checkList2.size();
+		    boolean isRepeat2 = ImportDoc.repeatList(checkList2);
+		    if(isRepeat2) {
+		    	String str = "费用支出(科目)有重复,请检查!"+"\n";
+		    	msgBuff.append(str);
+		    }
+		}else {
+			jsonPathz = jsonPathz.append("_cost");
+			List<ImoprtJson> docJsonz = ImportDoc.importJson(jsonPathz.toString());
+			//分项名称存放List
+			List<String> cList = new ArrayList<String>() ;
+			for(int i =0;i<docJsonz.size();i++) {
+				List<ImoprtJson> docJson1 = (List<ImoprtJson>) docJsonz.get(i);
+				for(ImoprtJson ijson : docJson1) {
+					// 获得单元格里面的内容
+					String column = ijson.getColumn();
+					index = ijson.getIndex().split(",");
+					index1 = index[0];
+					index2 = index[index.length-1];
+					for(int j = 0; j < actulItemIndex; j++){
+						String newIndex = (Integer.parseInt(index1) + j) + ","+index2;						
+						String value = (String) m.get(newIndex);
+						if(value==null) {
+							 value = "";
+						}
+						if(column.equals("ITEM_NAME")) {
+							cList.add(value);
+						}
+						checkNoNullData(ijson, value, index1, index2, msgBuff);
+					}
+					// 获取单元格所在位置
+					//String index = ijson.getIndex();										
+				}
+			}
+			//判断子表分项名称是否有重复
+			List<String> checkList = ImportDoc.removeString(cList);
+//			long count = checkList.stream().distinct().count();
+//			boolean isRepeat = count < checkList.size();
+			boolean isRepeat = ImportDoc.repeatList(checkList);
+		    if(isRepeat) {
+		    	String str = "分项名称有重复,请检查!"+"\n";
+		    	msgBuff.append(str);
+		    }
+		}
+		return msgBuff;
+	}
+
+	private StringBuffer checkNoNullData(ImoprtJson ijson, String value, String index1, String index2,StringBuffer msgBuff){
+		// 获得单元格字符串长度
+		int valueSize = value.length();
+		// 字符串规则
+		String type = ijson.getType();
+		// 长度规则
+		int typeLength = Integer.valueOf(ijson.getLength()).intValue();
+		// 长度String类型
+		String typeLengthS = ijson.getLength();
+		// 小数个数
+		String scale = ijson.getScale();
+		//判断能否为空,1代表不为空
+		String notnull =  ijson.getNotnull();
+		//如果notnull是空的情况下处理,说明可以为空
+		if(notnull==null||notnull.equals("")) {
+			if(value==null||value.equals("")) {
+				
+			}else {
+				if (type.equals("String")) {
+					if (value.length() > typeLength) {
+						String str = "第" + index1+"行"+index2+"列"+ "单元格长度超过" + typeLengthS + "位。"+"\n";
+						msgBuff.append(str);
+					}
+				}
+				if (type.equals("int")) {
+					if (ImportDoc.isNumeric(value) || value.length() > typeLength) {
+						String str = "第" + index1+"行"+index2+"列"+ "单元格要填数字" + "长度不超过" + typeLengthS + "位。"+"\n";
+						msgBuff.append(str);
+					}
+				}
+				if (type.equals("decimal")) {
+					if (ImportDoc.isNumber(value.trim(), scale) || value.length() > typeLength) {
+						String str = "第"+ index1+"行"+index2+"列"+ "单元格要填数字! 长度不超过" +  typeLengthS+ "位,小数点不超过" + scale + "位。"+"\n";
+						msgBuff.append(str);
+					}
+				}
+			}
+			
+		}else {
+			int notnullt = Integer.parseInt(ijson.getNotnull().trim()) ;
+			if(notnullt==1) {
+				if(value==null||value.equals("")) {
+					String str = "第" + index1+"行"+index2+"列" + "不能为空"+"\n";
+					msgBuff.append(str);
+				}else {
+					if (type.equals("String")) {
+						if (value.length() > typeLength) {
+							String str = "第" + index1+"行"+index2+"列"+ "单元格长度超过" + typeLengthS + "位。"+"\n";
+							msgBuff.append(str);
+						}
+					}
+					if (type.equals("int")) {
+						if (ImportDoc.isNumeric(value) || value.length() > typeLength) {
+							String str = "第" + index1+"行"+index2+"列"+ "单元格要填数字" + "长度不超过" + typeLengthS + "位。"+"\n";
+							msgBuff.append(str);
+						}
+					}
+					if (type.equals("decimal")) {
+						if (ImportDoc.isNumber(value, scale) || value.length() > typeLength) {
+							String str = "第"+ index1+"行"+index2+"列"+ "单元格要填数字! 长度不超过" +  typeLengthS+ "位小数点不超过" + scale + "位。"+"\n";
+							msgBuff.append(str);
+						}
+					}
+				}
+			}
+		}
+		return msgBuff;
+	}
+		
+	
+	/**
+	 * 处理新增编辑数据
+	 */
+	@ResponseBody
+	public Map<String,Object> dealWithImportData(PageData pd,List<PageData> varList,JSONArray jsonarray) throws Exception{
+	    Map<String,Object> map = new HashMap<String,Object>();
+	    try {
+	        for (Object object : jsonarray) {
+	            JSONObject arrMap = JSONObject.fromObject(object);
+	            Set entryarray = arrMap.entrySet();
+	            ArrayList<Object> keyarray = new ArrayList<Object>();
+	            ArrayList<Object> valuearray = new ArrayList<Object>();
+	            for (Object entry : entryarray) {
+	                Object[] arr = entry.toString().split("=");
+	                boolean saveFlag = true;
+	                //编辑
+	                if (varList != null && varList.size() != 0) 
+	                    saveFlag = !"ROAD".equals(arr[0])&&!"YEAR".equals(arr[0])&&!"COMPANY".equals(arr[0])
+	                    &&!"ROAD_ID".equals(arr[0])&&!"COMPANY_ID".equals(arr[0])&&!"PROJECT_NAME".equals(arr[0]);
+	                saveFlag = saveFlag && !"STATUS".equals(arr[0]);
+	                if (saveFlag) {
+	                    keyarray.add(arr[0]);
+	                    if (arr.length > 1) {
+	                        valuearray.add(arr[1]);
+	                    }else {
+	                        valuearray.add(null);
+	                    }
+	                }
+	            }
+	            pd.put("KEYS", StringUtils.join(keyarray.toArray(), ","));
+	            pd.put("KEYARRAY", keyarray);
+	            pd.put("VALUEARRAY", valuearray);
+	            pd.put("ROAD_ID", arrMap.get("ROAD_ID"));
+	            pd.put("PROJECT_NAME", arrMap.get("PROJECT_NAME"));
+	            pd.put("viewtype", setViewType(pd.getString("TABLETYPE")));
+	            if (pd.getString("TABLETYPE").equals("highway_technica_statable")||pd.getString("TABLETYPE").equals("highway_traiffcinfo_sumtable"))
+	                pd.put("viewtype", 1);
+	            //新增
+	            if (varList == null || varList.size() == 0) {
+	            	annualDailyCompService.saveTableRecod(pd);
+	            }
+	            //编辑
+	            else if (keyarray.size() > 0) annualDailyCompService.editTableRecod(pd);
+	        }
+	        map.put("msg","success");
+	    } catch (Exception e) {
+	        map.put("msg","保存失败!");
+	    }
+	    return map;
+	}
+	
+	/**
+	 * 处理导入的word数据
+	 */
+	@ResponseBody
+	public Map<String,Object> dealWithImportWordData(boolean flag, PageData pd, JSONObject jsonObject) throws Exception{
+	    Map<String,Object> map = new HashMap<String,Object>();
+	    try {
+            JSONObject arrMap = jsonObject;
+            Set entryarray = arrMap.entrySet();
+            ArrayList<Object> keyarray = new ArrayList<Object>();
+            ArrayList<Object> valuearray = new ArrayList<Object>();
+            for (Object entry : entryarray) {
+                Object[] arr = entry.toString().split("=");	                
+                keyarray.add(arr[0]);
+                if (arr.length > 1) {
+                    valuearray.add(arr[1]);
+                }else {
+                    valuearray.add(null);
+                }
+            }
+            pd.put("KEYS", StringUtils.join(keyarray.toArray(), ","));
+            pd.put("KEYARRAY", keyarray);
+            pd.put("VALUEARRAY", valuearray);
+            pd.put("PROJECT_NAME", arrMap.get("PROJECT_NAME"));
+            pd.put("viewtype", setViewType(pd.getString("TABLETYPE")));
+            if (pd.getString("TABLETYPE").equals("highway_technica_statable")||pd.getString("TABLETYPE").equals("highway_traiffcinfo_sumtable"))
+                pd.put("viewtype", 1);
+            //新增
+            if (flag) {
+            	annualDailyCompService.saveTableRecod(pd);
+            }else{
+            //编辑
+            	annualDailyCompService.editTableRecod(pd);
+            }
+	        map.put("msg","success");
+	    } catch (Exception e) {
+	    	System.out.println(e.toString());
+	        map.put("msg","保存失败!");
+	    }
+	    return map;
+	}
+	
+	/**
+	 * 处理导入的立项表子表word数据
+	 */
+	@ResponseBody
+	public Map<String,Object> dealWithWordSubListData(PageData pd,JSONArray jsonarray) throws Exception{
+		Map<String,Object> map = new HashMap<String,Object>();
+		boolean flag = true;
+		List<PageData> pdList = new ArrayList<PageData>();
+		try{
+			if ("highway_equipment_overhaul_project_dettable".equals(pd.get("TABLE_NAME"))) {
+                flag = false;
+	        }else{
+            	annualDailyCompService.deleteSubListDataWord(pd);
+            }
+		    for (Object object : jsonarray) {
+		    	PageData newpd = new PageData();
+		        JSONObject arrMap = JSONObject.fromObject(object);
+		        Set entryarray = arrMap.entrySet();		        
+		        if (flag) {
+		            ArrayList<Object> keyarray = new ArrayList<Object>();
+		            ArrayList<Object> valuearray = new ArrayList<Object>();
+		            for (Object entry : entryarray) {
+		                Object[] arr = entry.toString().split("=");
+		                if (arr.length > 1) {
+	                        keyarray.add(arr[0]);
+	                        valuearray.add(arr[1]);
+		                }
+		            }
+		            newpd.put("TABLE_NAME", pd.get("TABLE_NAME"));
+		            newpd.put("KEYS", StringUtils.join(keyarray.toArray(), ","));
+		            newpd.put("KEYARRAY", keyarray);
+		            newpd.put("VALUEARRAY", valuearray);
+		            if(!"highway_scientific_project_dettable_cost".equals(pd.get("TABLE_NAME"))){
+			            if(newpd.get("KEYARRAY").toString().contains("TOTAL_COST")){
+			            	pdList.add(newpd);
+			            }
+		            }else{
+		            	if(newpd.get("KEYARRAY").toString().contains("SUBJECT")){
+			            	pdList.add(newpd);
+			            }
+		            }
+		                        
+	            }		        
+		    }
+		    for(PageData tpd : pdList){
+			    //新增
+	            annualDailyCompService.saveSubListDataWord(tpd);
+		    }
+		    map.put("msg","success");
+		}catch(Exception e){
+			map.put("msg", e.toString());
+		}
+	    return map;
+	}
+	
+	//将导入word提取的数据入库
+	public Map<String, Object> importDocData(PageData pd, HashMap<Object, Object> m) throws Exception {
+		//判断是否是已存在的立项表
+		boolean flag = true;
+		List<PageData> varList = annualDailyCompService.hasTableRecod2(pd);
+		if("highway_technica_statable".equals(pd.get("TABLETYPE"))
+				|| "highway_traiffcinfo_sumtable".equals(pd.get("TABLETYPE"))){
+			if(varList.size() > 0){
+				flag = false;  //新导入的项目属于原项目
+			}
+		}else{
+			for(PageData varpd : varList){
+				if(varpd.get("PROJECT_NAME") != null){
+					if(m.get("1,2").equals(varpd.get("PROJECT_NAME"))){
+						flag = false;  //新导入的项目属于原项目
+						break;
+					}
+				}
+			}
+		}
+		//先处理子表数据,得到总表的规模和估算金额		
+		JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
+		String jsonPath =  (String) pd.get("TABLETYPE") + "_cost";
+		double totalCost = (double)0;
+		String PROJECT_SCALE = "小修";
+		Map<String, Object> map = new HashMap<String, Object>();
+		if(!("highway_equipment_overhaul_project_dettable_cost".equalsIgnoreCase(jsonPath) 
+			|| "highway_quality_goals_table_cost".equalsIgnoreCase(jsonPath)
+			|| "highway_technica_statable_cost".equalsIgnoreCase(jsonPath)
+			|| "highway_traiffcinfo_sumtable_cost".equalsIgnoreCase(jsonPath)
+			|| "highway_scientific_project_dettable_cost".equalsIgnoreCase(jsonPath))){   //排除没有子表的
+			List subdocJson = ImportDoc.importJson(jsonPath);		
+			JSONObject jsondate = jsonarray.getJSONObject(1);
+			JSONArray sublistArray = new JSONArray();
+			subdocJson = ImportDoc.importJson(jsonPath);
+			boolean isAddFlag = true;
+			for(int i =0;i<actulItemIndex;i++) {
+				List docJsonArray = (List) subdocJson.get(0);
+				jsondate.put("PROJECT_NAME", m.get("1,2"));
+				for(int j=0; j<docJsonArray.size();j++) {
+					ImoprtJson ijson = (ImoprtJson) docJsonArray.get(j);	
+					String jsonIndex = String.valueOf(Integer.parseInt(ijson.getIndex().split(",")[0]) + i) + "," + ijson.getIndex().split(",")[1];
+					jsondate.put(ijson.getColumn(), (String) m.get(jsonIndex));
+					if(!"highway_scientific_project_dettable_cost".equalsIgnoreCase(jsonPath)){
+						if(j == docJsonArray.size()-1 && !"".equalsIgnoreCase(jsondate.get("UNIT_PRICE").toString())){
+							double tCost = (double)0;
+							tCost = Double.parseDouble(jsondate.get("UNIT_PRICE").toString()) * Double.parseDouble(jsondate.get("NUMBER").toString());
+							jsondate.put("TOTAL_COST", String.valueOf(tCost));
+							String id = UUID.randomUUID().toString().replaceAll("-", "");
+							jsondate.put("ID", id);
+							totalCost += tCost;
+						}
+						if("".equalsIgnoreCase(jsondate.get("ITEM_NAME").toString())){
+							isAddFlag = false;
+							break;
+						}
+					}else{
+						if((!"".equals(jsondate.get("SUBJECT")) || !"".equals(jsondate.get("EXPENDITURE_SUBJECT")))){
+							if(jsondate.get("ID").equals("")){
+								String id = UUID.randomUUID().toString().replaceAll("-", "");
+								jsondate.put("ID", id);
+							}							
+						}else{
+							isAddFlag = false;
+							break;
+						}
+					}
+				}
+				if(isAddFlag){
+					sublistArray.add(jsondate);
+					jsondate.put("ID", "");
+				}				
+			}
+			pd.put("TABLE_NAME", jsonPath);
+			pd.put("PROJECT_NAME", m.get("1,2"));
+			map = dealWithWordSubListData(pd, sublistArray);   //立项表子表合入数据
+		}else{
+			map.put("msg","success");
+		}
+		
+		if(!("highway_scientific_project_dettable_cost".equalsIgnoreCase(jsonPath)
+			|| "highway_equipment_overhaul_project_dettable_cost".equalsIgnoreCase(jsonPath) 
+			|| "highway_quality_goals_table_cost".equalsIgnoreCase(jsonPath)
+			|| "highway_technica_statable_cost".equalsIgnoreCase(jsonPath)
+			|| "highway_traiffcinfo_sumtable_cost".equalsIgnoreCase(jsonPath)
+			|| "highway_scientific_project_dettable_cost".equalsIgnoreCase(jsonPath))){
+			if(totalCost/10000 < 500){
+				PROJECT_SCALE = "小修";
+			}else if(totalCost/10000 > 5000){
+				PROJECT_SCALE = "大修";
+			}else{
+				PROJECT_SCALE = "中修";
+			}
+		}
+		
+		jsonPath =  (String) pd.get("TABLETYPE");	
+		
+		JSONObject dataObject = new JSONObject();	
+		if (jsonarray.size() > 0 && jsonarray != null) {
+			List<ImoprtJson> docJson = ImportDoc.importJson(jsonPath);
+			//JSONObject jsondate = (JSONObject) jsonarray.get(0);			
+			for(ImoprtJson ijson : docJson) {				
+				if(ijson.getColumn().equals("KEY_WORDS")) {
+					String a=  (String) m.get(ijson.getIndex());
+					String b = a.replace(",", ",");
+					dataObject.put(ijson.getColumn(), b);
+					continue;
+				}
+				if(!("highway_scientific_project_dettable".equalsIgnoreCase(jsonPath)
+						|| "highway_equipment_overhaul_project_dettable".equalsIgnoreCase(jsonPath) 
+						|| "highway_quality_goals_table".equalsIgnoreCase(jsonPath)
+						|| "highway_technica_statable".equalsIgnoreCase(jsonPath)
+						|| "highway_traiffcinfo_sumtable".equalsIgnoreCase(jsonPath)
+						|| "highway_scientific_project_dettable".equalsIgnoreCase(jsonPath))){
+					if("PROJECT_COST".equalsIgnoreCase(ijson.getColumn()) || "TOTAL_COST".equalsIgnoreCase(ijson.getColumn())){
+						dataObject.put(ijson.getColumn(), String.valueOf(totalCost/10000));
+					}else if("PROJECT_SCALE".equalsIgnoreCase(ijson.getColumn())){
+						dataObject.put(ijson.getColumn(), PROJECT_SCALE);
+					}else if("OTHER_MATTER".equalsIgnoreCase(ijson.getColumn())){
+						dataObject.put(ijson.getColumn(), (String) m.get(String.valueOf(Integer.parseInt(ijson.getIndex().split(",")[0]) + actulItemIndex) + "," + ijson.getIndex().split(",")[1]));
+					}else{
+						dataObject.put(ijson.getColumn(), (String) m.get(ijson.getIndex()));
+					}
+				}else if("highway_scientific_project_dettable".equalsIgnoreCase(jsonPath)){
+					if("OTHER_MATTER".equalsIgnoreCase(ijson.getColumn()) || "MATTER_YEAR".equalsIgnoreCase(ijson.getColumn())
+						|| "MATTER_NEW_CARRY".equalsIgnoreCase(ijson.getColumn()) || "MATTER_CONSULT".equalsIgnoreCase(ijson.getColumn())){
+						dataObject.put(ijson.getColumn(), (String) m.get(String.valueOf(Integer.parseInt(ijson.getIndex().split(",")[0]) + actulItemIndex) + "," + ijson.getIndex().split(",")[1]));
+					}else{
+						dataObject.put(ijson.getColumn(), (String) m.get(ijson.getIndex()));
+					}					
+				}else{
+					dataObject.put(ijson.getColumn(), (String) m.get(ijson.getIndex()));
+				}
+				
+			}
+			if(dataObject.get("TOTAL_COST") == null){
+				dataObject.put("TOTAL_COST", dataObject.get("PROJECT_COST"));
+			}
+			dataObject.put("YEAR", pd.get("YEAR"));
+			dataObject.put("COMPANY", pd.get("COMPANY"));
+			dataObject.put("COMPANY_ID", pd.get("COMPANY_ID"));
+			dataObject.put("ROAD_ID", pd.get("ROAD_ID"));
+			dataObject.put("ROAD", pd.get("ROAD"));
+		}
+		if (map.get("msg").equals("success")){
+			map = dealWithImportWordData(flag, pd, dataObject);	
+			if("highway_technica_statable".equalsIgnoreCase(jsonPath)
+			    || "highway_traiffcinfo_sumtable".equalsIgnoreCase(jsonPath)){
+				pd.put("STATUS", "编制中");
+				annualDailyCompService.updateStatus(pd);
+				annualDailyCompService.updatePlanStatus(pd);
+			}
+		}	
+		if (map.get("msg").equals("success")) {
+			//主表插入数据成功再添加table表			
+			if(flag && !("highway_technica_statable".equalsIgnoreCase(jsonPath)
+					|| "highway_traiffcinfo_sumtable".equalsIgnoreCase(jsonPath))){
+				varList = null;   //新导入的项目不属于原项目,执行insert操作 
+				String projectName = (String) m.get("1,2");
+				addNewTableInfo(pd, projectName, jsonPath);
+				annualDailyCompService.updatePlanStatus(pd);
+			}
+		}
+		return map;
+	}
+	public int setViewType(String tableType) {
+	    int viewType = 1;
+	    if (tableType.equals("highway_plan_comp_sumtable")||tableType.equals("highway_annual_plan_sumtable")
+	    		||tableType.equals("highway_quality_goals_table")|| tableType.equals("highway_daily_plan_statable")
+	    		||tableType.equals("highway_reserve_fees_sumtable") || tableType.equals("highway_daily_plan_statable")
+	    		||tableType.equals("highway_daily_comp_sumtable") || tableType.equals("highway_daily_comp_dettable")) {
+	        viewType = 2;
+        }else if (tableType.equals("highway_technica_statable")
+            ||tableType.equals("highway_traiffcinfo_sumtable")
+            ||tableType.equals("highway_prevention_project_dettable")
+            ||tableType.equals("highway_emergency_project_dettable")
+            ||tableType.equals("highway_repair_project_dettable")
+            ||tableType.equals("highway_test_project_dettable")
+            ||tableType.equals("highway_scientific_project_dettable")
+            ||tableType.equals("highway_equipment_overhaul_project_dettable")
+            ||tableType.equals("highway_special_project_dettable")) {
+            viewType = 3;
+        }
+	    return viewType;
+    }
+	
+	@RequestMapping(value="/updateStatus")
+	@ResponseBody
+	public Object updateStatus() throws Exception{
+		String username = Jurisdiction.getUsername();
+	    ModelAndView mv = this.getModelAndView();
+	    PageData pd = new PageData();
+	    pd = this.getPageData();
+	    int intStatus = Integer.parseInt(pd.getString("STATUS"));
+	    String pdStatus = "";
+	    switch(intStatus){
+        case 0:
+        	pdStatus = "新建";break;
+        case 1:
+        	pdStatus = "编制中";
+        	pd.put("MTIME", Tools.date2Str(new Date()));
+        	pd.put("COMPILER", username);
+        	pd.put("COMPILE_TIME", Tools.date2Str(new Date()));
+        	break;
+        case 2:
+        	pdStatus = "待审核";break;
+        case 3:
+        	pd.put("MTIME", Tools.date2Str(new Date()));
+        	pdStatus = "审核中";break;
+        case 4:
+        	pdStatus = "审核通过";
+        	pd.put("AUDITOR", username);
+        	pd.put("AUDIT_TIME", Tools.date2Str(new Date()));
+        	break;
+        case 5:
+        	pdStatus = "审核不通过";
+        	pd.put("AUDITOR", username);
+        	pd.put("AUDIT_TIME", Tools.date2Str(new Date()));
+        	break;
+        case 6:
+        	pdStatus = "路公司驳回";break;
+        case 7:
+        	pdStatus = "待审批";break;
+        case 8:
+        	pd.put("MTIME", Tools.date2Str(new Date()));
+        	pdStatus = "审批中";break;
+        case 9:
+        	pdStatus = "审批通过";
+        	pd.put("APPROVER", username);
+        	pd.put("APPROVE_TIME", Tools.date2Str(new Date()));
+        	break;
+        case 10:
+        	pdStatus = "审批不通过";
+        	pd.put("APPROVER", username);
+        	pd.put("APPROVE_TIME", Tools.date2Str(new Date()));
+        	break;
+        case 11:
+        	pdStatus = "控股驳回";break;
+        default:
+        	pdStatus = "新建";break;
+        }
+	    pd.put("STATUS", pdStatus);
+	    if("undefined".equals(pd.get("PROJECT_NAME"))){
+	    	pd.remove("PROJECT_NAME");
+	    }
+	    annualDailyCompService.updateStatus(pd); //update annual_table_list 表状态	    
+	    //List<PageData> tableInfo = annualDailyCompService.getAllTableStatus(pd); //查询 annual_table_list中同一个plan下的表状态
+	    String planStatus = dealStatus(pd);
+	    if(!planStatus.isEmpty()){
+		    pd.put("STATUS", planStatus);
+		    annualDailyCompService.updatePlanStatus(pd); //update annual_plan_list 表状态
+	    }
+	    
+	    Map<String,Object> map = new HashMap<String,Object>();
+	    map.put("msg", pdStatus);
+        return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	@RequestMapping(value="/updatePlanStatus")
+	@ResponseBody
+	public Object updatePlanStatus() throws Exception{
+		String username = Jurisdiction.getUsername();
+	    ModelAndView mv = this.getModelAndView();
+	    PageData pd = new PageData();
+	    pd = this.getPageData();
+	    pd.put("STATUS", "删除");
+	    String planStatus = dealStatus(pd);
+	    if(!planStatus.isEmpty()){
+		    pd.put("STATUS", planStatus);
+		    annualDailyCompService.updatePlanStatus(pd); //update annual_plan_list 表状态
+	    }
+		Map<String,Object> map = new HashMap<String,Object>();
+	    map.put("msg","success");
+        return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	private String dealStatus(PageData pd) throws Exception{
+		String annualPlanStatus = "";
+		if(pd.get("TABLETYPE") !=null){
+			if("highway_reserve_fees_sumtable".equalsIgnoreCase(pd.get("TABLETYPE").toString())){
+				pd.put("YEAR", String.valueOf(Integer.parseInt(pd.get("YEAR").toString()) + 1));
+			}
+		}
+		String planid = annualDailyCompService.getPlanId(pd); //通过companyid和year获取 annual_plan_list对应的id
+		//String planStatus = annualDailyCompService.getPlanStatus(pd); //查询 annual_table_list对应的plan状态
+		List<PageData> reportIds = annualDailyCompService.getReportsInfo(planid); //通过planid获取对应的reportids,所有的路段
+		Map<PageData, List<PageData>> reportAndTableMap = new HashMap<PageData, List<PageData>>();
+		for(PageData reportid : reportIds){
+			List<PageData> tableInfoList = annualDailyCompService.getUserTableInfo(reportid);
+			reportAndTableMap.put(reportid, tableInfoList);
+			if(isXJstatus(reportAndTableMap)){
+				annualPlanStatus = "新建";
+			}else if(isBZstatus(reportAndTableMap)){
+				annualPlanStatus = "编制中";
+			}else if(isDSHstatus(reportAndTableMap)){
+				annualPlanStatus = "待审核";
+			}else if(isSHTGstatus(reportAndTableMap)){
+				annualPlanStatus = "审核通过";
+			}else if("".equalsIgnoreCase(isBFSHTGstatus(reportAndTableMap))){
+				annualPlanStatus = isBFSHTGstatus(reportAndTableMap);
+			}else if("".equalsIgnoreCase(isSHBTGstatus(reportAndTableMap))){
+				annualPlanStatus = isSHBTGstatus(reportAndTableMap);
+			}else if(isDSPstatus(reportAndTableMap)){
+				annualPlanStatus = "待审批";
+			}else if(isSPTGstatus(reportAndTableMap)){
+				annualPlanStatus = "审批通过";
+			}else if(isSPBTGstatus(reportAndTableMap)){
+				annualPlanStatus = "控股驳回";
+			}
+		}
+		
+		return annualPlanStatus;
+	}
+	
+	//新建
+	private boolean isXJstatus(Map<PageData, List<PageData>> reportAndTableMap){
+		boolean flag = false;
+		for (Entry<PageData, List<PageData>> entry : reportAndTableMap.entrySet()) { 
+			//System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); 
+			for(PageData tablepd : entry.getValue()){
+				String status = tablepd.get("STATUS").toString();
+				if(!("新建".equalsIgnoreCase(status) || "自动统计".equalsIgnoreCase(status))){
+					return false;
+				}else{
+					flag = true;
+				}
+			}
+		}
+		return flag;
+	}
+	
+	//编制中
+	private boolean isBZstatus(Map<PageData, List<PageData>> reportAndTableMap){
+		boolean flag = false;
+		for (Entry<PageData, List<PageData>> entry : reportAndTableMap.entrySet()) { 
+			//System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); 
+			for(PageData tablepd : entry.getValue()){
+				String status = tablepd.get("STATUS").toString();
+				if("待审核".equalsIgnoreCase(status) || "审核通过".equalsIgnoreCase(status) ||"审核不通过".equalsIgnoreCase(status)
+					|| "待审批".equalsIgnoreCase(status) || "审批通过".equalsIgnoreCase(status) || "审批不通过".equalsIgnoreCase(status)){
+					return false;
+				}else if("编制中".equalsIgnoreCase(status)){
+					flag = true;
+				}
+			}
+		}
+		return flag;
+	}
+	
+	//待审核
+	private boolean isDSHstatus(Map<PageData, List<PageData>> reportAndTableMap){
+		boolean flag = false;
+		for (Entry<PageData, List<PageData>> entry : reportAndTableMap.entrySet()) {
+			for(PageData tablepd : entry.getValue()){
+				String status = tablepd.get("STATUS").toString();
+				if("待审核".equalsIgnoreCase(status)){
+					return true;
+				}
+			}
+		}
+		return flag;
+	}
+	
+	//审核通过
+	private boolean isSHTGstatus(Map<PageData, List<PageData>> reportAndTableMap){
+		boolean flag = false;
+		for (Entry<PageData, List<PageData>> entry : reportAndTableMap.entrySet()) { 
+			for(PageData tablepd : entry.getValue()){
+				String status = tablepd.get("STATUS").toString();
+				if(!"审核通过".equalsIgnoreCase(status) && !"自动统计".equalsIgnoreCase(status)){
+					return false;
+				}else{
+					flag = true;
+				}
+			}
+		}
+		return flag;
+	}
+	
+	//部分审核通过(路段1,路段2)
+	private String isBFSHTGstatus(Map<PageData, List<PageData>> reportAndTableMap){
+		String shtgRoads = "";
+		for (Entry<PageData, List<PageData>> entry : reportAndTableMap.entrySet()) { 
+			for(PageData tablepd : entry.getValue()){
+				String status = tablepd.get("STATUS").toString();
+				if("待审核".equalsIgnoreCase(status)){
+					return "待审核";
+				}else if("审核通过".equalsIgnoreCase(status) && !shtgRoads.contains(entry.getKey().get("ROAD_NAME").toString())){
+					shtgRoads += entry.getKey().get("ROAD_NAME") + ",";
+				}
+			}
+		}
+		return "部分审核通过("+shtgRoads.indexOf(0, shtgRoads.length()-1)+")";
+	}
+	
+	//审核不通过
+	private String isSHBTGstatus(Map<PageData, List<PageData>> reportAndTableMap){
+		String shbtgRoads = "";
+		for (Entry<PageData, List<PageData>> entry : reportAndTableMap.entrySet()) { 
+			for(PageData tablepd : entry.getValue()){
+				String status = tablepd.get("STATUS").toString();
+				if("待审核".equalsIgnoreCase(status)){
+					return "待审核";
+				}else if("审核不通过".equalsIgnoreCase(status) && !shbtgRoads.contains(entry.getKey().get("ROAD_NAME").toString())){
+					shbtgRoads += entry.getKey().get("ROAD_NAME") + ",";
+				}
+			}
+		}
+		return "路公司驳回("+shbtgRoads.indexOf(0, shbtgRoads.length()-1)+")";
+	}
+	
+	//待审批
+	private boolean isDSPstatus(Map<PageData, List<PageData>> reportAndTableMap){
+		boolean flag = false;
+		for (Entry<PageData, List<PageData>> entry : reportAndTableMap.entrySet()) {
+			for(PageData tablepd : entry.getValue()){
+				String status = tablepd.get("STATUS").toString();
+				if("待审批".equalsIgnoreCase(status)){
+					return true;
+				}
+			}
+		}
+		return flag;
+	}
+	
+	//审批通过
+	private boolean isSPTGstatus(Map<PageData, List<PageData>> reportAndTableMap){
+		boolean flag = false;
+		for (Entry<PageData, List<PageData>> entry : reportAndTableMap.entrySet()) { 
+			for(PageData tablepd : entry.getValue()){
+				String status = tablepd.get("STATUS").toString();
+				if(!"审批通过".equalsIgnoreCase(status) && !"自动统计".equalsIgnoreCase(status)){
+					return false;
+				}else{
+					flag = true;
+				}
+			}
+		}
+		return flag;
+	}
+	
+	//审批不通过
+	private boolean isSPBTGstatus(Map<PageData, List<PageData>> reportAndTableMap){
+		boolean flag = true;
+		for (Entry<PageData, List<PageData>> entry : reportAndTableMap.entrySet()) { 
+			for(PageData tablepd : entry.getValue()){
+				String status = tablepd.get("STATUS").toString();
+				if("审批不通过".equalsIgnoreCase(status)){
+					return true;
+				}else if("待审批".equalsIgnoreCase(status) || "新建".equalsIgnoreCase(status)
+			    || "待审核".equalsIgnoreCase(status) || "审核通过".equalsIgnoreCase(status) ||"审核不通过".equalsIgnoreCase(status)){
+					flag = false;
+				}
+			}
+		}
+		return flag;
+	}
+	
+/*	private String dealStatus(PageData pd) throws Exception{
+		String annualPlanStatus = "";
+		if(pd.get("TABLETYPE") !=null){
+			if("highway_reserve_fees_sumtable".equalsIgnoreCase(pd.get("TABLETYPE").toString())){
+				pd.put("YEAR", String.valueOf(Integer.parseInt(pd.get("YEAR").toString()) + 1));
+			}
+		}
+		String planid = annualDailyCompService.getPlanId(pd); //通过companyid和year获取 annual_plan_list对应的id
+		String planStatus = annualDailyCompService.getPlanStatus(pd); //查询 annual_table_list对应的plan状态
+		List<String> reportIds = annualDailyCompService.getReportIds(planid); //通过planid获取对应的reportids,所有的路段
+		//PageData reportInfo = annualDailyCompService.getReportId(pd); //通过pd获取当前修改的table对应的report信息,一条路段
+		//年计划状态为“新建”,进行“编制”操作,年计划和对应表状态都为“编制中”
+		if("新建".equalsIgnoreCase(planStatus)){
+			annualPlanStatus = "编制中";
+		}
+		PageData userInfo = annualPlanService.getCompanyAndRoad(Jurisdiction.getUsername().toString());  //通过username获取公司和路段
+	    //通过ROLE_ID获取角色
+	    String roleName = annualPlanService.getRoleName(userInfo.get("ROLE_ID").toString());
+	    if("路桥公司管理员".equalsIgnoreCase(roleName)){
+	    	if("待审核".equalsIgnoreCase(planStatus) && "审核通过".equalsIgnoreCase(pd.get("STATUS").toString())){
+	    		annualPlanStatus = "审核中";
+	    	}else if(("待审核".equalsIgnoreCase(planStatus) || "审核中".equalsIgnoreCase(planStatus))
+	    			&& "审核不通过".equalsIgnoreCase(pd.get("STATUS").toString())){
+	    		annualPlanStatus = "路公司驳回(" + pd.get("ROAD").toString() + ")";
+	    	}
+	    	if("审核中".equalsIgnoreCase(planStatus) && "审核通过".equalsIgnoreCase(pd.get("STATUS").toString())){
+	    		if(hasAllPassStatus(reportIds,"审核通过")){
+	    			annualPlanStatus = "审核通过";
+	    		}
+	    	}
+	    	if(planStatus.contains("路公司驳回") && "审核不通过".equalsIgnoreCase(pd.get("STATUS").toString())){
+	    		String roadnames =  planStatus.replace(")", "").trim();
+	    		if(!roadnames.contains(pd.get("ROAD").toString())){
+	    			roadnames += "," + pd.get("ROAD").toString();
+	    			annualPlanStatus = roadnames + ")";
+	    		}
+	    	}
+	    	//路公司用户直接修改保存原来审核不通过的表格
+	    	if(planStatus.contains("路公司驳回") && "编制中".equalsIgnoreCase(pd.get("STATUS").toString())){
+	    		annualPlanStatus = hasAllPassOrEditStatus(reportIds, planStatus, "审核通过", "编制中");
+	    	}
+	    	//路公司用户直接删除审核不通过的表格
+	    	if(planStatus.contains("路公司驳回") && "删除".equalsIgnoreCase(pd.get("STATUS").toString())){
+	    		annualPlanStatus = hasAllPassOrEditStatus(reportIds, planStatus, "审核通过", "编制中");
+	    	}
+	    	if(planStatus.contains("控股驳回") && "审核不通过".equalsIgnoreCase(pd.get("STATUS").toString())){
+	    		annualPlanStatus = "路公司驳回(" + pd.get("ROAD").toString() + ")";
+	    	}
+	    	if(planStatus.contains("控股驳回") && "待审批".equalsIgnoreCase(pd.get("STATUS").toString())){
+	    		annualPlanStatus = "待审批";
+	    	}
+	    	if((("审核中").equalsIgnoreCase(planStatus)||("审核通过").equalsIgnoreCase(planStatus)) 
+	    			&& "待审批".equalsIgnoreCase(pd.get("STATUS").toString())){
+	    		annualPlanStatus = "待审批";
+	    	}
+	    	if(("编制中").equalsIgnoreCase(planStatus) && "待审批".equalsIgnoreCase(pd.get("STATUS").toString())){
+	    		annualPlanStatus = "待审批";
+	    	}
+	    }
+	    if("路段管理员".equalsIgnoreCase(roleName)){
+	    	if(planStatus.contains("编制中") && "待审核".equalsIgnoreCase(pd.get("STATUS").toString())){
+	    		annualPlanStatus = "待审核";
+	    	}
+	    	if(planStatus.contains("路公司驳回") && "待审核".equalsIgnoreCase(pd.get("STATUS").toString())){
+	    		String[] roadnames =  planStatus.replace("路公司驳回(", "").replace(")", "").trim().split(",");
+	    		String roads = "";
+	    		for(String road : roadnames){
+	    			if(pd.get("ROAD") != null){
+		    			if(!road.trim().equalsIgnoreCase(pd.get("ROAD").toString().trim())){
+		    				roads += road.trim() + ",";
+		    			}
+	    			}
+	    			if(pd.get("ROADS") != null){
+	    				String[] tempRoads = (String[])pd.get("ROADS");
+	    				for(String tempRoad : tempRoads){
+	    					if(!road.trim().equalsIgnoreCase(tempRoad.trim())){
+	    						roads += road.trim() + ",";
+	    					}
+	    				}
+	    			}
+	    		}
+	    		if(roads.isEmpty()){
+	    			annualPlanStatus = "待审核";
+	    		}else{
+	    			annualPlanStatus = "路公司驳回(" + roads.substring(0, roads.length()-1) + ")";
+	    		}
+	    	}
+	    	//路段用户删除(审核不通过)的表格
+	    	if("删除".equalsIgnoreCase(pd.get("STATUS").toString())){
+	    		annualPlanStatus = getAllTableStatus(reportIds);
+	    	}
+	    }
+	    if("控股集团管理员".equalsIgnoreCase(roleName)){
+	    	if("待审批".equalsIgnoreCase(planStatus) && "审批通过".equalsIgnoreCase(pd.get("STATUS").toString())){
+	    		annualPlanStatus = "审批中";
+	    	}else if(("待审批".equalsIgnoreCase(planStatus) || "审批中".equalsIgnoreCase(planStatus))
+	    			&& "审批不通过".equalsIgnoreCase(pd.get("STATUS").toString())){
+	    		annualPlanStatus = "控股驳回";
+	    	}
+	    	if("审批中".equalsIgnoreCase(planStatus) && "审批通过".equalsIgnoreCase(pd.get("STATUS").toString())){
+	    		if(hasAllPassStatus(reportIds,"审批通过")){
+	    			annualPlanStatus = "审批通过";
+	    		}
+	    	}
+	    	if("待审批".equalsIgnoreCase(planStatus) && "待审批".equalsIgnoreCase(pd.get("STATUS").toString())){
+	    		annualPlanStatus = "待审批";
+	    	}
+	    }
+	    return annualPlanStatus;
+	}*/
+	
+/*	//判断同一年报告下的所有表状态(除“自动统计”)
+	private String getAllTableStatus(List<String> reportIds) throws Exception{
+		String status = "";
+		PageData pd = new PageData();
+		for(String reportid : reportIds){
+			pd.put("REPORTID", reportid);
+			List<PageData> tableInfoList = annualDailyCompService.getUserTableInfo(pd);
+			int i = 0;
+			for(PageData tableInfo : tableInfoList){
+				if(tableInfo.get("STATUS").toString().equalsIgnoreCase("审核通过")
+					|| tableInfo.get("STATUS").toString().equalsIgnoreCase("自动统计")){
+	    			i++;
+	    		}
+			}
+			if(i == tableInfoList.size()){
+				status = "审核通过";
+			}
+		}
+		return status;
+	}*/
+	
+	//判断同一年报告下的所有表状态是否都为“审核通过”(除“自动统计”)
+/*	private boolean hasAllPassStatus(List<String> reportIds, String status) throws Exception{
+		boolean hasAllPassStatus = true;
+		PageData pd = new PageData();
+		for(String reportid : reportIds){
+			pd.put("REPORTID", reportid);
+			List<PageData> tableInfoList = annualDailyCompService.getUserTableInfo(pd);
+			int i = 0;
+			for(PageData tableInfo : tableInfoList){
+				if(tableInfo.get("STATUS").toString().equalsIgnoreCase(status)
+					|| tableInfo.get("STATUS").toString().equalsIgnoreCase("自动统计")){
+	    			i++;
+	    		}
+			}
+			if(i != tableInfoList.size()){
+				hasAllPassStatus = false;
+				break;
+			}
+		}
+		return hasAllPassStatus;
+	}*/
+	
+	//路桥用户点击"保存",判断同一年报告下的所有表状态是否都为“审核通过”或者编制人为路桥公司管理员,编制中状态(除“自动统计”)
+/*	private String hasAllPassOrEditStatus(List<String> reportIds, String planStatus, String status1, String status2) throws Exception{
+		PageData pd = new PageData();
+		List<String> delRoad = new ArrayList<String>();
+		for(String reportid : reportIds){
+			pd.put("REPORTID", reportid);
+			List<PageData> tableInfoList = annualDailyCompService.getUserTableInfo(pd);
+			int i = 0;
+			for(PageData tableInfo : tableInfoList){
+				if(tableInfo.get("STATUS").toString().equalsIgnoreCase(status1)
+					|| (tableInfo.get("STATUS").toString().equalsIgnoreCase(status2) 
+						&& "路桥公司管理员".equalsIgnoreCase(getRoleName(tableInfo.get("COMPILER").toString())))
+					|| tableInfo.get("STATUS").toString().equalsIgnoreCase("自动统计")){
+	    			i++;
+	    		}
+			}
+			if(i == tableInfoList.size()){   //路段报告中没有审核不通过的
+				if(tableInfoList.get(0).get("ROAD_NAME") != null){
+					delRoad.add(tableInfoList.get(0).get("ROAD_NAME").toString().trim());
+				}
+			}
+		}
+		String[] roadnames =  planStatus.replace("路公司驳回(", "").replace(")", "").trim().split(",");
+		if(delRoad.size() > 0){   //路段报告中没有审核不通过的
+			for(String delR : delRoad){				
+	    		for(int j = 0; j < roadnames.length; j++){
+	    			if(roadnames[j].trim().equalsIgnoreCase(delR)){
+	    				roadnames = (String[]) ArrayUtils.remove(roadnames, j);
+	    			}
+	    		}				
+			}
+		}
+		if(roadnames.length > 0){
+			StringBuffer str = new StringBuffer();
+			for (String s : roadnames) {
+				str.append(s);
+			}
+			planStatus = "路公司驳回(" + str.toString() + ")";
+		}else{
+			planStatus = "审核中";
+		}
+		return planStatus;
+	}*/
+	
+/*	private String getRoleName(String name) throws Exception{
+		PageData userInfo = annualPlanService.getCompanyAndRoad(name);  //通过username获取公司和路段
+	    //通过ROLE_ID获取角色
+	    String roleName = annualPlanService.getRoleName(userInfo.get("ROLE_ID").toString());
+	    return roleName;
+	}*/
+	
+	/**完成审核和审批
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/updateAllStatus")
+	@ResponseBody
+	public Object updateAllStatus()throws Exception{
+		String username = Jurisdiction.getUsername();
+	    ModelAndView mv = this.getModelAndView();
+	    PageData pd = new PageData();
+	    pd = this.getPageData();
+	    String msg = "提交成功";
+	    PageData userInfo = annualPlanService.getCompanyAndRoad(Jurisdiction.getUsername().toString());  //通过username获取公司和路段
+	    //通过ROLE_ID获取角色
+	    String roadUser = "";
+	    String roleName = annualPlanService.getRoleName(userInfo.get("ROLE_ID").toString());
+	    if("路段管理员".equalsIgnoreCase(roleName)){
+	    	String[] roadnames = userInfo.get("ROAD").toString().replace("","").split(",");
+	    	String[] roads = new String[roadnames.length];
+	    	for(int i = 0; i < roadnames.length ; i++){
+	    		//String roadid = annualPlanService.getRoadId(roadnames[i].trim());
+	    		roads[i] = roadnames[i].trim();
+	    	}
+	        pd.put("ROADS", roads);
+	        pd.put("USERNAME", username);
+	        roadUser = username;
+	    }
+//	    JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
+	    int intStatus = Integer.parseInt(pd.getString("STATUS"));
+	    String pdStatus = "";
+	    switch(intStatus){
+	    case 0:
+        	pdStatus = "新建";break;
+        case 1:
+        	pdStatus = "编制中";
+        	pd.put("COMPILER", username);
+        	pd.put("COMPILE_TIME", Tools.date2Str(new Date()));
+        	break;
+        case 2:
+        	pdStatus = "待审核";break;
+        case 3:
+        	pdStatus = "审核中";break;
+        case 4:
+        	pdStatus = "审核通过";
+        	pd.put("AUDITOR", username);
+        	pd.put("AUDIT_TIME", Tools.date2Str(new Date()));
+        	break;
+        case 5:
+        	pdStatus = "审核不通过";
+        	pd.put("AUDITOR", username);
+        	pd.put("AUDIT_TIME", Tools.date2Str(new Date()));
+        	break;
+        case 6:
+        	pdStatus = "路公司驳回";break;
+        case 7:
+        	pd.put("SPTIME", Tools.date2Str(new Date()));
+        	pdStatus = "待审批";break;
+        case 8:
+        	pdStatus = "审批中";break;
+        case 9:
+        	pdStatus = "审批通过";
+        	pd.put("APPROVER", username);
+        	pd.put("APPROVE_TIME", Tools.date2Str(new Date()));
+        	break;
+        case 10:
+        	pdStatus = "审批不通过";
+        	pd.put("APPROVER", username);
+        	pd.put("APPROVE_TIME", Tools.date2Str(new Date()));
+        	break;
+        case 11:
+        	pdStatus = "审核完成";break;
+        case 12:
+        	pdStatus = "审批完成";break;
+        case 13:
+        	pdStatus = "控股驳回";break;
+        default:
+        	pdStatus = "新建";break;
+        }
+	    pd.put("STATUS", pdStatus);
+	    String planid = annualDailyCompService.getPlanId(pd); //通过companyid和year获取 annual_plan_list对应的id
+	    List<String> reportIds = annualDailyCompService.getReportIds(planid); //通过planid获取对应的reportids,所有的路段
+	    if(intStatus == 2){
+	    	if(roadUser.isEmpty()){
+	    		msg = "只有路段管理员需要提交审核";
+	    	}else{
+	    		pd.put("PLANID", planid);
+	    		List<String> userReportIds = annualDailyCompService.getUserReportIds(pd); //获取该路段用户所有报告
+		    	for(String reportid : userReportIds){
+			    	pd.put("REPORTID", reportid);
+			    	List<PageData> tableInfoList = annualDailyCompService.getUserTableInfo(pd);
+			    	for(PageData tableInfo : tableInfoList){
+			    		if(!("编制中".equalsIgnoreCase(tableInfo.get("STATUS").toString()) 
+			    		   || "审核通过".equalsIgnoreCase(tableInfo.get("STATUS").toString())
+			    		   || "审批通过".equalsIgnoreCase(tableInfo.get("STATUS").toString())
+			    		   || "自动统计".equalsIgnoreCase(tableInfo.get("STATUS").toString()))){
+			    			msg = "不符合条件,不能提交审核";
+			    			break;
+			    		}
+			    	}			    		
+		    	}
+		    	if("提交成功".equalsIgnoreCase(msg)){
+		    		msg = "已提交审核";
+		    		for(String reportid : userReportIds){
+				    	pd.put("REPORTID", reportid);
+				    	annualDailyCompService.updateAllTablesStatus(pd); //update 该plan下所有table表状态(编制中的所有表)
+				    }
+		    		String planStatus = dealStatus(pd);
+		    		if(!planStatus.isEmpty()){   //不修改状态
+			    	    pd.put("STATUS", planStatus);
+					    annualDailyCompService.updatePlanStatus(pd); //update annual_plan_list 表状态 ,更新计划修改时间(每次提交时更新)
+		    		}
+		    	}
+	    	}
+	    }else if(intStatus == 7){      //提交年度计划
+	    	List<PageData> companyUserList = annualDailyCompService.getCompanyUserInfo(pd);  //通过公司名获取该公司下所有user信息 
+	    	Map<String, String> userMap = new HashMap<String, String>();
+	    	for(PageData user : companyUserList){
+	    		String userRoleName = annualDailyCompService.getRoleName(user.get("ROLE_ID").toString());
+	    		userMap.put(user.get("USERNAME").toString(), userRoleName);
+	    	}
+	    	msg = getMsg(pd, reportIds, userMap);
+	    	if("success".equalsIgnoreCase(msg)){
+	    		msg = "提交年度计划成功";
+	    		for(String reportid : reportIds){
+			    	pd.put("REPORTID", reportid);
+			    	annualDailyCompService.updateAllTablesStatus1(pd); //update 该plan下所有table表状态(自动统计外的所有表)
+			    }
+	    		String planStatus = dealStatus(pd);
+	    		if(!planStatus.isEmpty()){   //不修改状态
+	    			pd.put("STATUS", planStatus);
+	    			annualDailyCompService.updatePlanStatus(pd); //update annual_plan_list 表状态
+	    		}
+	    	}
+	    }
+	    Map<String,Object> map = new HashMap<String,Object>();
+	    map.put("msg", msg);
+	    map.put("status",pd.get("STATUS").toString());
+        return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	public String getMsg(PageData pd, List<String> reportIds, Map<String, String> userMap){
+		String msg = "success";
+		try{
+			for(String reportid : reportIds){
+		    	pd.put("REPORTID", reportid);
+		    	List<PageData> tableInfoList = annualDailyCompService.getUserTableInfo(pd);		    	
+		    	for(PageData tableInfo : tableInfoList){
+		    		if(tableInfo.get("STATUS").toString().equalsIgnoreCase("新建")){
+		    			msg = "存在状态为“新建”的表,不能提交年度计划";
+		    			return msg;
+		    		}
+		    		if(tableInfo.get("COMPILER") != null){
+		    			for(Entry<String, String> um : userMap.entrySet()){
+		    				if((um.getKey().equalsIgnoreCase(tableInfo.get("COMPILER").toString())
+		    					&& um.getValue().equalsIgnoreCase("路段管理员")
+		    					&& !tableInfo.get("STATUS").toString().equalsIgnoreCase("审核通过"))){
+		    					msg = "路桥公司管理员还有表未审核通过,不能提交年度计划";
+		    					return msg;
+		    				}else if(tableInfo.get("STATUS").toString().equalsIgnoreCase("待审批")){
+		    					msg = "控股集团管理员还有表未审批,不能提交年度计划";
+		    					return msg;
+		    				}
+		    			}
+		    		}
+		    	}
+	    	}
+			return msg;
+		}catch(Exception e){
+			return e.toString();
+		}
+	}
+	
+	//判断table状态,获得plan状态
+	public boolean getAllTableStatus(PageData pd) throws Exception{
+		List<PageData> tableStatus = annualDailyCompService.getAllTableStatus(pd);
+		boolean planStatus = true;
+		for(PageData tableStatu : tableStatus){
+			if("审核不通过".equalsIgnoreCase(tableStatu.get("STATUS").toString()) || "审批不通过".equalsIgnoreCase(tableStatu.get("STATUS").toString())){
+				planStatus = false;
+				break;
+			}
+		}
+		return planStatus;
+	}
+
+    @RequestMapping(value="/getValidateJson")
+    @ResponseBody
+    public Object getValidateJson() throws Exception{
+        Map<String,Object> result = new HashMap<String,Object>();
+        PageData pd = new PageData();
+        pd = this.getPageData();
+        String jsonPath = (String) pd.get("TABLETYPE");
+        List<ImoprtJson> list = ImportDoc.importJson(jsonPath);
+        Map<String, Object> map = jsonListToObj(list);
+        result.put("map", map);
+        if (jsonPath.equals("highway_prevention_project_dettable")
+                ||jsonPath.equals("highway_repair_project_dettable")
+                ||jsonPath.equals("highway_special_project_dettable")
+                ||jsonPath.equals("highway_emergency_project_dettable")
+                ||jsonPath.equals("highway_test_project_dettable")
+                ||jsonPath.equals("highway_scientific_project_dettable")) {
+            String subjsonPath = jsonPath + "_cost";
+            List<List<ImoprtJson>> sublist = ImportDoc.importJson(subjsonPath);
+            if (sublist != null && sublist.size() > 0) {
+                Map<String, Object> submap = jsonListToObj(sublist.get(0));
+                result.put("submap", submap);
+            }
+        }
+        return AppUtil.returnObject(new PageData(), result);
+    }
+    
+    public Map<String, Object> jsonListToObj(List<ImoprtJson> list){
+        Map<String, Object> result = new HashMap<String, Object>();
+        for (ImoprtJson imoprtJson : list) {
+            Map<String, Object> map = new HashMap<String, Object>();
+            map.put("type", imoprtJson.getType());
+            map.put("length", imoprtJson.getLength());
+            map.put("scale", imoprtJson.getScale());
+            map.put("notnull", imoprtJson.getNotnull());
+            result.put(imoprtJson.getColumn(), map);
+        }
+        return result;
+    }
+    
+    public List<String> getKeywordsJson(HttpServletRequest request,String tabletype,String category){
+        String path = request.getSession().getServletContext().getRealPath("/static/ace/json/keywords.json");
+        List<String> keywords = new ArrayList<String>();
+        if (category!=null) {
+            if (!category.equals("")) {
+                try {
+                    String keywordsJson = FileUtils.readFileToString(new File(path), "UTF-8");
+                    JSONObject typeMap = JSONObject.fromObject(keywordsJson);
+                    if (typeMap != null) {
+                        JSONObject categoryMap = typeMap.getJSONObject(tabletype);
+                        if (categoryMap != null) {
+                            JSONArray keywordsArray = categoryMap.getJSONArray(category);
+                            if (keywordsArray != null) {
+                                keywords = JSONArray.toList(keywordsArray);
+                            }
+                        }
+                    }
+                } catch (Exception e) {
+                    keywords = null;
+                }
+            }
+        }
+        return keywords;
+    }
+    
+    
+    @RequestMapping(value="/delelLastRow")
+	@ResponseBody
+	public Object delelLastRow(String data) throws Exception{
+    	String result="success";
+ 	    PageData pd = new PageData();
+ 	    pd = this.getPageData();
+ 	    pd.remove("data");
+ 	    JSONObject jsonobject = JSONObject.fromObject(data);
+ 	   	pd.put("ID", jsonobject.get("ID").toString());
+ 	   	try {
+ 	   	annualDailyCompService.deleteTableRecod(pd);
+		} catch (Exception e) {
+			result = "error";
+		}
+ 	   Map<String,Object> map = new HashMap<String,Object>();
+ 	   map.put("msg", result);
+ 	   return AppUtil.returnObject(new PageData(), map);   
+    }
+ 
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualMassagePanelController.class


+ 74 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualMassagePanelController.java

@@ -0,0 +1,74 @@
+package com.zhcs.dt.controller.information.annualPlan;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import net.sf.json.JSONArray;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.service.information.annualPlan.impl.AnnualMassagePanelService;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.Tools;
+
+/** 
+ * 类名称:审核意见填写
+ */
+@Controller
+@RequestMapping(value="/annualMassagePanel")
+class AnnualMassagePanelController extends BaseController {
+	@Resource(name="annualMassagePanelService")
+	private AnnualMassagePanelService annualMassagePanelService;
+	
+	/**去新增页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/addNewSHPanel")
+	public ModelAndView addNewSHPanel()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		mv.setViewName("information/annualPlan/annualPlan_addNewSHPanel");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	 /**insert审核意见
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/addMassage")
+	@ResponseBody
+	public Object addMassage(String data){
+		Map<String,Object> map = new HashMap<String,Object>();
+		String msg = "审核完成";
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("USER_NAME", Jurisdiction.getUsername());
+        pd.put("TIME", Tools.date2Str(new Date()));
+        pd.put("USER_ROLE", "路公司管理员");
+        pd.put("TODO_USER_ROLE", "路段管理员");
+        pd.put("STATUS", "路公司驳回");
+        pd.put("OPTION", "审核不通过");
+        pd.put("MESSAGE", data);
+        try{
+        	annualMassagePanelService.insertMassage(pd);
+        }catch(Exception e){
+        	msg = "保存审核意见失败";
+        }
+		map.put("result", msg);				//返回结果
+		return AppUtil.returnObject(new PageData(), map);
+	}
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualPlanCompController.class


+ 1190 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualPlanCompController.java

@@ -0,0 +1,1190 @@
+package com.zhcs.dt.controller.information.annualPlan;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import sun.security.krb5.internal.PAData;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.information.annualPlan.AnnualPlanCompManager;
+import com.zhcs.dt.service.information.annualPlan.AnnualPlanManager;
+import com.zhcs.dt.service.information.annualPlan.DownloadZip;
+import com.zhcs.dt.service.information.annualPlan.MultExcelUtils;
+import com.zhcs.dt.service.information.annualPlan.TotalAmountUtil;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.Tools;
+
+/** 
+ * 类名称:年度养护计划
+ * 创建人:Yuanf
+ * 创建时间:2018-11-12
+ */
+@Controller
+@RequestMapping(value="/annualPlanComp")
+class AnnualPlanCompController extends BaseController {
+	private static final HashMap<String, ArrayList<PageData>> ArrayList = null;
+	String menuUrl = "annualPlanComp/list.do"; //菜单地址(权限用)
+	@Resource(name="annualPlanCompService")
+	private AnnualPlanCompManager annualPlanCompService;
+	@Resource(name="annualPlanService")
+	private AnnualPlanManager annualPlanService;
+	List<String> newTables = new ArrayList<String>();
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"养护计划完成情况");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)		
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		//pd.put("USERNAME", Jurisdiction.getUsername().toString());
+		//通过username获取对应的公司和路段,控股集团管理员只可以看到状态为“待审批”和“已完成”的计划,路公司管理员和路段管理员可以看到本公司所有计划,admin没有权限控制
+		PageData userInfo = annualPlanService.getCompanyAndRoad(Jurisdiction.getUsername().toString());	//通过username获取公司和路段
+		//通过ROLE_ID获取角色
+		String roleName = annualPlanService.getRoleName(userInfo.get("ROLE_ID").toString());
+		pd = this.getPageData();
+		/*String keywords = pd.getString("keywords");				//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}*/
+		List<PageData>	varList = new ArrayList<PageData>();
+		if(!"控股集团管理员".equalsIgnoreCase(roleName)){
+			pd.put("COMPANY", userInfo.get("COMPANY"));
+			varList = annualPlanCompService.getPlanCompList(pd);	//列出年度计划列表
+			mv.setViewName("information/annualPlan/annualPlanComp/annualPlanComp_list");
+			mv.addObject("varList", varList);
+		}else{
+			List<String> yearList = new ArrayList<String>();
+			varList = annualPlanService.getKGCompYearList(pd);	//列出年度完成计划列表
+			yearList = getYearList(varList);
+			mv.setViewName("information/annualPlan/annualPlanComp/annualPlanComp_kg_list");
+			mv.addObject("varList", yearList);
+		}		
+		mv.addObject("pd", pd);
+		mv.addObject("userInfo", userInfo);
+		mv.addObject("roleName", roleName);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	private List<String> getYearList(List<PageData> varList){
+		List<String> yearList = new ArrayList<String>();
+		for(PageData pd : varList){
+			if(pd.get("STATUS") != null && pd.get("YEAR") != null){
+				if("审批通过".equalsIgnoreCase(pd.get("STATUS").toString()) && !yearList.contains(pd.get("YEAR").toString())){
+					yearList.add(pd.get("YEAR").toString());
+				}
+			}
+		}
+		return yearList;
+	}
+	
+	/**查询所选汇总表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showSumTable")
+	public ModelAndView showSumTable(Model model)throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("table", "oa_department_"+pd.getString("YEAR").toString());
+		mv.setViewName("information/annualPlan/annualSumTableComp/"+pd.get("type"));
+		List<PageData> varList = annualPlanCompService.getdata(pd);
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**查询所选汇总表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showDailySumTable")
+	public ModelAndView showDailySumTable(Model model)throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		mv.setViewName("information/annualPlan/annualSumTableComp/"+pd.get("type"));
+		pd.put("type", "highway_daily_plan_statable");
+		//动态获取oa_department
+		pd.put("table", "oa_department_"+pd.getString("YEAR").toString());
+		List<PageData> varList = annualPlanCompService.getDailyCompData(pd);
+		for(PageData tpd : varList){
+			List<Object> list = new ArrayList<Object>();
+			list.add(tpd.get("CLEAN_COST"));
+			list.add(tpd.get("PATROL_COST"));
+			list.add(tpd.get("SUBGRADE_COST"));
+			list.add(tpd.get("PAVEMENT_COST"));
+			list.add(tpd.get("BRIDGE_COST"));
+			list.add(tpd.get("CULVERT_COST"));
+			list.add(tpd.get("TUNNEL_COST"));
+			list.add(tpd.get("GREEN_COST"));
+			list.add(tpd.get("SAFE_COST"));
+			list.add(tpd.get("LINE_COST"));
+			list.add(tpd.get("CAR_COST"));
+			list.add(tpd.get("EMERGENCY_COST"));
+			BigDecimal totalCost =  new BigDecimal("0");
+			totalCost = addNums(list);
+			if(totalCost != BigDecimal.ZERO){
+				//小数位格式化
+				BigDecimal ten = new BigDecimal("10.00");
+        		if(totalCost.compareTo(ten)<1){
+        			totalCost = totalCost.setScale(1, BigDecimal.ROUND_HALF_UP);
+        		}
+        		else{
+        			totalCost = totalCost.setScale(0, BigDecimal.ROUND_HALF_UP);
+        		}	
+				tpd.put("TOTAL_COST", totalCost);
+			}
+		}
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	private BigDecimal addNums(List<Object> list){
+		BigDecimal result = new BigDecimal("0");
+		for(Object obj : list){
+			if(obj != null){
+				BigDecimal d = new BigDecimal("0");
+				d = getBigDecimal(obj);
+				result = result.add(d);
+			}
+		}
+		return result;
+	}
+	
+	  /**
+     * Object转BigDecimal类型
+     *
+     * @param value 要转的object类型
+     * @return 转成的BigDecimal类型数据
+     */
+    public static BigDecimal getBigDecimal(Object value) {
+        BigDecimal ret = null;
+        if (value != null) {
+            if (value instanceof BigDecimal) {
+                ret = (BigDecimal) value;
+            } else if (value instanceof String) {
+                ret = new BigDecimal((String) value);
+            } else if (value instanceof BigInteger) {
+                ret = new BigDecimal((BigInteger) value);
+            } else if (value instanceof Number) {
+                ret = new BigDecimal(((Number) value).doubleValue());
+            } else {
+                throw new ClassCastException("Not possible to coerce [" + value + "] from class " + value.getClass() + " into a BigDecimal.");
+            }
+        }
+        return ret;
+    }
+	
+	/**查询所选明细表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showDettTable")
+	public ModelAndView showDettTable(Model model)throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("table", "oa_department_"+pd.get("YEAR").toString());
+		mv.setViewName("information/annualPlan/annualSumTableComp/"+pd.get("type"));
+		List<PageData> dettList = annualPlanCompService.getDettData(pd);
+		
+		if(dettList ==null || dettList.equals(" ") || dettList.isEmpty() ) {
+			mv.addObject("dettList", "");
+		}else if("highway_reserve_fees_sumtable_view".equalsIgnoreCase(pd.get("type").toString())){
+			List<PageData> feeList = annualPlanCompService.getTotalFee(pd);
+			dettList = getReserveFee(dettList, feeList);			
+			mv.addObject("dettList", dettList);
+		}else {
+			LinkedHashMap<String, LinkedHashMap<String, ArrayList<PageData>>> varMap = new LinkedHashMap<String, LinkedHashMap<String, ArrayList<PageData>>>();
+			Double sumPlanCost = (double) 0;
+			Double sumActualCost = (double) 0;
+			String prevCompanyName = "";
+			LinkedHashMap<String, ArrayList<PageData>> xjroadMap = new LinkedHashMap<String, ArrayList<PageData>>();
+			for(PageData tpd : dettList){
+				String company = tpd.get("COMPANY").toString();
+				String road = tpd.get("ROAD").toString();
+				if(varMap.containsKey(company)){
+					LinkedHashMap<String, ArrayList<PageData>> roadMap = varMap.get(company);
+					if(roadMap != null && roadMap.containsKey(road)){
+						if(tpd.get("PLAN_COST")!=null){
+							double plan = Double.parseDouble(tpd.get("PLAN_COST").toString());
+							plan = formatNum(plan);
+							sumPlanCost += plan;
+						}
+						if(tpd.get("ACTUAL_COST")!=null){
+							double actual = Double.parseDouble(tpd.get("ACTUAL_COST").toString());
+							actual = formatNum(actual);
+							sumActualCost += actual;
+						}
+						ArrayList<PageData> pList = roadMap.get(road);
+						pList.add(tpd);
+					}else{
+						if(tpd.get("PLAN_COST")!=null){
+							double planc = Double.parseDouble(tpd.get("PLAN_COST").toString());
+							planc = formatNum(planc);
+							sumPlanCost += planc;
+						}
+						if(tpd.get("ACTUAL_COST")!=null){
+							double actualc = Double.parseDouble(tpd.get("ACTUAL_COST").toString());
+							actualc = formatNum(actualc);
+							sumActualCost += actualc;
+						}
+						ArrayList<PageData> npList = new ArrayList<PageData>();
+						npList.add(tpd);
+						roadMap.put(road, npList);					
+					}
+					xjroadMap = roadMap;
+					prevCompanyName = company;
+				}else{					
+					if(varMap.size() > 0){
+						ArrayList<PageData> xjList = new ArrayList<PageData>();
+						PageData xjPd = new PageData();
+						xjPd.put("COMPANY", prevCompanyName);
+						xjPd.put("ROAD", "小计");
+						xjPd.put("PROJECT_NAME", "");
+						xjPd.put("PROJECT_TYPE", "");
+						xjPd.put("SCALE", "");
+						xjPd.put("PLAN_QUANTITIES", "");
+						xjPd.put("PLAN_COST", sumPlanCost);
+						xjPd.put("ACTUAL_QUANTITIES", "");
+						xjPd.put("REMARKS", "");
+						xjPd.put("ACTUAL_COST", sumActualCost);
+						xjList.add(xjPd);
+						xjroadMap=varMap.get(prevCompanyName);
+						xjroadMap.put("小计", xjList);
+						varMap.put(prevCompanyName, xjroadMap);
+					}	
+					ArrayList<PageData> mpList = new ArrayList<PageData>();
+					LinkedHashMap<String, ArrayList<PageData>> mroadMap = new LinkedHashMap<String, ArrayList<PageData>>();
+					mpList.add(tpd);				
+					mroadMap.put(road, mpList);
+					varMap.put(company, mroadMap);
+					prevCompanyName = company;
+					sumPlanCost = (double) 0;
+					sumActualCost = (double) 0;
+					if(tpd.get("PLAN_COST")!=null){
+						double planco = Double.parseDouble(tpd.get("PLAN_COST").toString());
+						planco = formatNum(planco);
+						sumPlanCost += planco;
+					}
+					if(tpd.get("ACTUAL_COST")!=null){
+						double actualco = Double.parseDouble(tpd.get("ACTUAL_COST").toString());
+						actualco = formatNum(actualco);
+						sumActualCost += actualco;
+					}
+				}
+			}
+			
+			PageData lastxjPd = new PageData();
+			lastxjPd.put("COMPANY", prevCompanyName);
+			lastxjPd.put("ROAD", "小计");
+			lastxjPd.put("PROJECT_NAME", "");
+			lastxjPd.put("PROJECT_TYPE", "");
+			lastxjPd.put("SCALE", "");
+			lastxjPd.put("PLAN_QUANTITIES", "");
+			lastxjPd.put("PLAN_COST", sumPlanCost);
+			lastxjPd.put("ACTUAL_QUANTITIES", "");
+			lastxjPd.put("REMARKS", "");
+			lastxjPd.put("ACTUAL_COST", sumActualCost);
+			
+			List<PageData> dettListNew = new ArrayList<PageData>();
+			for(Entry<String, LinkedHashMap<String, java.util.ArrayList<PageData>>> centry : varMap.entrySet()){
+				HashMap<String, java.util.ArrayList<PageData>> roadMap = centry.getValue();
+				for(Entry<String, java.util.ArrayList<PageData>> rentry : roadMap.entrySet()){
+					ArrayList<PageData> projectList = rentry.getValue();
+					for(PageData ppd : projectList){
+						dettListNew.add(ppd);
+					}
+				}
+			}
+			dettListNew.add(lastxjPd);			
+			mv.addObject("dettList", dettListNew);
+		}
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	private List<PageData> getReserveFee(List<PageData> dettList, List<PageData> feeList) throws Exception{
+		LinkedHashMap<String, LinkedHashMap<String, ArrayList<PageData>>> varMap = new LinkedHashMap<String, LinkedHashMap<String, ArrayList<PageData>>>();
+		Double sumActualCost = (double) 0;
+		String prevCompanyName = "";
+		String year = "";
+		LinkedHashMap<String, ArrayList<PageData>> xjroadMap = new LinkedHashMap<String, ArrayList<PageData>>();
+		List<PageData> dettListNew = new ArrayList<PageData>();
+		for(PageData tpd : dettList){
+			String company = tpd.get("COMPANY").toString();
+			String road = tpd.get("ROAD").toString();	
+			Object roadfee = "";
+			if(varMap.containsKey(company)){
+				LinkedHashMap<String, ArrayList<PageData>> roadMap = varMap.get(company);
+				for(PageData feepd : feeList){
+					if(feepd.get("ROAD").equals(tpd.get("ROAD"))){
+						if(feepd.get("AUDIT_FEE") != null){
+							roadfee = feepd.get("AUDIT_FEE");
+						}else{
+							roadfee = feepd.get("TOTAL_COST");  //计划金额
+						}
+					}
+				}
+				if(roadMap != null && roadMap.containsKey(road)){
+					if(tpd.get("ACTUAL_COST")!=null){
+						sumActualCost += Double.parseDouble(tpd.get("ACTUAL_COST").toString());
+					}
+					ArrayList<PageData> pList = roadMap.get(road);
+					if(roadfee != ""){
+						tpd.put("ROAD", tpd.get("ROAD")+"("+ roadfee + ")");
+					}else{
+						tpd.put("ROAD", tpd.get("ROAD"));
+					}
+					pList.add(tpd);
+				}else{
+					if(tpd.get("ACTUAL_COST")!=null){
+						sumActualCost += Double.parseDouble(tpd.get("ACTUAL_COST").toString());
+					}
+					ArrayList<PageData> npList = new ArrayList<PageData>();
+					if(roadfee != ""){
+						tpd.put("ROAD", tpd.get("ROAD")+"("+ roadfee + ")");
+					}else{
+						tpd.put("ROAD", tpd.get("ROAD"));
+					}
+					npList.add(tpd);
+					roadMap.put(road, npList);					
+				}
+				xjroadMap = roadMap;
+				prevCompanyName = company;
+			}else{					
+				if(varMap.size() > 0){
+					ArrayList<PageData> xjList = new ArrayList<PageData>();
+					PageData xjPd = new PageData();
+					xjPd.put("COMPANY", prevCompanyName);					
+					xjPd.put("ROAD", "小计");
+					xjPd.put("PROJECT_NAME", "");
+					xjPd.put("REMARKS", "");
+					xjPd.put("ACTUAL_COST", sumActualCost);
+					xjList.add(xjPd);
+					xjroadMap = varMap.get(prevCompanyName);
+					xjroadMap.put("小计", xjList);
+					varMap.put(prevCompanyName, xjroadMap);
+				}	
+				ArrayList<PageData> mpList = new ArrayList<PageData>();
+				LinkedHashMap<String, ArrayList<PageData>> mroadMap = new LinkedHashMap<String, ArrayList<PageData>>();
+				for(PageData feepd : feeList){
+					if(feepd.get("ROAD").equals(tpd.get("ROAD"))){
+						if(feepd.get("AUDIT_FEE") != null){
+							roadfee = feepd.get("AUDIT_FEE");
+						}else{
+							roadfee = feepd.get("TOTAL_COST");  //计划金额
+						}
+					}
+				}
+				if(roadfee != ""){
+					tpd.put("ROAD", tpd.get("ROAD")+"("+ roadfee + ")");
+				}else{
+					tpd.put("ROAD", tpd.get("ROAD"));
+				}
+				mpList.add(tpd);				
+				mroadMap.put(road, mpList);
+				varMap.put(company, mroadMap);
+				prevCompanyName = company;
+				if(tpd.get("YEAR")!=null){
+					year = tpd.get("YEAR").toString();
+				}
+				//换公司名,sumActualCost重新计算
+				sumActualCost = (double) 0;
+				if(tpd.get("ACTUAL_COST")!=null){
+					sumActualCost += Double.parseDouble(tpd.get("ACTUAL_COST").toString());
+				}
+			}
+		}
+		
+		PageData lastxjPd = new PageData();
+		lastxjPd.put("COMPANY", prevCompanyName);
+		lastxjPd.put("YEAR", year);
+		String lastsumfee = annualPlanCompService.getSumTotalFee(lastxjPd);
+		if(lastsumfee != null){
+			lastxjPd.put("COMPANY", prevCompanyName+"("+lastsumfee+")");	
+		}
+		lastxjPd.put("ROAD", "小计");
+		lastxjPd.put("PROJECT_NAME", "");
+		lastxjPd.put("REMARKS", "");
+		lastxjPd.put("ACTUAL_COST", sumActualCost);
+		
+		for(Entry<String, LinkedHashMap<String, java.util.ArrayList<PageData>>> centry : varMap.entrySet()){
+			HashMap<String, java.util.ArrayList<PageData>> roadMap = centry.getValue();
+			for(Entry<String, java.util.ArrayList<PageData>> rentry : roadMap.entrySet()){
+				ArrayList<PageData> projectList = rentry.getValue();
+				for(PageData ppd : projectList){
+					String sumfee = annualPlanCompService.getSumTotalFee(ppd);
+					if(sumfee != null){
+						ppd.put("COMPANY", ppd.get("COMPANY")+"("+sumfee+")");
+					}else{
+						ppd.put("COMPANY", ppd.get("COMPANY"));
+					}
+					
+					dettListNew.add(ppd);
+				}
+			}
+		}
+		dettListNew.add(lastxjPd);
+		return dettListNew;
+	}	
+	
+	 /**查询显示报告列表和表格列表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showReportAndTable")
+	public ModelAndView showReportAndTable(Model model)throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		//String planID = pd.getString("ID");
+		List<PageData>	varList = annualPlanService.showReportList(pd);	//根据PLANID读取相关report信息
+		if(pd.get("ROLENAME").toString().equalsIgnoreCase("路段管理员")){
+			List<PageData> reportList = new ArrayList<PageData>();
+			String[] roads = pd.get("ROAD").toString().split(",");
+			for(int i = 0; i < roads.length; i++){
+				for(PageData reportInfo : varList){
+					if(reportInfo.get("ROAD_NAME") != null){
+						if(reportInfo.get("ROAD_NAME").toString().trim().equalsIgnoreCase(roads[i].trim())){
+							reportList.add(reportInfo);
+						}
+					}
+				}
+			}
+			varList = reportList;
+		}else{
+			List<PageData>	subReportList = new ArrayList<PageData>();
+			for(PageData var : varList){
+				if(var.get("ROAD_ID") == null){
+					mv.addObject("reportInfo", var);
+				}else{
+					subReportList.add(var);
+				}
+			}
+			varList = subReportList;
+		}
+		
+		String reportid = null;
+		String reportName = null;
+		//用于显示界面右边表格信息
+		List<PageData>	vartableList = null;
+		if(pd.get("REPORTID") != null){
+			for(PageData var : varList){
+				if(var.get("ID").toString().equalsIgnoreCase(pd.get("REPORTID").toString())){
+					reportName = var.get("NAME").toString();
+				}
+			}
+			vartableList = annualPlanService.getTableList(pd);	//根据reportID读取相关table信息	
+			mv.addObject("selectReport", reportName);
+		}else{
+			for(PageData reportpd : varList){
+				reportid = reportpd.getString("ID");
+				reportName = reportpd.getString("NAME");
+				if(reportName.indexOf("养护计划完成情况分报告") > 0){
+					pd.put("REPORTID", reportid);
+					pd.put("ROAD_ID", reportpd.get("ROAD_ID"));
+					pd.put("ROAD", reportpd.get("ROAD_NAME"));
+					vartableList = annualPlanService.getTableList(pd);	//根据reportID读取相关table信息	
+					mv.addObject("selectReport", reportName);
+					break;
+				}
+			}
+		}
+		mv.setViewName("information/annualPlan/annualPlanComp/annualPlanComp_report_list");
+		mv.addObject("varList", varList);
+		mv.addObject("vartableList", vartableList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	 /**查询显示表格列表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/getTableListInfo")
+	@ResponseBody
+	public Object getTableListInfo()throws Exception{
+		Map<String,Object> map = new HashMap<String,Object>();
+		String errInfo = "success";
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		List<PageData>  vartableList = annualPlanService.getTableList(pd);	//根据reportID读取相关table信息	
+//		mv.setViewName("information/annualPlan/annualPlan_report_list");
+//		mv.addObject("vartableList", vartableList);
+//		mv.addObject("data", vartableList);
+//		mv.addObject("pd", pd);
+//		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+//		return mv;
+		List<PageData> pdList = new ArrayList<PageData>();
+		for(PageData tpd :vartableList){
+			PageData pdf = new PageData();
+			pdf.put("NAME", tpd.get("NAME"));
+			pdf.put("COMPANY_ID", tpd.get("COMPANY_ID"));
+			pdf.put("COMPANY_NAME", tpd.get("COMPANY_NAME"));
+			pdf.put("YEAR", tpd.get("YEAR"));
+			pdf.put("ROAD_ID", tpd.get("ROAD_ID"));
+			pdf.put("ROAD_NAME", tpd.get("ROAD_NAME"));
+			pdf.put("TYPE", tpd.get("TYPE"));
+			pdf.put("CTIME", tpd.get("CTIME"));
+			pdf.put("MTIME", tpd.get("MTIME"));
+			pdf.put("STATUS", tpd.get("STATUS"));
+			pdList.add(pdf);
+		}
+		map.put("list", pdList);
+		map.put("result", errInfo);				//返回结果
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	 /**显示、编辑子表格内容
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showTableRecod")
+	public ModelAndView showTableRecod()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		List<PageData>	varList = annualPlanService.showTableRecod(pd);	//根据ID读取
+		mv.setViewName("information/annualPlan/annualPlan_edit");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}	
+	
+	/**去新增页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goAdd")
+	public ModelAndView goAdd()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		//List<PageData>	varList = annualPlanService.getReportType(pd);	//获取报告类型
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
+        Date date = new Date();
+        String currentYear = sdf.format(date);
+        List<String> yearItems = new ArrayList<String>();
+        for(int i= -4; i < 6; i++){
+        	Integer intyear = Integer.parseInt(currentYear);
+        	yearItems.add(String.valueOf(intyear + i));
+        }
+		mv.setViewName("information/annualPlan/annualPlanComp/annualPlanComp_add");
+		//mv.addObject("varList", varList);
+		mv.addObject("msg", "save");
+		mv.addObject("yearList", yearItems);
+		mv.addObject("currentYear", currentYear);
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**新增报告和子表格的关系
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/save")
+	public ModelAndView save() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"新增annualPlanComp");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
+		List<PageData> reportList = new ArrayList<PageData>();
+		List<PageData> tableList = new ArrayList<PageData>();
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String planID = this.get32UUID();
+		pd.put("ID", planID);//主键
+		pd.put("NAME", pd.get("YEAR")+"年"+pd.get("COMPANY")+"年度养护计划完成情况");
+		//设置查询oa_department的动态表名
+		PageData cpPd = new PageData();
+		String oa_department_table = "oa_department_"+pd.get("YEAR");
+		cpPd.put("table", oa_department_table);
+		cpPd.put("NAME", pd.get("COMPANY").toString());
+		PageData companypd = (PageData)annualPlanService.getCompanyID(cpPd);  //通过路公司名获取路公司ID和父节点id
+		String companyID = companypd.getString("BIANMA");
+		String DEPARTMENT_ID = companypd.getString("DEPARTMENT_ID");		
+		pd.put("COMPANY_ID", companyID);
+		pd.put("COMPANY_NAME", pd.get("COMPANY"));
+		pd.put("DEPARTMENT_ID", DEPARTMENT_ID);
+		pd.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+		pd.put("MTIME", Tools.date2Str(new Date()));	//修改时间
+		pd.put("STATUS", "新建");	//创建时间
+		annualPlanService.addAnnualPlan(pd);   //新建年度计划
+		pd.put("NAME", pd.get("YEAR")+"年"+pd.get("COMPANY")+"年度养护计划完成情况总报告");
+		
+		String reportID = this.get32UUID();
+		pd.put("ID", reportID);//主键
+		pd.put("PLANID", planID);
+		reportList.add(pd);
+		
+		List<PageData> tableTypeList = annualPlanService.getTableType(); //获取表格类型	
+		for(PageData tableInfo : tableTypeList){
+			if(tableInfo.get("REPORT_ID").toString().equalsIgnoreCase("1")){
+				PageData tablepd = new PageData();	
+				tablepd.put("REPORTID", reportID);
+				if(tableInfo.getString("TABLE_NAME").indexOf("计划完成情况") > 0){
+					String tempYear = String.valueOf(Integer.parseInt(pd.get("YEAR").toString()) - 1);
+					tablepd.put("YEAR", tempYear);
+					tablepd.put("NAME", tempYear+"年"+pd.get("COMPANY")+tableInfo.getString("TABLE_NAME"));
+				}else{
+					tablepd.put("YEAR", pd.get("YEAR"));
+					tablepd.put("NAME", pd.get("YEAR")+"年"+pd.get("COMPANY")+tableInfo.getString("TABLE_NAME"));
+				}
+				tablepd.put("TYPE", tableInfo.getString("TABLE_TYPE"));
+				tablepd.put("COMPANY_ID", companyID);
+				tablepd.put("COMPANY_NAME", pd.get("COMPANY"));				
+				tablepd.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+				tablepd.put("MTIME", Tools.date2Str(new Date()));	//修改时间
+				tablepd.put("STATUS", "自动统计");	//创建时间
+				tablepd.put("ROAD_NAME", "");
+				tablepd.put("ROAD_ID", "");
+				tableList.add(tablepd);
+				//annualPlanService.addAnnualTable(tablepd);
+			}
+		}
+		cpPd.put("DEPARTMENT_ID", DEPARTMENT_ID);
+		List<PageData> roadpdList = annualPlanService.getRoadInfo(cpPd); //通过父节点ID获取路段信息		
+		for(PageData reportinfo : roadpdList){
+			PageData reportpd = new PageData();
+			reportID = this.get32UUID();
+			reportpd.put("ID", reportID);//主键
+			reportpd.put("PLANID", planID);
+			reportpd.put("ROAD_NAME", reportinfo.getString("NAME"));
+			reportpd.put("ROAD_ID", reportinfo.getString("BIANMA"));
+			reportpd.put("NAME", pd.get("YEAR")+"年"+pd.get("COMPANY")+reportinfo.getString("NAME")+"年度养护计划分报告");
+			reportpd.put("COMPANY_ID", companyID);
+			reportpd.put("COMPANY_NAME", pd.get("COMPANY"));
+			reportpd.put("DEPARTMENT_ID", DEPARTMENT_ID);
+			reportpd.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+			reportpd.put("MTIME", Tools.date2Str(new Date()));	//修改时间
+			reportpd.put("STATUS", "新建");	//创建时间
+			reportList.add(reportpd);
+			//annualPlanService.addAnnualReport(pd);   //新建年度分报告列表		
+			
+			for(PageData tableInfo : tableTypeList){
+				if(tableInfo.get("REPORT_ID").toString().equalsIgnoreCase("2")){
+					PageData tablepdroad = new PageData();	
+					tablepdroad.put("REPORTID", reportID);
+					if(tableInfo.getString("TABLE_NAME").indexOf("计划完成情况") > 0 || tableInfo.getString("TABLE_NAME").indexOf("预备费使用情况汇总表") > 0){
+						String tempYear = String.valueOf(Integer.parseInt(pd.get("YEAR").toString()) - 1);
+						tablepdroad.put("YEAR", tempYear);
+						tablepdroad.put("NAME", tempYear + "年"+pd.get("COMPANY")+reportinfo.getString("NAME")+tableInfo.getString("TABLE_NAME"));
+					}else{
+						tablepdroad.put("YEAR", pd.get("YEAR"));
+						tablepdroad.put("NAME", pd.get("YEAR")+"年"+pd.get("COMPANY")+reportinfo.getString("NAME")+tableInfo.getString("TABLE_NAME"));
+					}
+					tablepdroad.put("TYPE", tableInfo.getString("TABLE_TYPE"));
+					tablepdroad.put("COMPANY_ID", companyID);
+					tablepdroad.put("COMPANY_NAME", pd.get("COMPANY"));
+					tablepdroad.put("ROAD_NAME", reportinfo.getString("NAME"));
+					tablepdroad.put("ROAD_ID", reportinfo.getString("BIANMA"));					
+					tablepdroad.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+					tablepdroad.put("MTIME", Tools.date2Str(new Date()));	//修改时间
+					newTables.add("高速公路预防养护计划立项详表");
+					newTables.add("高速公路修复养护计划立项详表");
+					newTables.add("高速公路试验检测项目计划立项详表");
+					newTables.add("高速公路科研项目计划立项详表");
+					newTables.add("高速公路设备大修项目计划立项详表");
+					newTables.add("高速公路专项养护计划立项详表");
+					newTables.add("高速公路道路技术状况现状统计表");
+					newTables.add("高速公路交通等信息综合统计表");
+					newTables.add("高速公路日常养护计划统计表");
+					newTables.add("高速公路预备费使用情况汇总表");
+					if(newTables.contains(tableInfo.getString("TABLE_NAME").toString())){
+						tablepdroad.put("STATUS", "新建");
+					}else{
+						tablepdroad.put("STATUS", "自动统计");
+					}
+					tableList.add(tablepdroad);
+				}
+			}
+		}
+		annualPlanService.addAnnualReport(reportList);
+		annualPlanService.addAnnualTable(tableList);
+		mv.addObject("pd", pd);
+	    mv.setViewName("save_result");	
+		return mv;
+	}
+	
+	/**判断该年养护完成情况是否已存在
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/hasPlan")
+	@ResponseBody
+	public Object hasPlan()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String msg = "success";
+		//查询系统已存在的养护计划
+		List<PageData> planPd = annualPlanCompService.getPlanCompByCompanyAndYear(pd);
+		if(planPd.size() > 0){
+			msg = "已存在相同的养护完成情况,新建失败";
+		}
+		map.put("result", msg);
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**删除年度计划和其下面的报告、表格
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delAnnualPlan")
+	@ResponseBody
+	public Object delAnnualPlan()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		//PageData planPd = annualPlanService.getYearAndCompanyByID(pd);  //通过ANNUALPLAN_ID获取报告的年份和公司
+		annualPlanCompService.delAnnualCompPlan(pd);	//删除年度计划
+		List<String> reportIDList = annualPlanService.getReportID(pd);  //获取年度计划对应的报告ID
+		annualPlanService.delReport(pd); //删除报告
+		annualPlanService.delTables(reportIDList); //删除表格列表
+		map.put("result", "success");
+		return AppUtil.returnObject(new PageData(), map);
+	}	
+	
+	/**新增立项详表新增弹出页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/addNewTablePanel")
+	public ModelAndView addNewTablePanel()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		List<PageData> varList = annualPlanService.getDetTableType();	//获取立项详表报告类型
+		//通过reportid获取对应的路段信息
+		PageData roadInfo = annualPlanService.getRoadInfoByReportID(pd);
+		pd.put("ROAD_NAME", roadInfo.get("ROAD"));
+		pd.put("ROAD_ID", roadInfo.get("ROAD_ID"));
+		mv.setViewName("information/annualPlan/annualPlan_addNewTable");
+		mv.addObject("varList", varList);
+		mv.addObject("msg", "addNewTable");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**只有路段分报告可以新增立项详表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/addNewTable")
+	@ResponseBody
+	public Object addNewTable()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		//List<PageData> varList = annualPlanService.getDetTableType();	//获取立项详表报告类型
+		//通过reportid获取对应的路段信息
+		try{
+			PageData roadInfo = annualPlanService.getRoadInfoByReportID(pd);
+			pd.put("ROAD_NAME", roadInfo.get("ROAD"));
+			pd.put("ROAD_ID", roadInfo.get("ROAD_ID"));
+//			mv.setViewName("information/annualPlan/annualPlan_addNewTable");
+//			mv.addObject("varList", varList);
+//			mv.addObject("pd", pd);
+			map.put("result", "success");			
+		}catch(Exception e){
+			map.put("result", "只有路段分报告可以增加立项详表");
+		}		
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**显示立项详表新增弹出页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showNewTable")
+	public ModelAndView showNewTable()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		List<PageData> varList = annualPlanService.getDetTableType();	//获取立项详表报告类型
+		mv.setViewName("information/annualPlan/annualPlan_addNewTable");
+		mv.addObject("varList", varList);
+		mv.addObject("msg", "save");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	@RequestMapping(value="/hasBetTable")
+	@ResponseBody
+	public Object hasBetTable() throws Exception{
+		PageData pd = new PageData();
+	    pd = this.getPageData();
+	    String msg = "success";
+	    String tableName = pd.get("YEAR")+"年"+ pd.get("COMPANY")+pd.get("ROAD") + pd.get("Table_Name");
+	    pd.put("NAME", tableName);
+	    List<PageData> tableInfo = annualPlanService.getTableInfo(pd);
+	    if(tableInfo.size() > 0){
+	    	msg = "已存在相同的立项表";
+	    }
+		Map<String,Object> map = new HashMap<String,Object>();
+	    map.put("msg",msg);
+        return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	@RequestMapping(value="/changeTableName")
+	@ResponseBody
+	public Object changeTableName() throws Exception{
+		PageData pd = new PageData();
+	    pd = this.getPageData();
+	    String name = pd.getString("PROJECT_NAME");
+	    pd.put("NAME", name);
+	    annualPlanService.changeTableName(pd);	//修改立项详表名称
+		Map<String,Object> map = new HashMap<String,Object>();
+	    map.put("msg","success");
+        return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	@RequestMapping(value="/addNewTableInfo")
+	@ResponseBody
+	public Object addNewTableInfo() throws Exception{
+		PageData pd = new PageData();
+	    pd = this.getPageData();
+	    String name = pd.getString("PROJECT_NAME");
+	    pd.put("NAME", name);
+	    //获取reportId "2017年高管中心宁连、宁洛及金马高速年度养护计划分报告"
+    	String reportName = pd.getString("YEAR")+"年" + pd.getString("COMPANY") + pd.getString("ROAD") + "年度养护计划分报告";
+    	String reportId = annualPlanService.getTableReportID(reportName); //get annual_report_list id
+    	//在annual_table_list表中新增一条立项详情表记录       
+    	pd.put("REPORTID", reportId);
+    	pd.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+		pd.put("MTIME", Tools.date2Str(new Date()));	//修改时间
+	    annualPlanService.addNewTableInfo(pd);	//insert annual_table_list新增立项详表
+		Map<String,Object> map = new HashMap<String,Object>();
+	    map.put("msg","success");
+        return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**删除立项表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delTable")
+	@ResponseBody
+	public Object delTable()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String msg = "删除立项表成功";
+		try{
+			annualPlanService.delRecordFromTable(pd); //删除table_lis中的表数据
+			pd.put("TABLE_NAME", pd.get("TYPE"));
+			if(pd.get("NAME") != null){
+				if(pd.get("NAME").toString().contains("---")){
+					pd.put("PROJECT_NAME", pd.get("NAME").toString().split("---")[1]);
+				}
+			}			
+			annualPlanService.delModifyRecord(pd); //删除留痕表中的主表数据
+			pd.put("TABLE_NAME", pd.get("TYPE") + "_cost");
+			annualPlanService.delModifyRecord(pd); //删除留痕表中的主表关联的cost表数据
+		}catch(Exception e){
+			msg = "删除立项表失败";
+		}
+		map.put("result", msg);
+		return AppUtil.returnObject(new PageData(), map);
+	}
+
+	public static void main(String[] args) {
+		// TODO Auto-generated method stub
+
+	}
+
+    @RequestMapping("/exporthz")
+    public String exporthz(HttpServletRequest request,HttpServletResponse response) throws Exception{
+        String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
+        ModelAndView mv = this.getModelAndView();
+        PageData pd = new PageData();
+        pd = this.getPageData();
+        List<String> paths = new ArrayList<String>();
+        List<String> result = new ArrayList<String>();
+        //excel文档
+        List<PageData> exceldata = setMultExcelData(pd);
+        MultExcelUtils ex = new MultExcelUtils();
+        String excelpath = ex.exportExcel(pd.getString("exportname")+".xlsx",path,response,exceldata);
+        result.add(excelpath);
+        //zip压缩下载
+        DownloadZip.downloadZip(response,request,result,path);
+        return null;
+    }
+    
+    public List<PageData> setMultExcelData(PageData param) throws Exception {
+        List<PageData> result = new ArrayList<PageData>();
+        String[] modelNames = {"养护计划完成情况汇总","日常养护计划完成情况汇总","预防养护计划完成情况汇总",
+                "修复养护计划完成情况汇总","专项养护计划完成情况汇总","应急养护计划完成情况汇总",
+                "试验检测项目计划完成情况汇总","科研项目计划完成情况汇总"};
+        String[] keyStrs = {
+                "DESIGN_KM,CARE_KM,DAILY_DESIGN,DAILY_COMPLETE,DAILY_RATIO,DAILY_COMPLETE_KM,"
+                        + "MINOR_PREVENTION_DESIGN,MINOR_PREVENTION_COMPLETE,MINOR_PREVENTION_RATIO,MIDDLE_PREVENTION_DESIGN,MIDDLE_PREVENTION_COMPLETE,MIDDLE_PREVENTION_RATIO,"
+                        + "OVERHAUL_PREVENTION_DESIGN,OVERHAUL_PREVENTION_COMPLETE,OVERHAUL_PREVENTION_RATIO,PREVENTION_DESIGN_TOTAL,PREVENTION_COMPLETE_TOTAL,PREVENTION_RATIO_TOTAL,"
+                        + "MINOR_REPAIR_DESIGN,MINOR_REPAIR_COMPLETE,MINOR_REPAIR_RATIO,MIDDLE_REPAIR_DESIGN,MIDDLE_REPAIR_COMPLETE,MIDDLE_REPAIR_RATIO,OVERHAUL_DESIGN,OVERHAUL_COMPLETE,OVERHAUL_REPAIR_RATIO,"
+                        + "REPAIR_DESIGN_TOTAL,REPAIR_COMPLETE_TOTAL,REPAIR_RATIO_TOTAL,"
+                        + "SPECIAL_DESIGN,SPECIAL_COMPLETE,SPECIAL_RATIO,"
+                        + "EMERGENCY_DESIGN,EMERGENCY_COMPLETE,EMERGENCY_RATIO,"
+                        + "TEST_DESIGN,TEST_COMPLETE,TEST_RATIO,"
+                        + "SCIENTIFIC_DESIGN,SCIENTIFIC_COMPLETE,SCIENTIFIC_RATIO,"
+                        + "DEVICE_DESIGN,DEVICE_COMPLETE,DEVICE_RATIO,"
+                        + "RESERVE_DESIGN,RESERVE_COMPLETE,RESERVE_RATIO,"
+                        + "DESIGN_TOTAL,COMPLETE_TOTAL,RATIO_TOTAL"
+                ,"DESIGN_KM,CARE_KM,PLAN_COST,"
+                                + "CLEAN_COST,PATROL_COST,SUBGRADE_COST,PAVEMENT_COST,BRIDGE_COST,CULVERT_COST,TUNNEL_COST,SAFE_COST,LINE_COST,GREEN_COST,CAR_COST,EMERGENCY_COST,TOTAL_COST,COST_KM,COMPLETE_RATIO"
+                ,"DESIGN_KM,CARE_KM,PLAN_COST,"
+                        + "MIN_SUBGRADE_COST,MIN_PAVEMENT_COST,MIN_BRIDGE_COST,MIN_TUNNEL_COST,MIN_TOTAL_COST,"
+                        + "MID_SUBGRADE_COST,MID_PAVEMENT_COST,MID_BRIDGE_COST,MID_TUNNEL_COST,MID_TOTAL_COST,"
+                        + "MAX_SUBGRADE_COST,MAX_PAVEMENT_COST,MAX_BRIDGE_COST,MAX_TUNNEL_COST,MAX_TOTAL_COST,"
+                        + "SUBGRADE_COST_TOTAL,PAVEMENT_COST_TOTAL,BRIDGE_COST_TOTAL,TUNNEL_COST_TOTAL,COST_TOTAL,COMPLETE_RATIO"
+                ,"DESIGN_KM,CARE_KM,PLAN_COST,"
+                        + "MIN_SUBGRADE_COST,MIN_PAVEMENT_COST,MIN_BRIDGE_COST,MIN_TUNNEL_COST,MIN_TRAFFIC_SAFE_COST,MIN_ROADSIDE_COST,MIN_GREEN_COST,MIN_OTHER_COST,MIN_TOTAL_COST,"
+                        + "MID_SUBGRADE_COST,MID_PAVEMENT_COST,MID_BRIDGE_COST,MID_TUNNEL_COST,MID_TRAFFIC_SAFE_COST,MID_ROADSIDE_COST,MID_GREEN_COST,MID_OTHER_COST,MID_TOTAL_COST,"
+                        + "MAX_SUBGRADE_COST,MAX_PAVEMENT_COST,MAX_BRIDGE_COST,MAX_TUNNEL_COST,MAX_TRAFFIC_SAFE_COST,MAX_ROADSIDE_COST,MAX_GREEN_COST,MAX_OTHER_COST,MAX_TOTAL_COST,"
+                        + "SUBGRADE_COST_TOTAL,PAVEMENT_COST_TOTAL,BRIDGE_COST_TOTAL,TUNNEL_COST_TOTAL,TRAFFIC_SAFE_COST_TOTAL,ROADSIDE_SAFE_COST_TOTAL,GREEN_COST_TOTAL,OTHER_COST_TOTAL,TOTAL_COST,COMPLETE_RATIO"
+                ,"DESIGN_KM,CARE_KM,PLAN_COST,"
+                        + "SUBGRADE_COST,PAVEMENT_COST,BRIDGE_COST,TUNNEL_COST,TRAFFIC_SAFE_COST,ROADSIDE_COST,GREEN_COST,OTHER_COST,TOTAL_COST,COMPLETE_RATIO"
+                ,"DESIGN_KM,CARE_KM,PLAN_COST,"
+                        + "SUBGRADE_COST,PAVEMENT_COST,BRIDGE_COST,TUNNEL_COST,TRAFFIC_SAFE_COST,ROADSIDE_COST,GREEN_COST,OTHER_COST,TOTAL_COST,COMPLETE_RATIO"
+                ,"DESIGN_KM,CARE_KM,PLAN_COST,"
+                        + "SUBGRADE_COST,PAVEMENT_COST,BRIDGE_COST,TUNNEL_COST,TRAFFIC_SAFE_COST,ROADSIDE_COST,OTHER_COST,TOTAL_COST,COMPLETE_RATIO"
+                ,"DESIGN_KM,CARE_KM,PLAN_COST,"
+                        + "SUBGRADE_COST,PAVEMENT_COST,BRIDGE_COST,OTHER_COST,TOTAL_COST,COMPLETE_RATIO"
+                
+        };
+        String[] tableNames = {"annual_comp_sumtable_view","annual_daily_comp_sumtable_view","annual_prevention_comp_sumtable_view",
+                "annual_repair_comp_sumtable_view","annual_special_comp_sumtable_view","annual_emergency_comp_sumtable_view",
+                "annual_test_comp_sumtable_view","annual_scientific_comp_sumtable_view"};
+        int[] startRowIndexs = {4,3,4,4,3,3,3,3};
+        int[] tabletype = {6,6,6,6,6,6,6,6};
+        int[] totalRange = {2,2,2,2,2,2,2,2};
+        String[][][] funcArrys = {
+        		{
+        			{"percent","DAILY_RATIO","IF(ISERROR((G#row#/F#row#)*100),\"\",(G#row#/F#row#)*100)"},
+        			{"percent","DAILY_COMPLETE_KM","ROUND(IF(ISERROR((G#row#/E#row#)),\"0.0\",(G#row#/E#row#)),1)"},
+        			{"percent","MINOR_PREVENTION_RATIO","IF(ISERROR((K#row#/J#row#)*100),\"\",(K#row#/J#row#)*100)"},
+        			{"percent","MIDDLE_PREVENTION_RATIO","IF(ISERROR((N#row#/M#row#)*100),\"\",(N#row#/M#row#)*100)"},
+        			{"percent","OVERHAUL_PREVENTION_RATIO","IF(ISERROR((Q#row#/P#row#)*100),\"\",(Q#row#/P#row#)*100)"},
+        			{"sum","PREVENTION_DESIGN_TOTAL","IF(SUM(J#row#,M#row#,P#row#)<10,ROUND(SUM(J#row#,M#row#,P#row#),1),ROUND(SUM(J#row#,M#row#,P#row#),0))"},
+        			{"sum","PREVENTION_COMPLETE_TOTAL","IF(SUM(K#row#,N#row#,Q#row#)<10,ROUND(SUM(K#row#,N#row#,Q#row#),1),ROUND(SUM(K#row#,N#row#,Q#row#),0))"},
+        			{"percent","PREVENTION_RATIO_TOTAL","IF(ISERROR((T#row#/S#row#)*100),\"\",(T#row#/S#row#)*100)"},
+        			{"percent","MINOR_REPAIR_RATIO","IF(ISERROR((W#row#/V#row#)*100),\"\",(W#row#/V#row#)*100)"},
+        			{"percent","MIDDLE_REPAIR_RATIO","IF(ISERROR((Z#row#/Y#row#)*100),\"\",(Z#row#/Y#row#)*100)"},
+        			{"percent","OVERHAUL_REPAIR_RATIO","IF(ISERROR((AC#row#/AB#row#)*100),\"\",(AC#row#/AB#row#)*100)"},
+        			{"sum","REPAIR_DESIGN_TOTAL","IF(SUM(V#row#,Y#row#,AB#row#)<10,ROUND(SUM(V#row#,Y#row#,AB#row#),1),ROUND(SUM(V#row#,Y#row#,AB#row#),0))"},
+        			{"sum","REPAIR_COMPLETE_TOTAL","IF(SUM(W#row#,Z#row#,AC#row#)<10,ROUND(SUM(W#row#,Z#row#,AC#row#),1),ROUND(SUM(W#row#,Z#row#,AC#row#),0))"},
+        			{"percent","REPAIR_RATIO_TOTAL","IF(ISERROR((AF#row#/AE#row#)*100),\"\",(AF#row#/AE#row#)*100)"},
+        			{"percent","SPECIAL_RATIO","IF(ISERROR((AI#row#/AH#row#)*100),\"\",(AI#row#/AH#row#)*100)"},
+        			{"percent","EMERGENCY_RATIO","IF(ISERROR((AL#row#/AK#row#)*100),\"\",(AL#row#/AK#row#)*100)"},
+        			{"percent","TEST_RATIO","IF(ISERROR((AO#row#/AN#row#)*100),\"\",(AO#row#/AN#row#)*100)"},
+        			{"percent","SCIENTIFIC_RATIO","IF(ISERROR((AR#row#/AQ#row#)*100),\"\",(AR#row#/AQ#row#)*100)"},
+        			{"percent","DEVICE_RATIO","IF(ISERROR((AU#row#/AT#row#)*100),\"\",(AU#row#/AT#row#)*100)"},
+        			{"percent","RESERVE_RATIO","IF(ISERROR((AX#row#/AW#row#)*100),\"\",(AX#row#/AW#row#)*100)"},
+        			{"sum","DESIGN_TOTAL","IF(SUM(F#row#,S#row#,AE#row#,AH#row#,AK#row#,AN#row#,AQ#row#,AT#row#,AW#row#)<10,ROUND(SUM(F#row#,S#row#,AE#row#,AH#row#,AK#row#,AN#row#,AQ#row#,AT#row#,AW#row#),1),ROUND(SUM(F#row#,S#row#,AE#row#,AH#row#,AK#row#,AN#row#,AQ#row#,AT#row#,AW#row#),0))"},
+        			{"sum","COMPLETE_TOTAL","IF(SUM(G#row#,T#row#,AF#row#,AI#row#,AL#row#,AO#row#,AR#row#,AU#row#,AX#row#)<10,ROUND(SUM(G#row#,T#row#,AF#row#,AI#row#,AL#row#,AO#row#,AR#row#,AU#row#,AX#row#),1),ROUND(SUM(G#row#,T#row#,AF#row#,AI#row#,AL#row#,AO#row#,AR#row#,AU#row#,AX#row#),0))"},
+        			{"percent","RATIO_TOTAL","IF(ISERROR((BA#row#/AZ#row#)*100),\"\",(BA#row#/AZ#row#)*100)"}
+        		},{
+        			{"percent","COST_KM","ROUND(IF(ISERROR((S#row#/E#row#)),\"0.0\",(S#row#/E#row#)),1)"},
+        			{"percent","COMPLETE_RATIO","IF(ISERROR((S#row#/F#row#)*100),\"\",(S#row#/F#row#)*100)"}
+        		},
+        		{
+        			{"percent","COMPLETE_RATIO","IF(ISERROR((Z#row#/F#row#)*100),\"\",(Z#row#/F#row#)*100)"}
+        		},
+        		{
+        			{"percent","COMPLETE_RATIO","IF(ISERROR((AP#row#/F#row#)*100),\"\",(AP#row#/F#row#)*100)"}
+        		},{
+        			{"percent","COMPLETE_RATIO","IF(ISERROR((O#row#/F#row#)*100),\"\",(O#row#/F#row#)*100)"}
+        		},{
+        			{"percent","COMPLETE_RATIO","IF(ISERROR((O#row#/F#row#)*100),\"\",(O#row#/F#row#)*100)"}
+        		},{
+        			{"percent","COMPLETE_RATIO","IF(ISERROR((N#row#/F#row#)*100),\"\",(N#row#/F#row#)*100)"}
+        		},{
+        			{"percent","COMPLETE_RATIO","IF(ISERROR((K#row#/F#row#)*100),\"\",(K#row#/F#row#)*100)"}
+        		}};
+        PageData pd = new PageData();
+        for (int i = 0; i < tableNames.length; i++) {
+            PageData data = new PageData();
+            pd.put("type", tableNames[i]);
+            pd.put("YEAR", param.get("YEAR"));
+            pd.put("table", "oa_department_"+param.get("YEAR").toString());
+            List<PageData> list = annualPlanCompService.getcompletehzdata(pd);
+           /* //养护计划完成情况汇总
+        	if(i==0){
+        		list = TotalAmountUtil.completeYhjhTotalAmount(list);
+        		//格式化数据
+            	//list = TotalAmountUtil.formatDecimalPlace(list,"1");
+        	}*/
+        	
+            data.put("list", list);
+            data.put("modelName", modelNames[i]);
+            data.put("keyStr", keyStrs[i]);
+            data.put("startRowIndex", startRowIndexs[i]);
+            data.put("tabletype", tabletype[i]);
+            data.put("funcArry", funcArrys[i]);
+            data.put("totalRange", totalRange[i]);
+            data.put("pd", pd);
+            result.add(data);
+        }
+        return result;
+    }
+    
+    @RequestMapping("/exportmx")
+    public String exportmx(HttpServletRequest request,HttpServletResponse response) throws Exception{
+        String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
+        ModelAndView mv = this.getModelAndView();
+        PageData pd = new PageData();
+        pd = this.getPageData();
+        List<String> paths = new ArrayList<String>();
+        List<String> result = new ArrayList<String>();
+        //excel文档
+        List<PageData> exceldata = setMxExcelData(pd);
+        MultExcelUtils ex = new MultExcelUtils();
+        String excelpath = ex.exportExcel(pd.getString("exportname")+".xlsx",path,response,exceldata);
+        result.add(excelpath);
+        //zip压缩下载
+        DownloadZip.downloadZip(response,request,result,path);
+        return null;
+    }
+    
+    public List<PageData> setMxExcelData(PageData param) throws Exception {
+        List<PageData> result = new ArrayList<PageData>();
+        String[] modelNames = {"预防养护计划完成情况汇总表","修复养护计划完成情况汇总表","专项养护计划完成情况汇总表","应急养护计划完成情况汇总表",
+        		"试验检测项目计划完成情况汇总表","科研项目计划完成情况汇总表","设备大修项目计划完成情况汇总表","预备费使用情况汇总表"};
+        String[] keyStrs = {
+        	"PROJECT_NAME,PROJECT_TYPE,SCALE,PLAN_QUANTITIES,PLAN_COST,ACTUAL_QUANTITIES,ACTUAL_COST,PERCENT,REMARKS"
+        	,"PROJECT_NAME,PROJECT_TYPE,SCALE,PLAN_QUANTITIES,PLAN_COST,ACTUAL_QUANTITIES,ACTUAL_COST,PERCENT,REMARKS"
+        	,"SPECIAL_PROJECT_NAME,PLAN_COST,ACTUAL_COST,PERCENT,COMPLETE_DESCRIBE,REMARKS"
+            ,"PROJECT_NAME,PROJECT_TYPE,SCALE,PLAN_QUANTITIES,PLAN_COST,ACTUAL_QUANTITIES,ACTUAL_COST,PERCENT,REMARKS"
+            ,"PROJECT_NAME,PROJECT_TYPE,PLAN_COST,ACTUAL_COST,PERCENT,COMPLETE_DESCRIBE,REMARKS"
+            ,"PROJECT_NAME,PROJECT_TYPE,PLAN_COST,ACTUAL_COST,PERCENT,COMPLETE_DESCRIBE,REMARKS"
+            ,"PROJECT_NAME,PROJECT_TYPE,PLAN_COST,ACTUAL_COST,PERCENT,COMPLETE_DESCRIBE,REMARKS"
+            ,"PROJECT_NAME,ACTUAL_COST,COMPLETE_DESCRIBE,REMARKS"
+            
+        };
+        String[] tableNames = {
+        		"highway_prevention_plan_sumtable_view","highway_repair_comp_sumtable_view",
+        		"highway_special_comp_sumtable_view","highway_emergency_comp_sumtable_view","highway_test_comp_sumtable_view",
+        		"highway_scientific_comp_sumtable_view","highway_equipment_overhaul_comp_sumtable_view","highway_reserve_fees_sumtable_view"};
+        int[] startRowIndexs = {4,4,3,4,3,3,3,4};
+        int[] tabletype = {6,6,6,6,6,6,6,7};
+        int[] totalRange = {6,6,3,6,4,4,4,4};
+        String[][][] funcArrys = {
+        		{
+                    {"null","ACTUAL_QUANTITIES","\"\""}
+                    ,{"percent","PERCENT","IF(ISERROR((J#row#/H#row#)*100),\"\",(J#row#/H#row#)*100)"}
+                    ,{"null","REMARKS","\"\""}
+                },
+        		
+        		{
+                    {"null","ACTUAL_QUANTITIES","\"\""}
+                    ,{"percent","PERCENT","IF(ISERROR((J#row#/H#row#)*100),\"\",(J#row#/H#row#)*100)"}
+                    ,{"null","REMARKS","\"\""}
+                },
+        		{
+                    {"percent","PERCENT","IF(ISERROR((F#row#/E#row#)*100),\"\",(F#row#/E#row#)*100)"}
+                    ,{"null","COMPLETE_DESCRIBE","\"\""}
+                    ,{"null","REMARKS","\"\""}
+                },
+        		
+	            {
+	                {"null","ACTUAL_QUANTITIES","\"\""}
+	                ,{"percent","PERCENT","IF(ISERROR((J#row#/H#row#)*100),\"\",(J#row#/H#row#)*100)"}
+	                ,{"null","REMARKS","\"\""}
+	            },
+	            {
+	                {"percent","PERCENT","IF(ISERROR((G#row#/F#row#)*100),\"\",(G#row#/F#row#)*100)"}
+	                ,{"null","COMPLETE_DESCRIBE","\"\""}
+	                ,{"null","REMARKS","\"\""}
+	            },
+	            
+	            {
+	                {"percent","PERCENT","IF(ISERROR((G#row#/F#row#)*100),\"\",(G#row#/F#row#)*100)"}
+	                ,{"null","COMPLETE_DESCRIBE","\"\""}
+	                ,{"null","REMARKS","\"\""}
+	            },
+	            {
+	                {"percent","PERCENT","IF(ISERROR((G#row#/F#row#)*100),\"\",(G#row#/F#row#)*100)"}
+	                ,{"null","COMPLETE_DESCRIBE","\"\""}
+	                ,{"null","REMARKS","\"\""}
+	            },{
+	                {"null","COMPLETE_DESCRIBE","\"\""}
+	                ,{"null","REMARKS","\"\""}
+	            }
+        };
+        PageData pd = new PageData();
+        for (int i = 0; i < tableNames.length; i++) {
+            PageData data = new PageData();
+            pd.put("type", tableNames[i]);
+            pd.put("YEAR", param.get("YEAR"));
+            pd.put("table", "oa_department_"+param.get("YEAR"));
+            List<PageData> list = annualPlanCompService.getProjectData(pd);
+            data.put("list", list);
+            data.put("modelName", modelNames[i]);
+            data.put("keyStr", keyStrs[i]);
+            data.put("startRowIndex", startRowIndexs[i]);
+            data.put("tabletype", tabletype[i]);
+            data.put("funcArry", funcArrys[i]);
+            data.put("totalRange", totalRange[i]);
+            data.put("totalCost", "");
+            if (tabletype[i]==7) {
+                String totalCost = annualPlanCompService.getFeesTotalCost(Integer.parseInt(param.getString("YEAR"))-1+"");
+                data.put("totalCost", totalCost);
+            }
+            data.put("pd", pd);
+            result.add(data);
+        }
+        return result;
+    }
+    
+    /**
+     * 格式化金额
+     * @param cost_num
+     * @return
+     */
+    public double formatNum(double cost_num){
+    	String planstr = "";
+    	if(cost_num < 10){
+    		planstr = String.format("%.1f", cost_num);
+    	}
+    	else{
+    		planstr = String.format("%.0f", cost_num); 
+    	}
+    	cost_num = Double.parseDouble(planstr);
+     return cost_num;
+    }
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualPlanController.class


+ 1298 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualPlanController.java

@@ -0,0 +1,1298 @@
+package com.zhcs.dt.controller.information.annualPlan;
+
+import java.io.File;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+import net.sf.json.JSONArray;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.alibaba.fastjson.JSON;
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.information.annualPlan.AnnualPlanManager;
+import com.zhcs.dt.service.information.annualPlan.ImportDoc;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.Tools;
+
+/** 
+ * 类名称:年度养护计划
+ * 创建人:Yuanf
+ * 创建时间:2018-11-12
+ */
+@Controller
+@RequestMapping(value="/annualPlan")
+class AnnualPlanController extends BaseController {
+	//String menuUrl = "annualPlan/list.do"; //菜单地址(权限用)
+	@Resource(name="annualPlanService")
+	private AnnualPlanManager annualPlanService;
+	List<String> newTables = new ArrayList<String>();
+	String[] tabls = {"annual_plan_list","annual_plan_comp_list","annual_report_list","annual_table_list",
+			"highway_prevention_project_dettable","highway_repair_project_dettable","highway_test_project_dettable",
+			"highway_scientific_project_dettable","highway_equipment_overhaul_project_dettable","highway_special_project_dettable",
+			"highway_technica_statable","highway_traiffcinfo_sumtable","highway_daily_plan_statable",
+			"highway_prevention_project_dettable_cost","highway_repair_project_dettable_cost","highway_scientific_project_dettable_cost",
+			"highway_special_project_dettable_cost","highway_test_project_dettable_cost","modify_info_record",
+			"highway_emergency_project_dettable","highway_emergency_project_dettable_cost",
+			"highway_reserve_fees_sumtable","highway_reserve_fees_sumtable_total",
+			"monthly_daily_completion","monthly_daily_report_list",
+			"monthly_emergency_completion","monthly_report_list",
+			"monthly_equipment_overhaul_completion","monthly_equipment_overhaul_report_list",
+			"monthly_prevention_completion","monthly_prevention_report_list",
+			"monthly_repair_completion","monthly_repair_report_list",
+			"monthly_scientific_project_completion","monthly_scientific_report_list",
+			"monthly_special_completion","monthly_special_report_list",
+			"monthly_test_project_completion","monthly_test_report_list","monthly_plan_record",
+			"highway_technica_statable","highway_traiffcinfo_sumtable","highway_quality_goals_table"};
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"年度养护计划");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)		
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		//pd.put("USERNAME", Jurisdiction.getUsername().toString());
+		//通过username获取对应的公司和路段,控股集团管理员只可以看到状态为“待审批”和“已完成”的计划,路公司管理员和路段管理员可以看到本公司所有计划,admin没有权限控制
+		PageData userInfo = annualPlanService.getCompanyAndRoad(Jurisdiction.getUsername().toString());	//通过username获取公司和路段
+		System.out.println("^^^^^^^^^^^^^^COMPANY:"+userInfo.get("COMPANY").toString());
+		//通过ROLE_ID获取角色
+		String roleName = annualPlanService.getRoleName(userInfo.get("ROLE_ID").toString());
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");				//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		List<PageData>	varList = new ArrayList<PageData>();
+		if(!"控股集团管理员".equalsIgnoreCase(roleName)){
+			pd.put("COMPANY", userInfo.get("COMPANY"));
+			varList = annualPlanService.getPlanList(pd);	//列出年度计划列表
+			mv.setViewName("information/annualPlan/annualPlan_list");
+			mv.addObject("varList", varList);
+		}else{
+			//varList = annualPlanService.getKGPlanList(pd);	//列出年度计划列表
+			List<String> yearList = annualPlanService.getKGPlanYearList(pd);	//列出状态不为编制中、新建的年度计划列表
+			mv.setViewName("information/annualPlan/annualPlan_kg_list");
+			mv.addObject("varList", yearList);
+		}
+		mv.addObject("pd", pd);
+		mv.addObject("userInfo", userInfo);
+		mv.addObject("roleName", roleName);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	 /**显示对应的报表列表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goReport")
+	public ModelAndView goReport(Model model)throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		//List<PageData>	varList = annualPlanService.findTableById(pd);	//获取对应的表格列表
+		List<PageData>	varList = annualPlanService.findReportById(pd);	//获取对应的报表列表
+		JSONArray arr = JSONArray.fromObject(varList);
+		String json = arr.toString();
+//		json = json.replaceAll("MENU_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("MENU_NAME", "name").replaceAll("subMenu", "nodes").replaceAll("hasMenu", "checked").replaceAll("MENU_URL", "url");
+		model.addAttribute("zTreeNodes", json);
+//		mv.addObject("MENU_ID",MENU_ID);
+		mv.setViewName("information/annualPlan/annualPlan_report_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	 /**显示对应的子表格列表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goSonTable")
+	public ModelAndView goSonTable()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		List<PageData>	varList = annualPlanService.findTableById(pd);	//获取对应的表格列表
+		mv.setViewName("information/annualPlan/annualPlan_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	 /**查询显示报告列表和表格列表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showReportAndTable")
+	public ModelAndView showReportAndTable(Model model)throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		//String planID = pd.getString("ID");
+		String planStatus = annualPlanService.getPlanStatus(pd);	//根据year\company_id查询当前plan状态
+		pd.put("STATUS", planStatus);
+		List<PageData>	varList = annualPlanService.showReportList(pd);	//根据PLANID读取相关report信息
+		if(pd.get("ROLENAME").toString().equalsIgnoreCase("路段管理员")){
+			List<PageData> reportList = new ArrayList<PageData>();
+			String[] roads = pd.get("ROAD").toString().split(",");
+			for(int i = 0; i < roads.length; i++){
+				for(PageData reportInfo : varList){
+					if(reportInfo.get("ROAD_NAME") != null){
+						if(reportInfo.get("ROAD_NAME").toString().trim().equalsIgnoreCase(roads[i].trim())){
+							reportList.add(reportInfo);
+						}
+					}
+				}
+			}
+			varList = reportList;
+		}else{
+			List<PageData>	subReportList = new ArrayList<PageData>();
+			for(PageData var : varList){
+				if(var.get("ROAD_ID") == null){
+					mv.addObject("reportInfo", var);
+				}else{
+					subReportList.add(var);
+				}
+			}
+			varList = subReportList;
+		}
+//		JSONArray arr = JSONArray.fromObject(varList);
+//		String json = arr.toString();
+//		json = json.replaceAll("ID", "id").replaceAll("PLANID", "pId").replaceAll("NAME", "name");
+//		model.addAttribute("zTreeNodes", json);
+		
+		String reportid = null;
+		String reportName = null;
+		//用于显示界面右边表格信息
+		List<PageData>	vartableList = null;
+		if(pd.get("REPORTID") != null){
+			for(PageData var : varList){
+				if(var.get("ID").toString().equalsIgnoreCase(pd.get("REPORTID").toString())){
+					reportName = var.get("NAME").toString();
+				}
+			}
+			vartableList = annualPlanService.getTableList(pd);	//根据reportID读取相关table信息	
+			mv.addObject("selectReport", reportName);
+		}else{
+			for(PageData reportpd : varList){
+				reportid = reportpd.getString("ID");
+				reportName = reportpd.getString("NAME");
+				if(reportName.indexOf("年度养护计划分报告") > 0){
+					pd.put("REPORTID", reportid);
+					pd.put("ROAD_ID", reportpd.get("ROAD_ID"));
+					pd.put("ROAD", reportpd.get("ROAD_NAME"));
+					vartableList = annualPlanService.getTableList(pd);	//根据reportID读取相关table信息	
+					mv.addObject("selectReport", reportName);
+					Object rcStatus = "编制中";
+					for(PageData tpd : vartableList){
+						if(tpd.get("NAME") != null){
+							if(tpd.get("NAME").toString().contains("日常养护计划统计表")){
+								rcStatus = tpd.get("STATUS");
+								mv.addObject("rcStatus", rcStatus);
+							}
+						}
+					}
+					break;
+				}
+			}
+		}
+		mv.setViewName("information/annualPlan/annualPlan_report_list");
+		mv.addObject("varList", varList);
+		mv.addObject("vartableList", vartableList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+		/**查询显示表格列表
+		 * @param
+		 * @throws Exception
+		 */
+		@RequestMapping(value="/getTableListInfoReport")
+		@ResponseBody
+		public Object getTableListInfoReport()throws Exception{
+			Map<String,Object> map = new HashMap<String,Object>();
+			String errInfo = "success";
+			PageData pd = new PageData();
+			pd = this.getPageData();
+			List<PageData>  vartableList = annualPlanService.getTableList(pd);	//根据reportID读取相关table信息	
+			List<PageData> pdList = new ArrayList<PageData>();
+			PageData picpd = new PageData();
+			for(PageData tpd :vartableList){
+				PageData pdf = new PageData();
+				pdf.put("NAME", tpd.get("NAME"));
+				pdf.put("COMPANY_ID", tpd.get("COMPANY_ID"));
+				picpd.put("COMPANY_ID", tpd.get("COMPANY_ID"));
+				pdf.put("COMPANY_NAME", tpd.get("COMPANY_NAME"));
+				pdf.put("YEAR", tpd.get("YEAR"));
+				picpd.put("YEAR", tpd.get("YEAR"));
+				pdf.put("ROAD_ID", tpd.get("ROAD_ID"));
+				pdf.put("ROAD_NAME", tpd.get("ROAD_NAME"));
+				pdf.put("TYPE", tpd.get("TYPE"));
+				pdf.put("CTIME", tpd.get("CTIME"));
+				pdf.put("MTIME", tpd.get("MTIME"));
+				pdf.put("STATUS", tpd.get("STATUS"));
+				pdList.add(pdf);
+			}
+			map.put("list", pdList);
+			map.put("result", errInfo);				//返回结果
+			List<PageData>  picList = annualPlanService.getPictureList(picpd);	//根据reportID读取相关table信息	
+			map.put("picList", picList);
+			return AppUtil.returnObject(new PageData(), map);
+		}
+	 /**查询显示表格列表
+	 * @param
+	 * @throws Exception
+	 * zhangyn 2019.3.20修改
+	 */
+	@RequestMapping(value="/getTableListInfo")
+	@ResponseBody
+	public Object getTableListInfo()throws Exception{
+		Map<String,Object> map = new HashMap<String,Object>();
+		String errInfo = "success";
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		
+//		List<PageData>  vartableList_new = annualPlanService.getTableList(pd);	//根据reportID读取相关table信息	
+//		System.out.println("vartableList_new"+vartableList_new);
+		String planStatus = annualPlanService.getPlanStatus(pd);   //获取年计划状态		
+		pd.put("TYPE", "highway_annual_plan_sumtable");
+		String  highwayplanStatus = annualPlanService.getTableListRC(pd);  //高速公路年度养护计划汇总表
+		pd.put("TYPE", "highway_daily_plan_statable");
+		String  rcStatus = annualPlanService.getTableListRC(pd);
+		//获取基本信息的三张表状态值
+		pd.put("TYPE", "highway_technica_statable");   //高速公路道路技术状况现状统计表
+		String  baseStatus1 = annualPlanService.getTableListRC(pd);
+		pd.put("TYPE", "highway_traiffcinfo_sumtable");   //高速公路交通等信息综合统计表
+		String  baseStatus2 = annualPlanService.getTableListRC(pd);
+		pd.put("TYPE", "highway_quality_goals_table");   //高速公路养护质量目标表
+		String  baseStatus3 = annualPlanService.getTableListRC(pd);
+		
+		pd.put("TYPE", "highway_prevention_project_dettable");
+		pd.put("PROJECT_NAME", "高速公路预防养护计划立项详表---");
+		List<PageData>  vartableList = annualPlanService.getTableListYFYH(pd);
+		
+		
+		List<PageData> pdListPrevent = new ArrayList<PageData>();
+		for(PageData tpd :vartableList){
+			PageData pdf = new PageData();
+			if(tpd.get("PROJECT_NAME") !=null && !tpd.get("PROJECT_NAME").equals("")) {
+				pdf.put("PROJECT_NAME", tpd.get("PROJECT_NAME"));
+			}else{
+				pdf.put("PROJECT_NAME", "");
+			}
+			if(tpd.get("CATEGORY") !=null && !tpd.get("CATEGORY").equals("")) {
+				pdf.put("CATEGORY", tpd.get("CATEGORY"));
+			}else {
+				pdf.put("CATEGORY","");
+			}
+			if(tpd.get("PROJECT_SCALE") !=null && !tpd.get("PROJECT_SCALE").equals("")) {
+				pdf.put("PROJECT_SCALE", tpd.get("PROJECT_SCALE"));
+			}else {
+				pdf.put("PROJECT_SCALE","");
+			}
+			if(tpd.get("QUANTITIES") !=null && !tpd.get("QUANTITIES").equals("")) {
+				pdf.put("QUANTITIES", tpd.get("QUANTITIES"));
+			}else {
+				pdf.put("QUANTITIES", "");
+			}
+			if(tpd.get("PROJECT_COST") !=null && !tpd.get("PROJECT_COST").equals("")) {
+				pdf.put("PROJECT_COST", tpd.get("PROJECT_COST"));
+			}else {
+				pdf.put("PROJECT_COST", "");
+			}
+			if("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus)){
+				if(tpd.get("AUDIT_FEE") !=null && !tpd.get("AUDIT_FEE").equals("")){
+					pdf.put("AUDIT_FEE", tpd.get("AUDIT_FEE"));
+				}else{
+					pdf.put("AUDIT_FEE", tpd.get("PROJECT_COST"));
+				}
+			}else{
+				pdf.put("AUDIT_FEE", "");
+			}
+//			if(tpd.get("AUDIT_FEE") !=null && !tpd.get("AUDIT_FEE").equals("") && ("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus))) {
+//				pdf.put("AUDIT_FEE", tpd.get("AUDIT_FEE"));
+//			}else {
+//				pdf.put("AUDIT_FEE", "");
+//			}
+			if(tpd.get("AUDIT_MAKER") !=null && !tpd.get("AUDIT_MAKER").equals("") && ("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus))) {
+				pdf.put("AUDIT_MAKER", tpd.get("AUDIT_MAKER"));
+			}else {
+				pdf.put("AUDIT_MAKER", "");
+			}
+			if(tpd.get("STATUS") !=null && !tpd.get("STATUS").equals("")) {
+				pdf.put("STATUS", tpd.get("STATUS"));
+			}else {
+				pdf.put("STATUS", "");
+			}
+			
+			pdf.put("NAME", tpd.get("NAME"));
+			pdf.put("COMPANY_ID", tpd.get("COMPANY_ID"));
+			pdf.put("COMPANY", tpd.get("COMPANY"));
+			pdf.put("YEAR", tpd.get("YEAR"));
+			pdf.put("ROAD_ID", tpd.get("ROAD_ID"));
+			pdf.put("ROAD", tpd.get("ROAD"));
+			
+			pdListPrevent.add(pdf);
+		}
+		
+		pd.put("TYPE", "highway_repair_project_dettable");
+		pd.put("PROJECT_NAME", "高速公路修复养护计划立项详表---");
+		List<PageData>  xfvartableList = annualPlanService.getTableListYFYH(pd);
+		
+		List<PageData> pdListRepair = new ArrayList<PageData>();
+		for(PageData tpd :xfvartableList){
+			PageData pdf = new PageData();
+			if(tpd.get("PROJECT_NAME") !=null && !tpd.get("PROJECT_NAME").equals("")) {
+				pdf.put("PROJECT_NAME", tpd.get("PROJECT_NAME"));
+			}else{
+				pdf.put("PROJECT_NAME", "");
+			}
+			if(tpd.get("CATEGORY") !=null && !tpd.get("CATEGORY").equals("")) {
+				pdf.put("CATEGORY", tpd.get("CATEGORY"));
+			}else {
+				pdf.put("CATEGORY","");
+			}
+			if(tpd.get("PROJECT_SCALE") !=null && !tpd.get("PROJECT_SCALE").equals("")) {
+				pdf.put("PROJECT_SCALE", tpd.get("PROJECT_SCALE"));
+			}else {
+				pdf.put("PROJECT_SCALE","");
+			}
+			if(tpd.get("QUANTITIES") !=null && !tpd.get("QUANTITIES").equals("")) {
+				pdf.put("QUANTITIES", tpd.get("QUANTITIES"));
+			}else {
+				pdf.put("QUANTITIES", "");
+			}
+			if(tpd.get("PROJECT_COST") !=null && !tpd.get("PROJECT_COST").equals("")) {
+				pdf.put("PROJECT_COST", tpd.get("PROJECT_COST"));
+			}else {
+				pdf.put("PROJECT_COST", "");
+			}
+			if("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus)){
+				if(tpd.get("AUDIT_FEE") !=null && !tpd.get("AUDIT_FEE").equals("")){
+					pdf.put("AUDIT_FEE", tpd.get("AUDIT_FEE"));
+				}else{
+					if(tpd.get("PROJECT_COST") !=null && !tpd.get("PROJECT_COST").equals("")){
+						pdf.put("AUDIT_FEE", tpd.get("PROJECT_COST"));
+					}else{
+						pdf.put("AUDIT_FEE", "");
+					}
+				}
+			}else{
+				pdf.put("AUDIT_FEE", "");
+			}
+//			if(tpd.get("AUDIT_FEE") !=null && !tpd.get("AUDIT_FEE").equals("") && ("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus))) {
+//				pdf.put("AUDIT_FEE", tpd.get("AUDIT_FEE"));
+//			}else {
+//				pdf.put("AUDIT_FEE", "");
+//			}
+			if(tpd.get("AUDIT_MAKER") !=null && !tpd.get("AUDIT_MAKER").equals("") && ("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus))) {
+				pdf.put("AUDIT_MAKER", tpd.get("AUDIT_MAKER"));
+			}else {
+				pdf.put("AUDIT_MAKER", "");
+			}
+			if(tpd.get("STATUS") !=null && !tpd.get("STATUS").equals("")) {
+				pdf.put("STATUS", tpd.get("STATUS"));
+			}else {
+				pdf.put("STATUS", "");
+			}
+			pdf.put("NAME", tpd.get("NAME"));
+			pdf.put("COMPANY_ID", tpd.get("COMPANY_ID"));
+			pdf.put("COMPANY", tpd.get("COMPANY"));
+			pdf.put("YEAR", tpd.get("YEAR"));
+			pdf.put("ROAD_ID", tpd.get("ROAD_ID"));
+			pdf.put("ROAD", tpd.get("ROAD"));
+			
+			pdListRepair.add(pdf);
+		}
+		
+		pd.put("TYPE", "highway_special_project_dettable");
+		pd.put("PROJECT_NAME", "高速公路专项养护计划立项详表---");
+		List<PageData>  zxvartableList = annualPlanService.getTableListYFYH(pd);
+		
+		List<PageData> pdListSpecial = new ArrayList<PageData>();
+		for(PageData tpd :zxvartableList){
+			PageData pdf = new PageData();
+			if(tpd.get("PROJECT_NAME") !=null && !tpd.get("PROJECT_NAME").equals("")) {
+				pdf.put("PROJECT_NAME", tpd.get("PROJECT_NAME"));
+			}else{
+				pdf.put("PROJECT_NAME", "");
+			}
+			if(tpd.get("CATEGORY") !=null && !tpd.get("CATEGORY").equals("")) {
+				pdf.put("CATEGORY", tpd.get("CATEGORY"));
+			}else {
+				pdf.put("CATEGORY","");
+			}
+			if(tpd.get("PROJECT_SCALE") !=null && !tpd.get("PROJECT_SCALE").equals("")) {
+				pdf.put("PROJECT_SCALE", tpd.get("PROJECT_SCALE"));
+			}else {
+				pdf.put("PROJECT_SCALE","");
+			}
+			if(tpd.get("QUANTITIES") !=null && !tpd.get("QUANTITIES").equals("")) {
+				pdf.put("QUANTITIES", tpd.get("QUANTITIES"));
+			}else {
+				pdf.put("QUANTITIES", "");
+			}
+			if(tpd.get("PROJECT_COST") !=null && !tpd.get("PROJECT_COST").equals("")) {
+				pdf.put("PROJECT_COST", tpd.get("PROJECT_COST"));
+			}else {
+				pdf.put("PROJECT_COST", "");
+			}
+			if("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus)){
+				if(tpd.get("AUDIT_FEE") !=null && !tpd.get("AUDIT_FEE").equals("")){
+					pdf.put("AUDIT_FEE", tpd.get("AUDIT_FEE"));
+				}else{
+					if(tpd.get("PROJECT_COST") !=null && !tpd.get("PROJECT_COST").equals("")){
+						pdf.put("AUDIT_FEE", tpd.get("PROJECT_COST"));
+					}else{
+						pdf.put("AUDIT_FEE", "");
+					}
+				}
+			}else{
+				pdf.put("AUDIT_FEE", "");
+			}
+//			if(tpd.get("AUDIT_FEE") !=null && !tpd.get("AUDIT_FEE").equals("") && ("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus))) {
+//				pdf.put("AUDIT_FEE", tpd.get("AUDIT_FEE"));
+//			}else {
+//				pdf.put("AUDIT_FEE", "");
+//			}
+			if(tpd.get("AUDIT_MAKER") !=null && !tpd.get("AUDIT_MAKER").equals("") && ("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus))) {
+				pdf.put("AUDIT_MAKER", tpd.get("AUDIT_MAKER"));
+			}else {
+				pdf.put("AUDIT_MAKER", "");
+			}
+			if(tpd.get("STATUS") !=null && !tpd.get("STATUS").equals("")) {
+				pdf.put("STATUS", tpd.get("STATUS"));
+			}else {
+				pdf.put("STATUS", "");
+			}
+			pdf.put("NAME", tpd.get("NAME"));
+			pdf.put("COMPANY_ID", tpd.get("COMPANY_ID"));
+			pdf.put("COMPANY", tpd.get("COMPANY"));
+			pdf.put("YEAR", tpd.get("YEAR"));
+			pdf.put("ROAD_ID", tpd.get("ROAD_ID"));
+			pdf.put("ROAD", tpd.get("ROAD"));
+			
+			pdListSpecial.add(pdf);
+		}
+		
+		//试验检测项目
+		pd.put("TYPE", "highway_test_project_dettable");
+		pd.put("PROJECT_NAME", "高速公路试验检测项目计划立项详表---");
+		List<PageData>  syjctableList = annualPlanService.getTableListYFYH(pd);
+		
+		List<PageData> pdListTest = new ArrayList<PageData>();
+		for(PageData tpd :syjctableList){
+			PageData pdf = new PageData();
+			if(tpd.get("PROJECT_NAME") !=null && !tpd.get("PROJECT_NAME").equals("")) {
+				pdf.put("PROJECT_NAME", tpd.get("PROJECT_NAME"));
+			}else{
+				pdf.put("PROJECT_NAME", "");
+			}
+			if(tpd.get("CATEGORY") !=null && !tpd.get("CATEGORY").equals("")) {
+				pdf.put("CATEGORY", tpd.get("CATEGORY"));
+			}else {
+				pdf.put("CATEGORY","");
+			}
+			if(tpd.get("CONTENT") !=null && !tpd.get("CONTENT").equals("")) {
+				pdf.put("CONTENT", tpd.get("CONTENT"));
+			}else {
+				pdf.put("CONTENT_SCHEME","");
+			}
+			if(tpd.get("PROJECT_COST") !=null && !tpd.get("PROJECT_COST").equals("")) {
+				pdf.put("PROJECT_COST", tpd.get("PROJECT_COST"));
+			}else {
+				pdf.put("PROJECT_COST", "");
+			}
+			if("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus)){
+				if(tpd.get("AUDIT_FEE") !=null && !tpd.get("AUDIT_FEE").equals("")){
+					pdf.put("AUDIT_FEE", tpd.get("AUDIT_FEE"));
+				}else{
+					if(tpd.get("PROJECT_COST") !=null && !tpd.get("PROJECT_COST").equals("")){
+						pdf.put("AUDIT_FEE", tpd.get("PROJECT_COST"));
+					}else{
+						pdf.put("AUDIT_FEE", "");
+					}
+				}
+			}else{
+				pdf.put("AUDIT_FEE", "");
+			}
+//			if(tpd.get("AUDIT_FEE") !=null && !tpd.get("AUDIT_FEE").equals("") && ("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus))) {
+//				pdf.put("AUDIT_FEE", tpd.get("AUDIT_FEE"));
+//			}else {
+//				pdf.put("AUDIT_FEE", "");
+//			}
+			if(tpd.get("AUDIT_MAKER") !=null && !tpd.get("AUDIT_MAKER").equals("") && ("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus))) {
+				pdf.put("AUDIT_MAKER", tpd.get("AUDIT_MAKER"));
+			}else {
+				pdf.put("AUDIT_MAKER", "");
+			}
+			if(tpd.get("STATUS") !=null && !tpd.get("STATUS").equals("")) {
+				pdf.put("STATUS", tpd.get("STATUS"));
+			}else {
+				pdf.put("STATUS", "");
+			}
+			pdf.put("NAME", tpd.get("NAME"));
+			pdf.put("COMPANY_ID", tpd.get("COMPANY_ID"));
+			pdf.put("COMPANY", tpd.get("COMPANY"));
+			pdf.put("YEAR", tpd.get("YEAR"));
+			pdf.put("ROAD_ID", tpd.get("ROAD_ID"));
+			pdf.put("ROAD", tpd.get("ROAD"));
+			
+			pdListTest.add(pdf);
+		}
+		//路科研项目
+		pd.put("TYPE", "highway_scientific_project_dettable");
+		pd.put("PROJECT_NAME", "高速公路科研项目计划立项详表---");
+		List<PageData>  lkytableList = annualPlanService.getTableListYFYH(pd);
+		
+		List<PageData> pdListScience = new ArrayList<PageData>();
+		for(PageData tpd :lkytableList){
+			PageData pdf = new PageData();
+			if(tpd.get("PROJECT_NAME") !=null && !tpd.get("PROJECT_NAME").equals("")) {
+				pdf.put("PROJECT_NAME", tpd.get("PROJECT_NAME"));
+			}else{
+				pdf.put("PROJECT_NAME", "");
+			}
+			if(tpd.get("CATEGORY") !=null && !tpd.get("CATEGORY").equals("")) {
+				pdf.put("CATEGORY", tpd.get("CATEGORY"));
+			}else {
+				pdf.put("CATEGORY","");
+			}
+			if(tpd.get("CONTENT") !=null && !tpd.get("CONTENT").equals("")) {
+				pdf.put("CONTENT", tpd.get("CONTENT"));
+			}else {
+				pdf.put("CONTENT","");
+			}
+			if(tpd.get("YEAR_COST") !=null && !tpd.get("YEAR_COST").equals("")) {
+				pdf.put("YEAR_COST", tpd.get("YEAR_COST"));
+			}else {
+				pdf.put("YEAR_COST", "");
+			}
+			if("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus)){
+				if(tpd.get("AUDIT_FEE") !=null && !tpd.get("AUDIT_FEE").equals("")){
+					pdf.put("AUDIT_FEE", tpd.get("AUDIT_FEE"));
+				}else{
+					if(tpd.get("YEAR_COST") !=null && !tpd.get("YEAR_COST").equals("")){
+						pdf.put("AUDIT_FEE", tpd.get("YEAR_COST"));
+					}else{
+						pdf.put("AUDIT_FEE", "");
+					}
+				}
+			}else{
+				pdf.put("AUDIT_FEE", "");
+			}
+//			if(tpd.get("AUDIT_FEE") !=null && !tpd.get("AUDIT_FEE").equals("") && ("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus))) {
+//				pdf.put("AUDIT_FEE", tpd.get("AUDIT_FEE"));
+//			}else {
+//				pdf.put("AUDIT_FEE", "");
+//			}
+			if(tpd.get("AUDIT_MAKER") !=null && !tpd.get("AUDIT_MAKER").equals("") && ("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus))) {
+				pdf.put("AUDIT_MAKER", tpd.get("AUDIT_MAKER"));
+			}else {
+				pdf.put("AUDIT_MAKER", "");
+			}
+			if(tpd.get("MATTER_YEAR") !=null && !tpd.get("MATTER_YEAR").equals("") && ("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus))) {
+				pdf.put("MATTER_YEAR", tpd.get("MATTER_YEAR"));
+			}else {
+				pdf.put("MATTER_YEAR", "");
+			}
+			if(tpd.get("MATTER_NEW_CARRY") !=null && !tpd.get("MATTER_NEW_CARRY").equals("") && ("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus))) {
+				pdf.put("MATTER_NEW_CARRY", tpd.get("MATTER_NEW_CARRY"));
+			}else {
+				pdf.put("MATTER_NEW_CARRY", "");
+			}
+			if(tpd.get("MATTER_COUSULT") !=null && !tpd.get("MATTER_COUSULT").equals("") && ("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus))) {
+				pdf.put("MATTER_COUSULT", tpd.get("MATTER_COUSULT"));
+			}else {
+				pdf.put("MATTER_COUSULT", "");
+			}
+			if(tpd.get("STATUS") !=null && !tpd.get("STATUS").equals("")) {
+				pdf.put("STATUS", tpd.get("STATUS"));
+			}else {
+				pdf.put("STATUS", "");
+			}
+			pdf.put("NAME", tpd.get("NAME"));
+			pdf.put("COMPANY_ID", tpd.get("COMPANY_ID"));
+			pdf.put("COMPANY", tpd.get("COMPANY"));
+			pdf.put("YEAR", tpd.get("YEAR"));
+			pdf.put("ROAD_ID", tpd.get("ROAD_ID"));
+			pdf.put("ROAD", tpd.get("ROAD"));
+			
+			pdListScience.add(pdf);
+		}
+		
+		//设备大修
+		pd.put("TYPE", "highway_equipment_overhaul_project_dettable");
+		pd.put("PROJECT_NAME", "高速公路设备大修项目计划立项详表---");
+		List<PageData>  sbdxtableList = annualPlanService.getTableListYFYH(pd);
+		
+		List<PageData> pdListEquip = new ArrayList<PageData>();
+		for(PageData tpd :sbdxtableList){
+			PageData pdf = new PageData();
+			if(tpd.get("PROJECT_NAME") !=null && !tpd.get("PROJECT_NAME").equals("")) {
+				pdf.put("PROJECT_NAME", tpd.get("PROJECT_NAME"));
+			}else{
+				pdf.put("PROJECT_NAME", "");
+			}
+			if(tpd.get("CATEGORY") !=null && !tpd.get("CATEGORY").equals("")) {
+				pdf.put("CATEGORY", tpd.get("CATEGORY"));
+			}else {
+				pdf.put("CATEGORY","");
+			}
+			if(tpd.get("CONTENT") !=null && !tpd.get("CONTENT").equals("")) {
+				pdf.put("CONTENT", tpd.get("CONTENT"));
+			}else {
+				pdf.put("CONTENT","");
+			}
+			if(tpd.get("PROJECT_COST") !=null && !tpd.get("PROJECT_COST").equals("")) {
+				pdf.put("PROJECT_COST", tpd.get("PROJECT_COST"));
+			}else {
+				pdf.put("PROJECT_COST", "");
+			}
+			if("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus)){
+				if(tpd.get("AUDIT_FEE") !=null && !tpd.get("AUDIT_FEE").equals("")){
+					pdf.put("AUDIT_FEE", tpd.get("AUDIT_FEE"));
+				}else{
+					if(tpd.get("PROJECT_COST") !=null && !tpd.get("PROJECT_COST").equals("")){
+						pdf.put("AUDIT_FEE", tpd.get("PROJECT_COST"));
+					}else{
+						pdf.put("AUDIT_FEE", "");
+					}
+				}
+			}else{
+				pdf.put("AUDIT_FEE", "");
+			}
+//			if(tpd.get("AUDIT_FEE") !=null && !tpd.get("AUDIT_FEE").equals("") && ("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus))) {
+//				pdf.put("AUDIT_FEE", tpd.get("AUDIT_FEE"));
+//			}else {
+//				pdf.put("AUDIT_FEE", "");
+//			}
+			if(tpd.get("AUDIT_MAKER") !=null && !tpd.get("AUDIT_MAKER").equals("") && ("审批通过".equalsIgnoreCase(planStatus) || "控股驳回".equalsIgnoreCase(planStatus))) {
+				pdf.put("AUDIT_MAKER", tpd.get("AUDIT_MAKER"));
+			}else {
+				pdf.put("AUDIT_MAKER", "");
+			}
+			if(tpd.get("STATUS") !=null && !tpd.get("STATUS").equals("")) {
+				pdf.put("STATUS", tpd.get("STATUS"));
+			}else {
+				pdf.put("STATUS", "");
+			}
+			pdf.put("NAME", tpd.get("NAME"));
+			pdf.put("COMPANY_ID", tpd.get("COMPANY_ID"));
+			pdf.put("COMPANY", tpd.get("COMPANY"));
+			pdf.put("YEAR", tpd.get("YEAR"));
+			pdf.put("ROAD_ID", tpd.get("ROAD_ID"));
+			pdf.put("ROAD", tpd.get("ROAD"));
+			
+			pdListEquip.add(pdf);
+		}
+		map.put("highwayplanStatus", highwayplanStatus);
+		map.put("rcStatus", rcStatus);//日常计划状态
+		map.put("baseStatus1", baseStatus1);
+		map.put("baseStatus2", baseStatus2);
+		map.put("baseStatus3", baseStatus3);		
+		map.put("list1", pdListPrevent);//预防养护
+		map.put("list2", pdListRepair);//修复养护
+		map.put("list3", pdListSpecial);//专项养护
+		map.put("list4", pdListTest);//试验检测
+		map.put("list5", pdListScience);//公路科研项目
+		map.put("list6", pdListEquip);//设备大修
+		map.put("result", errInfo);				//返回结果
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	 /**显示、编辑子表格内容
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showTableRecod")
+	public ModelAndView showTableRecod()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		List<PageData>	varList = annualPlanService.showTableRecod(pd);	//根据ID读取
+		mv.setViewName("information/annualPlan/annualPlan_edit");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}	
+	
+	/**去新增页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goAdd")
+	public ModelAndView goAdd()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		//List<PageData>	varList = annualPlanService.getReportType(pd);	//获取报告类型
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
+        Date date = new Date();
+        String currentYear = sdf.format(date);
+        List<String> yearItems = new ArrayList<String>();
+        for(int i= -4; i < 6; i++){
+        	Integer intyear = Integer.parseInt(currentYear);
+        	yearItems.add(String.valueOf(intyear + i));
+        }
+		mv.setViewName("information/annualPlan/annualPlan_add");
+		//mv.addObject("varList", varList);
+		mv.addObject("msg", "save");
+		mv.addObject("yearList", yearItems);
+		mv.addObject("currentYear", currentYear);
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**新增报告和子表格的关系(新建年底计划,同时新建完成情况汇总)
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/save")
+	public ModelAndView save() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"新增annualPlan");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
+		List<PageData> reportList = new ArrayList<PageData>();
+		List<PageData> tableList = new ArrayList<PageData>();
+		
+		List<PageData> reportCompList = new ArrayList<PageData>();
+		List<PageData> tableCompList = new ArrayList<PageData>();
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String planID = this.get32UUID();
+		pd.put("ID", planID);//主键
+		pd.put("NAME", pd.get("YEAR")+"年"+pd.get("COMPANY")+"年度养护计划");
+		//设置查询oa_department的动态表名
+		PageData cpPd = new PageData();
+		String oa_department_table = "oa_department_"+pd.get("YEAR");
+		cpPd.put("table", oa_department_table);
+		cpPd.put("NAME", pd.get("COMPANY").toString());
+		PageData companypd = (PageData)annualPlanService.getCompanyID(cpPd);  //通过路公司名获取路公司ID和父节点id
+		String companyID = companypd.getString("BIANMA");
+		String DEPARTMENT_ID = companypd.getString("DEPARTMENT_ID");		
+		pd.put("COMPANY_ID", companyID);
+		pd.put("COMPANY_NAME", pd.get("COMPANY"));
+		//pd.put("DEPARTMENT_ID", DEPARTMENT_ID);
+		pd.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+		pd.put("MTIME", Tools.date2Str(new Date()));	//修改时间
+		pd.put("STATUS", "新建");	//创建时间
+		annualPlanService.addAnnualPlan(pd);   //新建年度计划
+		
+		boolean hasNoCompList = false;
+		String planCompID = this.get32UUID();
+		List<PageData> compList = annualPlanService.getAnnualPlanComp(pd);
+		if(compList.size() == 0){
+			hasNoCompList = true;			
+			pd.put("COMPID", planCompID);//主键	
+			pd.put("COMPNAME", pd.get("YEAR")+"年"+pd.get("COMPANY")+"养护计划完成情况");
+			annualPlanService.addAnnualPlanComp(pd);   //新建年度计划完成情况
+		}
+		
+		pd.put("NAME", "年度养护计划总报告");		
+		String reportID = this.get32UUID();
+		pd.put("ID", reportID);//主键
+		pd.put("PLANID", planID);
+		reportList.add(pd);
+		
+		
+		pd.put("COMPNAME", "年度养护计划完成情况总报告");
+		String reportCompID = this.get32UUID();
+		pd.put("COMPID", reportCompID);//主键
+		pd.put("COMPPLANID", planCompID);
+		pd.put("COMPNAME", "养护计划完成情况总报告");		
+		reportCompList.add(pd);
+		
+		List<PageData> tableTypeList = annualPlanService.getTableType(); //获取表格类型	
+		for(PageData tableInfo : tableTypeList){
+			PageData tablepd = new PageData();
+			tablepd.put("YEAR", pd.get("YEAR"));
+			tablepd.put("NAME", pd.get("YEAR")+"年"+pd.get("COMPANY")+tableInfo.getString("TABLE_NAME"));
+			tablepd.put("TYPE", tableInfo.getString("TABLE_TYPE"));
+			tablepd.put("COMPANY_ID", companyID);
+			tablepd.put("COMPANY_NAME", pd.get("COMPANY"));				
+			tablepd.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+			tablepd.put("MTIME", Tools.date2Str(new Date()));	//修改时间
+			tablepd.put("STATUS", "自动统计");	//创建时间
+			tablepd.put("ROAD_NAME", "");
+			tablepd.put("ROAD_ID", "");
+			if(tableInfo.get("REPORT_ID").toString().equalsIgnoreCase("2")){
+				tablepd.put("REPORTID", reportID);
+				tableList.add(tablepd);
+			}
+			if(tableInfo.get("REPORT_ID").toString().equalsIgnoreCase("1")){  //完成情况总报告
+				tablepd.put("COMPREPORTID", reportCompID);
+				tablepd.put("COMPNAME", tableInfo.getString("TABLE_NAME"));
+				tablepd.put("COMPTYPE", tableInfo.getString("TABLE_TYPE"));
+				tableCompList.add(tablepd);
+			}
+		}
+		
+		cpPd.put("DEPARTMENT_ID", DEPARTMENT_ID);
+		List<PageData> roadpdList = annualPlanService.getRoadInfo(cpPd); //通过父节点ID获取路段信息		
+		for(PageData reportinfo : roadpdList){
+			PageData reportpd = new PageData();
+			reportID = this.get32UUID();
+			reportpd.put("ID", reportID);//主键
+			reportpd.put("PLANID", planID);
+			reportpd.put("YEAR", pd.get("YEAR"));
+			reportpd.put("ROAD_NAME", reportinfo.getString("NAME"));
+			reportpd.put("ROAD_ID", reportinfo.getString("BIANMA"));
+			reportpd.put("NAME", reportinfo.getString("NAME")+"年度养护计划分报告");
+			reportpd.put("COMPANY_ID", companyID);
+			reportpd.put("COMPANY_NAME", pd.get("COMPANY"));
+			//reportpd.put("DEPARTMENT_ID", DEPARTMENT_ID);
+			reportpd.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+			reportpd.put("MTIME", Tools.date2Str(new Date()));	//修改时间
+			reportpd.put("STATUS", "新建");	//创建时间
+			reportList.add(reportpd);
+
+			reportCompID = this.get32UUID();     //完成情况分报告ID
+			reportpd.put("COMPID", reportCompID);//主键
+			reportpd.put("COMPPLANID", planCompID);	
+			reportpd.put("COMPNAME", reportinfo.getString("NAME")+"养护计划完成情况分报告");
+			reportCompList.add(reportpd);
+			
+			for(PageData tableInfo : tableTypeList){
+				PageData tablepdroad = new PageData();	
+				tablepdroad.put("YEAR", pd.get("YEAR"));
+				tablepdroad.put("COMPANY_ID", companyID);
+				tablepdroad.put("COMPANY_NAME", pd.get("COMPANY"));
+				tablepdroad.put("ROAD_NAME", reportinfo.getString("NAME"));
+				tablepdroad.put("ROAD_ID", reportinfo.getString("BIANMA"));					
+				tablepdroad.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+				tablepdroad.put("MTIME", Tools.date2Str(new Date()));	//修改时间
+				tablepdroad.put("STATUS", "自动统计");
+				
+				if(tableInfo.get("REPORT_ID").toString().equalsIgnoreCase("3")){	
+					tablepdroad.put("REPORTID", reportID);
+					tablepdroad.put("NAME", tableInfo.getString("TABLE_NAME"));
+					tablepdroad.put("TYPE", tableInfo.getString("TABLE_TYPE"));					
+					tableList.add(tablepdroad);
+				}
+				if(tableInfo.get("REPORT_ID").toString().equalsIgnoreCase("6")){
+					tablepdroad.put("STATUS", "新建");
+					tablepdroad.put("REPORTID", reportID);
+					tablepdroad.put("NAME", tableInfo.getString("TABLE_NAME"));
+					tablepdroad.put("TYPE", tableInfo.getString("TABLE_TYPE"));					
+					tableList.add(tablepdroad);
+				}
+				if(tableInfo.get("REPORT_ID").toString().equalsIgnoreCase("4")){
+					tablepdroad.put("COMPREPORTID", reportCompID);
+					tablepdroad.put("COMPNAME", tableInfo.getString("TABLE_NAME"));
+					tablepdroad.put("COMPTYPE", tableInfo.getString("TABLE_TYPE"));
+					tableCompList.add(tablepdroad);
+				}
+			}
+		}
+		annualPlanService.addAnnualReport(reportList);
+		annualPlanService.addAnnualTable(tableList);
+		if(hasNoCompList){
+			annualPlanService.addAnnualCompReport(reportCompList);
+			annualPlanService.addAnnualCompTable(tableCompList);
+		}
+		mv.addObject("pd", pd);
+	    mv.setViewName("save_result");	
+		return mv;
+	}
+	
+	/**判断年度计划是否已存在
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/hasPlan")
+	@ResponseBody
+	public Object hasPlan()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String msg = "success";
+		//查询系统已存在的养护计划
+		List<PageData> planPd = annualPlanService.getPlanByCompanyAndYear(pd);
+		if(planPd.size() > 0){
+			msg = "已存在相同的养护计划,新建失败";
+		}
+		map.put("result", msg);
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**删除年度计划和其下面的报告、表格
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delAnnualPlan")
+	@ResponseBody
+	public Object delAnnualPlan()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		try{
+			PageData planPd = annualPlanService.getYearAndCompanyByID(pd);  //通过ANNUALPLAN_ID获取报告的年份和公司
+			/*annualPlanService.delAnnualPlan(pd);	//删除年度计划
+			List<String> reportIDList = annualPlanService.getReportID(pd);  //获取年度计划对应的报告ID
+			annualPlanService.delReport(pd); //删除报告
+			annualPlanService.delTables(reportIDList); //删除表格列表
+			for(String tableName : tabls){
+				planPd.put("TABLE_NAME", tableName);
+				annualPlanService.delAllSumTables(planPd); //删除子表数据
+			}	*/
+//			List<PageData> tableList = new ArrayList<PageData>();
+			for(String tableName : tabls){
+				planPd.put("TABLE_NAME", tableName);				
+				annualPlanService.delAllTables(planPd); //删除报告
+			}			
+			map.put("result", "success");
+		}catch(Exception e){
+			map.put("result", "删除失败");
+		}
+		return AppUtil.returnObject(new PageData(), map);
+	}	
+	
+	/**新增立项详表新增弹出页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/addNewTablePanel")
+	public ModelAndView addNewTablePanel()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		List<PageData> varList = annualPlanService.getDetTableType();	//获取立项详表报告类型
+		//通过reportid获取对应的路段信息
+		PageData roadInfo = annualPlanService.getRoadInfoByReportID(pd);
+		pd.put("ROAD_NAME", roadInfo.get("ROAD"));
+		pd.put("ROAD_ID", roadInfo.get("ROAD_ID"));
+		mv.setViewName("information/annualPlan/annualPlan_addNewTable");
+		mv.addObject("varList", varList);
+		mv.addObject("msg", "addNewTable");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**只有路段分报告可以新增立项详表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/addNewTable")
+	@ResponseBody
+	public Object addNewTable()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		//List<PageData> varList = annualPlanService.getDetTableType();	//获取立项详表报告类型
+		//通过reportid获取对应的路段信息
+		try{
+			PageData roadInfo = annualPlanService.getRoadInfoByReportID(pd);
+			pd.put("ROAD_NAME", roadInfo.get("ROAD"));
+			pd.put("ROAD_ID", roadInfo.get("ROAD_ID"));
+//			mv.setViewName("information/annualPlan/annualPlan_addNewTable");
+//			mv.addObject("varList", varList);
+//			mv.addObject("pd", pd);
+			map.put("result", "success");			
+		}catch(Exception e){
+			map.put("result", "只有路段分报告可以增加立项详表");
+		}		
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**显示立项详表新增弹出页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showNewTable")
+	public ModelAndView showNewTable()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		List<PageData> varList = annualPlanService.getDetTableType();	//获取立项详表报告类型
+		mv.setViewName("information/annualPlan/annualPlan_addNewTable");
+		mv.addObject("varList", varList);
+		mv.addObject("msg", "save");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	@RequestMapping(value="/changeTableName")
+	@ResponseBody
+	public Object changeTableName() throws Exception{
+		PageData pd = new PageData();
+	    pd = this.getPageData();
+	    String name = pd.getString("PROJECT_NAME");
+	    pd.put("NAME", name);
+	    pd.put("CTIME", Tools.date2Str(new Date()));
+	    pd.put("MTIME", Tools.date2Str(new Date()));
+	    pd.put("STATUS", "编制中");
+	    annualPlanService.changeTableName(pd);	//在table_list中新增立项详表名称
+		Map<String,Object> map = new HashMap<String,Object>();
+	    map.put("msg","success");
+        return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	@RequestMapping(value="/addNewTableInfo")
+	@ResponseBody
+	public Object addNewTableInfo() throws Exception{
+		PageData pd = new PageData();
+	    pd = this.getPageData();
+//	    String name = pd.getString("PROJECT_NAME");
+//	    pd.put("NAME", name);
+	    Map<String,Object> map = new HashMap<String,Object>();
+	    if(!hasBetTable(pd)){
+		    //获取reportId "2017年高管中心宁连、宁洛及金马高速年度养护计划分报告"
+	//    	String reportName = pd.getString("YEAR")+"年" + pd.getString("COMPANY") + pd.getString("ROAD") + "年度养护计划分报告";
+	//    	String reportId = annualPlanService.getTableReportID(reportName); //get annual_report_list id
+	//    	//在annual_table_list表中新增一条立项详情表记录       
+	//    	pd.put("REPORTID", reportId);
+	    	pd.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+			pd.put("MTIME", Tools.date2Str(new Date()));	//修改时间
+			pd.put("STATUS", "编制中");	//修改时间
+		    annualPlanService.addNewTableInfo(pd);	//insert annual_table_list新增立项详表			
+		    map.put("msg","success");
+	    }else{
+	    	map.put("msg","已存在相同立项表");
+	    }
+        return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	public boolean hasBetTable(PageData pd) throws Exception{
+		boolean flag = false;
+	    List<PageData> tableInfo = annualPlanService.getTableInfo(pd);
+	    if(tableInfo.size() > 0){
+	    	flag = true;
+	    }
+        return flag;
+	}
+	
+	/**删除立项表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delTable")
+	@ResponseBody
+	public Object delTable()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String msg = "删除立项表成功";
+		try{
+			annualPlanService.delRecordFromTable(pd); //删除table_lis中的表数据
+			pd.put("TABLE_NAME", pd.get("TYPE"));
+			if(pd.get("NAME") != null){
+				if(pd.get("NAME").toString().contains("---")){
+					pd.put("PROJECT_NAME", pd.get("NAME").toString().split("---")[1]);
+				}
+			}
+			annualPlanService.delDettRecord(pd); //删除主表数据
+			annualPlanService.delModifyRecord(pd); //删除留痕表中的主表数据
+			annualPlanService.delMonthPlanRecord(pd); //删除对应立项表月度计划数据
+			Map<String, String> relationMap = new HashMap<String, String>();
+			relationMap.put("highway_prevention_project_dettable", "monthly_prevention_completion");
+			relationMap.put("highway_repair_project_dettable", "monthly_repair_completion");
+			relationMap.put("highway_emergency_project_dettable", "monthly_emergency_completion");
+			relationMap.put("highway_equipment_overhaul_project_dettable", "monthly_equipment_overhaul_completion");
+			relationMap.put("highway_scientific_project_dettable", "monthly_scientific_project_completion");
+			relationMap.put("highway_special_project_dettable", "monthly_special_completion");
+			relationMap.put("highway_test_project_dettable", "monthly_test_project_completion");
+			if(pd.get("TYPE") != null){
+				String tableName = relationMap.get(pd.get("TYPE").toString());
+				pd.put("MTABLE_NAME", tableName);
+			}
+			annualPlanService.delMonthlyRecord(pd); //删除月度完成情况中的相应项目
+			
+			annualPlanService.delDettRecord(pd); //删除主表关联的cost表数据
+			pd.put("TABLE_NAME", pd.get("TYPE") + "_cost");
+			annualPlanService.delModifyRecord(pd); //删除留痕表中的主表关联的cost表数据
+		}catch(Exception e){
+			msg = "删除立项表失败";
+		}
+		map.put("result", msg);
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**判断是否存在立项表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/hasDettTable")
+	@ResponseBody
+	public Object hasDettTable()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String result = "success";
+		String msg="";
+		try{
+			List<PageData> dettTables = annualPlanService.getDettTables(pd); //获取年度计划中的立项表
+			if(dettTables.size() == 0){
+				msg = "该年度计划中不包含立项表,";
+			}
+		}catch(Exception e){
+			result = "fail";
+			msg = "查询年度计划中立项表失败";
+		}
+		map.put("result", result);
+		map.put("msg", msg);
+		return AppUtil.returnObject(new PageData(), map);
+	}
+
+	/**
+	 * 
+	* @Title: saveRecord
+	* @Description: 保存点击记录
+	* @param @return
+	* @param @throws Exception
+	* @return Object
+	* @throws
+	 */
+	@RequestMapping(value="/saveRecord")
+	@ResponseBody
+	public Object saveRecord()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String result = "success";
+		String msg="";
+		try{
+			pd.put("userName", Jurisdiction.getUsername());
+			annualPlanService.saveRecord(pd); //获取年度计划中的立项表
+		}catch(Exception e){
+			e.printStackTrace();
+			result = "fail";
+		}
+		map.put("result", result);
+		map.put("msg", msg);
+		return AppUtil.returnObject(new PageData(), map);
+	}
+
+	/**
+	 * 
+	* @Title: queryRecord
+	* @Description: 查询点击记录
+	* @param @return
+	* @param @throws Exception
+	* @return Object
+	* @throws
+	 */
+	@RequestMapping(value="/queryRecord")
+	@ResponseBody
+	public Object queryRecord()throws Exception{
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("userName", Jurisdiction.getUsername());
+		PageData record = annualPlanService.queryLocationRecord(pd);
+		return record;
+	}
+	
+	/**
+	* 有file文件时
+	* @param movieDto 封装了需要传递过来的参数
+	* @param file 图片file
+	*/
+	@RequestMapping("/editMovieInfo")
+	@ResponseBody
+	public Object editMovieInfo(HttpServletRequest request, MultipartFile file) {
+		Map<String,String> map = new HashMap<String,String>();
+		try {
+			PageData pd = new PageData();
+			pd = this.getPageData();
+			String path = request.getSession().getServletContext().getRealPath("upload");			
+			String fileName = ImportDoc.getNowTime() + "-" + file.getOriginalFilename();
+			File targetFile = new File(path, fileName);
+			String filePath = targetFile.getAbsolutePath();
+			System.out.println(filePath);			
+			if (!targetFile.exists()) {
+				targetFile.mkdirs();
+			}		
+			file.transferTo(targetFile);
+			pd.put("PIC_NAME", fileName);
+			pd.put("CTIME", Tools.date2Str(new Date()));
+			annualPlanService.addPictureInfo(pd); //上传成功的图片信息保存到数据库
+			map.put("result", "true");
+		} catch (IllegalStateException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			map.put("result", "false");
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			map.put("result", "false");
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			map.put("result", "false");
+		}
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**
+	* 删除图片
+	* @param movieDto 封装了需要传递过来的参数
+	* @param file 图片file
+	*/
+	@RequestMapping("/deletePicture")
+	@ResponseBody
+	public Object deletePicture(HttpServletRequest request) {
+		Map<String,String> map = new HashMap<String,String>();
+		try {
+			PageData pd = new PageData();
+			pd = this.getPageData();		
+			String fileName = pd.get("NAME").toString();
+			if(new File(request.getSession().getServletContext().getRealPath("/upload") + "/"+fileName).exists()){
+				new File(request.getSession().getServletContext().getRealPath("/upload") + "/"+fileName).delete();
+				annualPlanService.deletePictureInfo(pd); //删除数据库中的图片记录
+			}	
+			map.put("result", "true");
+		} catch (IllegalStateException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			map.put("result", "false");
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			map.put("result", "false");
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			map.put("result", "false");
+		}
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**查看图片
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showPicture")
+	public ModelAndView showPicture()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String name = pd.get("name").toString();
+		mv.setViewName("information/annualPlan/showPicture");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualPlanKGController.class


+ 883 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/AnnualPlanKGController.java

@@ -0,0 +1,883 @@
+package com.zhcs.dt.controller.information.annualPlan;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.InputStreamReader;
+import java.math.BigDecimal;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+import org.apache.commons.httpclient.util.HttpURLConnection;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.service.information.annualPlan.AnnualPlanCompManager;
+import com.zhcs.dt.service.information.annualPlan.AnnualPlanManager;
+import com.zhcs.dt.service.information.annualPlan.DownloadZip;
+import com.zhcs.dt.service.information.annualPlan.MultExcelUtils;
+import com.zhcs.dt.service.information.annualPlan.TotalAmountUtil;
+import com.zhcs.dt.service.information.annualPlan.impl.AnnualBaseInfoService;
+import com.zhcs.dt.service.task.impl.DailyTaskService;
+import com.zhcs.dt.task.DailyUrlUtil;
+import com.zhcs.dt.task.HttpCallInterfaceUtil;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.UuidUtil;
+
+/** 
+ * 类名称:年度养护计划
+ * 创建人:Yuanf
+ * 创建时间:2018-11-12
+ */
+@Controller
+@RequestMapping(value="/annualPlanKG")
+class AnnualPlanKGController extends BaseController {
+	String menuUrl = "annualPlanComp/list.do"; //菜单地址(权限用)
+	@Resource(name="annualPlanCompService")
+	private AnnualPlanCompManager annualPlanCompService;
+	@Resource(name="annualPlanService")
+	private AnnualPlanManager annualPlanService;
+	@Resource(name="dailyTaskService")
+	private DailyTaskService dailyTaskService;
+	@Resource(name="annualBaseInfoService")
+	private AnnualBaseInfoService annualBaseInfoService;
+	
+	List<String> newTables = new ArrayList<String>();
+	String[] tabls = {"annual_plan_list","annual_plan_comp_list","annual_table_list"};
+	
+    @RequestMapping("/exporthz")
+    public String exporthz(HttpServletRequest request,HttpServletResponse response) throws Exception{
+        String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
+        ModelAndView mv = this.getModelAndView();
+        PageData pd = new PageData();
+        pd = this.getPageData();
+        List<String> paths = new ArrayList<String>();
+        List<String> result = new ArrayList<String>();
+        //excel文档
+        List<PageData> exceldata = setMultExcelData(pd);
+        MultExcelUtils ex = new MultExcelUtils();
+        String excelpath = ex.exportExcel(pd.getString("exportname")+".xlsx",path,response,exceldata);
+        result.add(excelpath);
+        //zip压缩下载
+        DownloadZip.downloadZip(response,request,result,path);
+        return null;
+    }
+    
+    public List<PageData> setMultExcelData(PageData param) throws Exception {
+        List<PageData> result = new ArrayList<PageData>();
+        String[] modelNames = {"养护计划汇总","日常养护计划汇总","预防养护计划汇总",
+                "修复养护计划汇总","专项养护计划汇总",
+                "试验检测项目计划汇总","科研项目计划汇总"};
+        String[] keyStrs = {
+            "DESIGN_KM,CARE_KM,DAILY_DESIGN,DAILY_COMPLETE_KM,"
+                + "MINOR_PREVENTION_DESIGN,MIDDLE_PREVENTION_DESIGN,OVERHAUL_PREVENTION_DESIGN,PREVENTION_DESIGN,"
+                + "MINOR_REPAIR_DESIGN,MIDDLE_REPAIR_DESIGN,OVERHAUL_DESIGN,REPAIR_DESIGN,"
+                + "SPECIAL_DESIGN,TEST_DESIGN,SCIENTIFIC_DESIGN,DEVICE_DESIGN,RESERVE_TOTAL_COST,RESERVE_DESIGN,ZFY_COST,ZFY_COMPLETE"
+            ,"DESIGN_KM,CARE_KM,"
+                    + "CLEAN,PATROL,SUBGRADE,PAVEMENT,BRIDGE,CULVERT,TUNNEL,GREEN,SAFE,LINE,CAR,EMERGENCY,ZFY_COST,ZFY_COMPLETE"
+            ,"DESIGN_KM,CARE_KM,"
+                    + "MIN_SUBGRADE,MIN_PAVEMENT,MIN_BRIDGE,MIN_TUNNEL,MIN_TOTAL,"
+                    + "MID_SUBGRADE,MID_PAVEMENT,MID_BRIDGE,MID_TUNNEL,MID_TOTAL,"
+                    + "MAX_SUBGRADE,MAX_PAVEMENT,MAX_BRIDGE,MAX_TUNNEL,MAX_TOTAL,"
+                    + "SUBGRADE_TOTAL,PAVEMENT_TOTAL,BRIDGE_TOTAL,TUNNEL_TOTAL,TOTAL"
+            ,"DESIGN_KM,CARE_KM,"
+                    + "MIN_SUBGRADE,MIN_PAVEMENT,MIN_BRIDGE,MIN_TUNNEL,MIN_TRAFFIC_SAFE,MIN_ROADSIDE,MIN_GREEN,MIN_OTHER,MIN_TOTAL,"
+                    + "MID_SUBGRADE,MID_PAVEMENT,MID_BRIDGE,MID_TUNNEL,MID_TRAFFIC_SAFE,MID_ROADSIDE,MID_GREEN,MID_OTHER,MID_TOTAL,"
+                    + "MAX_SUBGRADE,MAX_PAVEMENT,MAX_BRIDGE,MAX_TUNNEL,MAX_TRAFFIC_SAFE,MAX_ROADSIDE,MAX_GREEN,MAX_OTHER,MAX_TOTAL,"
+                    + "SUBGRADE_TOTAL,PAVEMENT_TOTAL,BRIDGE_TOTAL,TUNNEL_TOTAL,TRAFFIC_SAFE_TOTAL,ROADSIDE_TOTAL,GREEN_TOTAL,OTHER_TOTAL,HJ_TOTAL"
+            ,"DESIGN_KM,CARE_KM,"
+                + "SUBGRADE,PAVEMENT,BRIDGE,TUNNEL,TRAFFIC_SAFE,ROADSIDE,GREEN,OTHER,TOTAL"
+            ,"DESIGN_KM,CARE_KM,"
+                    + "SUBGRADE,PAVEMENT,BRIDGE,TUNNEL,TRAFFIC_SAFE,ROADSIDE,OTHER,TOTAL"
+            ,"DESIGN_KM,CARE_KM,"
+                    + "SUBGRADE,PAVEMENT,BRIDGE,OTHER,TOTAL"
+        };
+        String[] tableNames = {"annual_comp_sumtable_view","annual_daily_comp_sumtable_view","annual_prevention_comp_sumtable_view",
+                "annual_repair_comp_sumtable_view","annual_special_comp_sumtable_view",
+                "annual_test_comp_sumtable_view","annual_scientific_comp_sumtable_view"};
+        int[] startRowIndexs = {3,2,3,4,2,2,2};
+        int[] tabletype = {6,6,6,6,6,6,6};
+        int[] totalRange = {2,2,2,2,2,2,2};
+        String[][][] funcArrys = {
+        		{
+        			{"percent","DAILY_COMPLETE_KM","ROUND(IF(ISERROR((F#row#/E#row#)),\"0\",(F#row#/E#row#)),1)"},
+        			{"percent","ZFY_COMPLETE","ROUND(IF(ISERROR((V#row#/E#row#)),\"0\",(V#row#/E#row#)),1)"},
+        		},
+        		{
+        			{"percent","ZFY_COMPLETE","ROUND(IF(ISERROR((R#row#/E#row#)),\"0\",(R#row#/E#row#)),1)"}
+        		},{},{},{},{},{}};
+        PageData pd = new PageData();
+        for (int i = 0; i < tableNames.length; i++) {
+            PageData data = new PageData();
+            pd.put("type", tableNames[i]);
+            pd.put("YEAR", param.get("YEAR"));
+            pd.put("table",  "oa_department_"+param.get("YEAR").toString());
+            List<PageData> list = annualPlanCompService.gethzdata(pd);
+          //养护计划汇总,总费用、总费用/公里计算
+        	if(i==0){
+        		list = TotalAmountUtil.yhjhTotalAmount(list);
+        	}
+        	//日常养护汇总
+        	if(i==1){
+        		list = TotalAmountUtil.rcyhTotalAmount(list);
+        	}
+            data.put("list", list);
+            data.put("modelName", modelNames[i]);
+            data.put("keyStr", keyStrs[i]);
+            data.put("startRowIndex", startRowIndexs[i]);
+            data.put("tabletype", tabletype[i]);
+            data.put("funcArry", funcArrys[i]);
+            data.put("totalRange", totalRange[i]);
+            data.put("pd", pd);
+            result.add(data);
+        }
+        return result;
+    }
+    
+    @RequestMapping("/exportmx")
+    public String exportmx(HttpServletRequest request,HttpServletResponse response) throws Exception{
+        String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
+        ModelAndView mv = this.getModelAndView();
+        PageData pd = new PageData();
+        pd = this.getPageData();
+        List<String> paths = new ArrayList<String>();
+        List<String> result = new ArrayList<String>();
+        //excel文档
+        List<PageData> exceldata = setMxExcelData(pd);
+        MultExcelUtils ex = new MultExcelUtils();
+        String excelpath = ex.exportExcel(pd.getString("exportname")+".xlsx",path,response,exceldata);
+        result.add(excelpath);
+        //zip压缩下载
+        DownloadZip.downloadZip(response,request,result,path);
+        return null;
+    }
+    
+    public List<PageData> setMxExcelData(PageData param) throws Exception {
+        List<PageData> result = new ArrayList<PageData>();
+        String[] modelNames = {"预防养护计划统计表","修复养护计划统计表","专项养护计划统计表","应急养护计划统计表"
+        	,"试验检测项目计划统计表","科研项目计划统计表","设备大修项目计划统计表"};
+        String[] keyStrs = {
+        	"PROJECT_NAME,PROJECT_TYPE,SCALE,PLAN_QUANTITIES,PLAN_COST,REMARKS"
+        	,"PROJECT_NAME,PROJECT_TYPE,SCALE,PLAN_QUANTITIES,PLAN_COST,REMARKS"
+        	,"SPECIAL_PROJECT_NAME,MAIN_WORK_CONTENTS,PLAN_COST,REMARKS"
+            ,"PROJECT_NAME,PROJECT_TYPE,SCALE,PLAN_QUANTITIES,PLAN_COST,REMARKS"
+            ,"PROJECT_NAME,PROJECT_TYPE,CONTENT,PLAN_COST,REMARKS"
+            ,"PROJECT_NAME,PROJECT_TYPE,CONTENT,PLAN_COST,MATTER_YEAR,MATTER_NEW_CARRY,MATTER_CONSULT" 
+            ,"PROJECT_NAME,PROJECT_TYPE,COMPLETE_DESCRIBE,PLAN_COST,REMARKS"                                                         
+        };
+        String[] tableNames = {"highway_prevention_plan_sumtable_view2","highway_repair_comp_sumtable_view2","highway_special_comp_sumtable_view2"
+        	,"highway_emergency_comp_sumtable_view2","highway_test_comp_sumtable_view2"
+        	,"highway_scientific_comp_sumtable_view2","highway_equipment_overhaul_comp_sumtable_view2"          
+            };
+        int[] startRowIndexs = {3,3,3,3,3,3,3};
+        int[] tabletype = {6,6,6,6,6,6,6};
+        int[] totalRange = {6,6,4,5,5,5,5};
+        String[][][] funcArrys = {
+            {
+                {"null","REMARKS","\"\""}
+            },{
+                {"null","REMARKS","\"\""}
+            },{
+                {"null","REMARKS","\"\""}
+            },{
+                {"null","REMARKS","\"\""}
+            },{
+                {"null","REMARKS","\"\""}
+            },{
+                {"null","REMARKS","\"\""}
+            },{
+                {"null","REMARKS","\"\""}
+            }
+        };
+        PageData pd = new PageData();
+        for (int i = 0; i < tableNames.length; i++) {
+        	
+            PageData data = new PageData();
+            pd.put("type", tableNames[i]);
+            pd.put("YEAR", param.get("YEAR"));
+            pd.put("table", "oa_department_"+param.get("YEAR"));
+            List<PageData> list = annualPlanCompService.getProjectData(pd);
+            data.put("list", list);
+            data.put("modelName", modelNames[i]);
+            data.put("keyStr", keyStrs[i]);
+            data.put("startRowIndex", startRowIndexs[i]);
+            data.put("tabletype", tabletype[i]);
+            data.put("funcArry", funcArrys[i]);
+            data.put("totalRange", totalRange[i]);
+            data.put("totalCost", "");
+            if (tabletype[i]==7) {
+                String totalCost = annualPlanCompService.getFeesTotalCost(Integer.parseInt(param.getString("YEAR"))-1+"");
+                data.put("totalCost", totalCost);
+            }
+            data.put("pd", pd);
+            result.add(data);
+        }
+        return result;
+    }
+    
+	/**查询所选汇总表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showSumTable")
+	public ModelAndView showSumTable(Model model)throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		mv.setViewName("information/annualPlan/annualSumTablePlan/"+pd.get("type"));
+		//设置查询oa_department的动态表名
+		String oa_department_table = "oa_department_"+pd.get("YEAR");
+		pd.put("table", oa_department_table);
+		List<PageData> varList = annualPlanCompService.getdata(pd);
+		//处理前段显示值
+		//1.养护计划汇总 控制格式化
+		varList = formatEmptyString(varList);
+		if( null != pd.get("type") && !pd.get("type").toString().isEmpty()&& null != varList && varList.size()>0 ){
+			//养护计划汇总-合计总费用
+			if(pd.get("type").toString().equals("annual_comp_sumtable_view")){
+				varList = formatAnnualCompSumtable(varList);
+			}
+		}
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**查询日常汇总表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showDailySumTable")
+	public ModelAndView showDailySumTable(Model model)throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("table", "oa_department_"+pd.getString("YEAR"));
+		mv.setViewName("information/annualPlan/annualSumTablePlan/highway_daily_plan_statable");
+		List<PageData> varList = annualPlanCompService.getDailydata(pd);
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	/**查询所选明细表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showDettTable")
+	public ModelAndView showDettTable(Model model)throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("table", "oa_department_"+pd.get("YEAR").toString());
+		mv.setViewName("information/annualPlan/annualSumTablePlan/"+pd.get("type"));
+		List<PageData> dettList = annualPlanCompService.getDettData(pd);
+		if(dettList ==null || dettList.equals(" ") || dettList.isEmpty() ) {
+			mv.addObject("dettList", "");
+		}else {
+			LinkedHashMap<String, LinkedHashMap<String, ArrayList<PageData>>> varMap = new LinkedHashMap<String, LinkedHashMap<String, ArrayList<PageData>>>();
+			Double sumPlanCost = (double) 0;
+			Double sumActualCost = (double) 0;
+			Double sumAuditFee = (double) 0;
+			String prevCompanyName = "";
+			String prevCompanyID = "";
+			LinkedHashMap<String, ArrayList<PageData>> xjroadMap = new LinkedHashMap<String, ArrayList<PageData>>();
+			for(PageData tpd : dettList){
+				String company = tpd.get("COMPANY").toString();
+				String companyid = tpd.get("COMPANY_ID").toString();
+				String road = tpd.get("ROAD").toString();
+				if(varMap.containsKey(company)){
+					LinkedHashMap<String, ArrayList<PageData>> roadMap = varMap.get(company);
+					if(roadMap != null && roadMap.containsKey(road)){
+						if(tpd.get("PLAN_COST")!=null){
+							double plan = Double.parseDouble(tpd.get("PLAN_COST").toString());
+							plan = formatNum(plan);
+							sumPlanCost += plan;
+						}
+						if(tpd.get("ACTUAL_COST")!=null){
+							double actual = Double.parseDouble(tpd.get("ACTUAL_COST").toString());
+							actual = formatNum(actual);
+							sumActualCost += actual;
+						}
+						if(tpd.get("AUDIT_FEE")!=null){
+							double fee = Double.parseDouble(tpd.get("AUDIT_FEE").toString());
+							fee = formatNum(fee);
+							sumAuditFee += fee;
+						}
+						ArrayList<PageData> pList = roadMap.get(road);
+						pList.add(tpd);
+					}else{
+						if(tpd.get("PLAN_COST")!=null){
+							double planc = Double.parseDouble(tpd.get("PLAN_COST").toString());
+							planc = formatNum(planc);
+							sumPlanCost += planc;
+						}
+						if(tpd.get("ACTUAL_COST")!=null){
+							double actualc = Double.parseDouble(tpd.get("ACTUAL_COST").toString());
+							actualc = formatNum(actualc);
+							sumActualCost += actualc;
+						}
+						if(tpd.get("AUDIT_FEE")!=null){
+							double feec = Double.parseDouble(tpd.get("AUDIT_FEE").toString());
+							feec = formatNum(feec);
+							sumAuditFee += feec;
+						}
+						ArrayList<PageData> npList = new ArrayList<PageData>();
+						npList.add(tpd);
+						roadMap.put(road, npList);					
+					}
+					xjroadMap = roadMap;
+					prevCompanyName = company;
+					prevCompanyID = companyid;
+				}else{					
+					if(varMap.size() > 0){
+						ArrayList<PageData> xjList = new ArrayList<PageData>();
+						PageData xjPd = new PageData();
+						xjPd.put("COMPANY", prevCompanyName);
+						xjPd.put("COMPANY_ID", prevCompanyID);
+						xjPd.put("ROAD", "小计");
+						xjPd.put("PROJECT_NAME", "");
+						xjPd.put("PROJECT_TYPE", "");
+						xjPd.put("SCALE", "");
+						xjPd.put("PLAN_QUANTITIES", "");
+						xjPd.put("PLAN_COST", sumPlanCost);
+						xjPd.put("ACTUAL_QUANTITIES", "");
+						xjPd.put("PLAN_COST", sumPlanCost);
+						xjPd.put("REMARKS", "");
+						xjPd.put("AUDIT_FEE", sumAuditFee);
+						xjList.add(xjPd);
+						xjroadMap = varMap.get(prevCompanyName);
+						xjroadMap.put("小计", xjList);
+						varMap.put(prevCompanyName, xjroadMap);
+					}	
+					ArrayList<PageData> mpList = new ArrayList<PageData>();
+					LinkedHashMap<String, ArrayList<PageData>> mroadMap = new LinkedHashMap<String, ArrayList<PageData>>();
+					mpList.add(tpd);				
+					mroadMap.put(road, mpList);
+					varMap.put(company, mroadMap);
+					prevCompanyName = company;
+					prevCompanyID = companyid;
+					sumPlanCost = (double) 0;
+					sumActualCost = (double) 0;
+					if(tpd.get("PLAN_COST")!=null){
+						double planco = Double.parseDouble(tpd.get("PLAN_COST").toString());
+						planco = formatNum(planco);
+						sumPlanCost += planco;
+					}
+					if(tpd.get("ACTUAL_COST")!=null){
+						double actualco = Double.parseDouble(tpd.get("ACTUAL_COST").toString());
+						actualco = formatNum(actualco);
+						sumActualCost += actualco;
+					}
+					if(tpd.get("AUDIT_FEE")!=null){
+						double feeco = Double.parseDouble(tpd.get("AUDIT_FEE").toString());
+						feeco = formatNum(feeco);
+						sumAuditFee += feeco;
+					}
+				}
+			}
+			
+			PageData lastxjPd = new PageData();
+			lastxjPd.put("COMPANY", prevCompanyName);
+			lastxjPd.put("COMPANY_ID", prevCompanyID);
+			lastxjPd.put("ROAD", "小计");
+			lastxjPd.put("PROJECT_NAME", "");
+			lastxjPd.put("PROJECT_TYPE", "");
+			lastxjPd.put("SCALE", "");
+			lastxjPd.put("PLAN_QUANTITIES", "");
+			lastxjPd.put("PLAN_COST", sumPlanCost);
+			lastxjPd.put("ACTUAL_QUANTITIES", "");
+			lastxjPd.put("AUDIT_FEE", sumAuditFee);
+			lastxjPd.put("REMARKS", "");
+			lastxjPd.put("ACTUAL_COST", sumActualCost);
+			
+			List<PageData> dettListNew = new ArrayList<PageData>();
+			for(Entry<String, LinkedHashMap<String, java.util.ArrayList<PageData>>> centry : varMap.entrySet()){
+				HashMap<String, java.util.ArrayList<PageData>> roadMap = centry.getValue();
+				for(Entry<String, java.util.ArrayList<PageData>> rentry : roadMap.entrySet()){
+					ArrayList<PageData> projectList = rentry.getValue();
+					for(PageData ppd : projectList){
+						dettListNew.add(ppd);
+					}
+				}
+			}
+			dettListNew.add(lastxjPd);
+			
+			mv.addObject("dettList", dettListNew);
+		}
+		
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**查询所选汇总表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showPlanList")
+	public ModelAndView showPlanList()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("table", "oa_department_"+pd.getString("YEAR"));
+		String sptime = annualPlanCompService.getSPTime(pd);
+		List<PageData> nPlanList = annualPlanCompService.getnPlanList(pd);
+		List<PageData> planList = annualPlanCompService.getPlanList(pd);
+		mv.addObject("nPlanList", nPlanList);
+		mv.addObject("planList", planList);
+		mv.addObject("sptime", sptime);
+	    mv.addObject("pd", pd);
+	    mv.setViewName("information/annualPlan/annualPlan_showPlanList");
+	    return mv;
+	}
+	
+	/**查询所有公司和路段
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showCompanyRoadList")
+	public ModelAndView showCompanyRoadList()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		//动态oa_department表
+		pd.put("table", "oa_department_"+pd.getString("YEAR").toString());
+		List<PageData> companyRoadList = annualPlanCompService.getCompanyRoadList(pd);
+		Map<String,List<String>> companyRoad = new HashMap<String,List<String>>();
+		List<String> companyList = new ArrayList<String>();
+		for(PageData tpd : companyRoadList){
+			if(tpd.get("PARENT_ID").equals("0")){
+				companyList.add(tpd.get("NAME").toString());
+				List<String> roadList = new ArrayList<String>();
+				for(PageData tempPd : companyRoadList){					
+					if(tempPd.get("PARENT_ID").equals(tpd.get("DEPARTMENT_ID"))){
+						roadList.add(tempPd.get("NAME").toString());						
+					}
+				}
+				companyRoad.put(tpd.get("NAME").toString(), roadList);
+			}
+		}
+		mv.addObject("companyList", companyList);
+		mv.addObject("companyRoad", JSONArray.fromObject(companyRoad));
+	    mv.addObject("pd", pd);
+	    mv.setViewName("information/annualPlan/annualPlanComp/annualPlan_showCompanyRoadList");
+	    return mv;
+	}
+	
+	 /**显示、编辑子表格
+		 * @param
+		 * @throws Exception
+		 */
+		@RequestMapping(value="/showTableRecod")
+		public ModelAndView showTableRecod()throws Exception{
+			ModelAndView mv = this.getModelAndView();
+			PageData pd = new PageData();
+			pd = this.getPageData();
+			List<PageData> varList = new ArrayList<PageData>();
+			JSONArray arr = JSONArray.fromObject(varList);
+			mv.addObject("varList", arr);
+			String year = pd.get("YEAR").toString();
+			pd.put("table", "oa_department_"+year);
+			pd = annualBaseInfoService.findRoadId(pd);
+			pd.put("YEAR", year);
+			//mv.setViewName("information/annualPlan/annualTableRecord/highway_daily_comp_dettable");
+			mv.setViewName("information/annualPlan/annualTableRecord/highway_daily_comp_dettable_dy");
+			mv.addObject("pd", pd);
+			mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+			return mv;
+		}
+	
+	/**修改计划和下面立项表的状态
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/changePlanStatus")
+	@ResponseBody
+	public Object changePlanStatus()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		if(pd.get("TYPE") != null){
+			if("1".equalsIgnoreCase(pd.get("TYPE").toString())){
+				pd.put("STATUS", "审批通过");
+			}else{
+				pd.put("STATUS", "控股驳回");
+			}
+		}
+		try{	
+			annualPlanCompService.changeCompPlanStatus(pd); //同步修改COMP表状态
+			for(String tableName : tabls){
+				pd.put("TABLE_NAME", tableName);
+				if("annual_table_list".equalsIgnoreCase(tableName) && "控股驳回".equalsIgnoreCase(pd.get("STATUS").toString())){
+					pd.put("STATUS", "审批不通过");
+				}
+				annualPlanCompService.changePlanStatus(pd); //修改状态				
+			}			
+			map.put("result", "success");
+			//TODO 调用接口发送数据
+			String sendStr="";
+			pd.put("table", "oa_department_"+pd.get("YEAR"));
+			List<PageData> passPlanList = annualPlanService.getPassPlan(pd);
+			if(null != passPlanList && passPlanList.size()>0){
+				JSONArray jsonArray=JSONArray.fromObject(passPlanList);
+				sendStr = jsonArray.toString();
+			    System.out.println(sendStr);
+			    DailyUrlUtil dailyUrlUtil = new DailyUrlUtil();
+			    String approvalurl = dailyUrlUtil.getApprovalUrl();
+				String result =  HttpCallInterfaceUtil.sendPost(approvalurl, sendStr, false);
+				if(null != result && !result.isEmpty()){
+					 JSONObject jsonObj = JSONObject.fromObject(result);
+    				 /** 请求结果保存进 数据库日志*/
+					 saveLog(sendStr,jsonObj.get("msg").toString(),jsonObj.get("data").toString());
+				}
+				else{
+					saveLog(sendStr,"","");
+				}
+			}
+		}catch(Exception e){
+			map.put("result", "操作失败");
+		}
+		return AppUtil.returnObject(new PageData(), map);
+	}	
+	
+	/**更新立项表中的审批费用和备注
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/saveData")
+	@ResponseBody
+	public Object saveData()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
+		String tableName = pd.get("TABLETYPE").toString();
+		String year = pd.get("YEAR").toString();
+		List<PageData> pdList = dealData(jsonarray, year,tableName);
+		try{
+		for(PageData tpd : pdList){
+			annualPlanCompService.updateAuditFee(tpd);
+		}
+			map.put("msg", "success");
+		}catch(Exception e){
+			System.out.println(e);
+			map.put("msg", "操作失败");
+		}
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**
+	 * 处理审批费用
+	 */
+	@ResponseBody
+	public List<PageData> dealData(JSONArray jsonarray, String year, String tableName) throws Exception {
+		List<PageData> pdList = new ArrayList<PageData>();
+		if (jsonarray.size() > 0) {
+			for (int i = 0; i < jsonarray.size(); i++) {
+				PageData pd = new PageData();
+				JSONObject job = jsonarray.getJSONObject(i);
+//				if(!"".equalsIgnoreCase(job.get("AUDIT_FEE").toString().trim())){
+					pd.put("YEAR", year);
+					pd.put("TABLE_NAME", tableName);
+					pd.put("COMPANY_ID", job.get("COMPANY_ID"));
+					pd.put("ROAD_ID", job.get("ROAD_ID"));
+					pd.put("PROJECT_NAME", job.get("PROJECT_NAME"));
+					pd.put("AUDIT_FEE", job.get("AUDIT_FEE"));
+					pd.put("AUDIT_MAKER", job.get("AUDIT_MAKER"));
+					pdList.add(pd);
+//				}
+			}
+		}
+		return pdList;
+	}
+	
+	/**更新日常养护计划中的审核费用
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/saveDailyData")
+	@ResponseBody
+	public Object saveDailyData(String data)throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
+		String tableName = pd.get("TABLETYPE").toString();
+		String year = pd.get("YEAR").toString();
+		List<PageData> pdList = dealDailyData(jsonarray, year,tableName);
+		try{
+			for(PageData tpd : pdList){
+				annualPlanCompService.editTableRecod(tpd);
+			}
+			map.put("msg", "success");
+		}catch(Exception e){
+			System.out.println(e);
+			map.put("msg", "操作失败");
+		}
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**
+	 * 处理日常养护审批费用
+	 */
+	@ResponseBody
+	public List<PageData> dealDailyData(JSONArray jsonarray, String year, String tableName) throws Exception {
+		List<PageData> pdList = new ArrayList<PageData>();
+		for (Object object : jsonarray) {
+			PageData tpd = new PageData();
+            JSONObject arrMap = JSONObject.fromObject(object);
+            Set entryarray = arrMap.entrySet();
+            ArrayList<Object> keyarray = new ArrayList<Object>();
+            ArrayList<Object> valuearray = new ArrayList<Object>();
+            for (Object entry : entryarray) {
+            	Object[] arr = entry.toString().split("=");
+                boolean saveFlag = true;
+            	if (entry != null){
+	                saveFlag = !"ROAD".equals(arr[0]) && !"YEAR".equals(arr[0]) && !"COMPANY".equals(arr[0])
+	                    &&!"ROAD_ID".equals(arr[0]) && !"COMPANY_ID".equals(arr[0]);
+	                if (saveFlag) {            
+		                if (arr.length > 1) {
+		                	keyarray.add(arr[0]);
+		                    valuearray.add(arr[1]);
+		                }
+	                }
+            	}
+            }
+            if(!keyarray.isEmpty()){
+	            tpd.put("KEYS", StringUtils.join(keyarray.toArray(), ","));
+	            tpd.put("KEYARRAY", keyarray);
+	            tpd.put("VALUEARRAY", valuearray);
+	            tpd.put("ROAD_ID", arrMap.get("ROAD_ID"));
+	            tpd.put("COMPANY_ID", arrMap.get("COMPANY_ID"));
+	            tpd.put("YEAR", arrMap.get("YEAR"));
+	            pdList.add(tpd);
+            }
+        }
+		return pdList;
+	}
+	
+	/**设置提交时间阈值
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/saveTime")
+	@ResponseBody
+	public Object saveTime()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		try{	
+			String timepd = annualPlanCompService.getSPTime(pd);
+			if(timepd != null){
+				annualPlanCompService.updateSPTime(pd);
+			}else{
+				annualPlanCompService.insertSPTime(pd);
+			}
+			map.put("result", "success");
+		}catch(Exception e){
+			map.put("result", "操作失败");
+		}
+		return AppUtil.returnObject(new PageData(), map);
+	}	
+	
+	/**更新养护计划汇总的审批费用
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/saveAuditFee")
+	@ResponseBody
+	public Object saveAuditFee(String inputData)throws Exception{
+		System.out.print("inputData::"+inputData);
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		JSONArray jsonarray = JSONArray.fromObject(inputData);
+		List<PageData> data = dealData(jsonarray);
+		//判断执行update 还是 insert
+		annualPlanCompService.saveOrUpdatBatchAuditFee(data);
+		Map<String,String> map = new HashMap<String,String>();
+		map.put("result", "success");
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	public List<PageData> dealData(JSONArray jsonarray) throws Exception {
+		List<PageData> pdList = new ArrayList<PageData>();
+		if (jsonarray.size() > 0) {
+			for (int i = 0; i < jsonarray.size(); i++) {
+				PageData pd = new PageData();
+				JSONObject job = jsonarray.getJSONObject(i);
+				pd.put("AUDIT_FEE", job.get("AUDIT_FEE"));
+				pd.put("COMPANY_ID", job.get("COMPANY_ID"));
+				pd.put("COMPANY", job.get("COMPANY"));
+				pd.put("ROAD", job.get("ROAD"));
+				pd.put("ROAD_ID", job.get("ROAD_ID"));
+				pd.put("YEAR", job.get("YEAR"));
+				pdList.add(pd);
+			}
+		}
+		return pdList;
+	}
+	
+	/**
+	 * 格式化decimal类型空值
+	 * @param type
+	 * @param varList
+	 * @return
+	 */
+	public List<PageData> formatEmptyString(List<PageData> varList){
+		if(null != varList && varList.size()>0){
+			BigDecimal bigDecimal  = new BigDecimal("0"); 
+			for(PageData o:varList){
+				if(null != o  ){
+					if(null != o.get("RESERVE_DESIGN")){
+						BigDecimal oBigDecimal = (BigDecimal)o.get("RESERVE_DESIGN");
+						if(oBigDecimal.compareTo(bigDecimal) ==0){
+							o.put("RESERVE_DESIGN", "");
+						}
+						else{
+							BigDecimal ten = new BigDecimal("10.00");
+			        		if(oBigDecimal.compareTo(ten)<1){
+			        			oBigDecimal = oBigDecimal.setScale(1, BigDecimal.ROUND_HALF_UP);
+			        		}
+			        		else{
+			        			oBigDecimal = oBigDecimal.setScale(0, BigDecimal.ROUND_HALF_UP);
+			        		}
+			        		o.put("RESERVE_DESIGN", oBigDecimal);
+						}
+					}
+				}
+			}
+		}
+		return varList;
+	}
+	
+	/**
+	 * 养护计划汇总-合计总费用
+	 * @param varList
+	 * @return
+	 */
+	public List<PageData> formatAnnualCompSumtable(List<PageData> varList){
+		for(PageData data:varList){
+			BigDecimal zfy = new BigDecimal("0");
+			BigDecimal daily_decimal  = new BigDecimal("0");
+			BigDecimal prevention_decimal  = new BigDecimal("0");
+			BigDecimal repair_decimal  = new BigDecimal("0");
+			BigDecimal special_decimal  = new BigDecimal("0");
+			BigDecimal test_decimal  = new BigDecimal("0");
+			BigDecimal scientific_decimal  = new BigDecimal("0");
+			BigDecimal device_decimal  = new BigDecimal("0");
+			BigDecimal reserve_decimal  = new BigDecimal("0");
+			BigDecimal audit_fee_decimal  = new BigDecimal("0");
+			//日常养护-费用
+			if(null != data.get("DAILY_DESIGN")){
+				daily_decimal = TotalAmountUtil.getBigDecimal(data.get("DAILY_DESIGN"));
+			}
+			//预防养护-费用
+			if(null != data.get("PREVENTION_DESIGN")){
+				prevention_decimal = TotalAmountUtil.getBigDecimal(data.get("PREVENTION_DESIGN"));
+			}
+			//修复养护-费用
+			if(null != data.get("REPAIR_DESIGN")){
+				repair_decimal = TotalAmountUtil.getBigDecimal(data.get("REPAIR_DESIGN"));
+			}
+			//专项养护-费用
+			if(null != data.get("SPECIAL_DESIGN")){
+				special_decimal = TotalAmountUtil.getBigDecimal(data.get("SPECIAL_DESIGN"));
+			}
+			//试验检测-费用
+			if(null != data.get("TEST_DESIGN")){
+				test_decimal = TotalAmountUtil.getBigDecimal(data.get("TEST_DESIGN"));
+			}
+			//科研项目-费用
+			if(null != data.get("SCIENTIFIC_DESIGN")){
+				scientific_decimal = TotalAmountUtil.getBigDecimal(data.get("SCIENTIFIC_DESIGN"));
+			}
+			//设备大修-费用
+			if(null != data.get("DEVICE_DESIGN")){
+				device_decimal = TotalAmountUtil.getBigDecimal(data.get("DEVICE_DESIGN"));
+			}
+			//预备费-计划费用
+			if(null != data.get("RESERVE_TOTAL_COST")){
+				reserve_decimal = TotalAmountUtil.getBigDecimal(data.get("RESERVE_TOTAL_COST"));
+			}
+			//预备费-审核费用
+			if(null != data.get("RESERVE_AUDIT_FEE")){
+				audit_fee_decimal = TotalAmountUtil.getBigDecimal(data.get("RESERVE_AUDIT_FEE"));
+				BigDecimal ten = new BigDecimal("10.00");
+        		if(audit_fee_decimal.compareTo(ten)<1){
+        			audit_fee_decimal = audit_fee_decimal.setScale(1, BigDecimal.ROUND_HALF_UP);
+        		}
+        		else{
+        			audit_fee_decimal = audit_fee_decimal.setScale(0, BigDecimal.ROUND_HALF_UP);
+        		}	
+			}
+			if(audit_fee_decimal.compareTo(BigDecimal.ZERO)!=0){
+				zfy = audit_fee_decimal.add(device_decimal.add(scientific_decimal.add(test_decimal.add(special_decimal.add(repair_decimal.add(prevention_decimal.add(daily_decimal)))))));
+			}
+			else{
+				zfy = reserve_decimal.add(device_decimal.add(scientific_decimal.add(test_decimal.add(special_decimal.add(repair_decimal.add(prevention_decimal.add(daily_decimal)))))));
+			}
+			data.put("TOTAL_ZFY", zfy);
+		}
+		return varList;
+	}
+	 /**
+     * 格式化金额
+     * @param cost_num
+     * @return
+     */
+    public double formatNum(double cost_num){
+    	String planstr = "";
+    	if(cost_num < 10){
+    		planstr = String.format("%.1f", cost_num);
+    	}
+    	else{
+    		planstr = String.format("%.0f", cost_num); 
+    	}
+    	cost_num = Double.parseDouble(planstr);
+     return cost_num;
+    }
+	
+    /**
+	  * 调用情况保存进数据库
+	  * @param orgId
+	  * @param yearMonth
+	  * @param responseCode
+	  * @param responseResult
+	  */
+	 public void saveLog(String paramStr,String responseCode,String responseResult){
+		 try {
+			 PageData pd = new PageData();
+			 pd.put("ID", UuidUtil.get32UUID());
+			 pd.put("INTERFACE_NAME", "getPassPlan");
+			 pd.put("PARAM", paramStr);
+			 pd.put("RESPONSE_CODE", responseCode);
+			 pd.put("RESPONSE_TEXT",responseResult);
+			 pd.put("CREATE_TIME", new Date());
+			dailyTaskService.save(pd);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	 }
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/BaseInfoController.class


+ 187 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/BaseInfoController.java

@@ -0,0 +1,187 @@
+package com.zhcs.dt.controller.information.annualPlan;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.information.annualPlan.AnnualBaseInfoManager;
+import com.zhcs.dt.service.information.annualPlan.AnnualPlanManager;
+import com.zhcs.dt.service.information.annualPlan.DownloadZip;
+import com.zhcs.dt.service.information.annualPlan.MultExcelUtils;
+import com.zhcs.dt.service.information.annualPlan.TotalAmountUtil;
+import com.zhcs.dt.service.information.annualPlan.impl.AnnualPlanCompService;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+
+/** 
+ * 类名称:年度养护计划
+ * 创建人:Yuanf
+ * 创建时间:2018-11-12
+ */
+@Controller
+@RequestMapping(value="/baseInfo")
+class BaseInfoController extends BaseController {
+	String menuUrl = "baseInfo/list.do"; //菜单地址(权限用)
+	@Resource(name="annualPlanCompService")
+	private AnnualPlanCompService annualPlanCompService;
+	@Resource(name="annualPlanService")
+	private AnnualPlanManager annualPlanService;
+	
+	@Resource(name="annualBaseInfoService")
+	private AnnualBaseInfoManager annualBaseInfoService;
+	
+	List<String> newTables = new ArrayList<String>();
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"养护计划完成情况");
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		//通过username获取对应的公司和路段,控股集团管理员只可以看到状态为“待审批”和“已完成”的计划,路公司管理员和路段管理员可以看到本公司所有计划,admin没有权限控制
+		PageData userInfo = annualPlanService.getCompanyAndRoad(Jurisdiction.getUsername().toString());	//通过username获取公司和路段
+		//通过ROLE_ID获取角色
+		String roleName = annualPlanService.getRoleName(userInfo.get("ROLE_ID").toString());
+		pd = this.getPageData();
+		if("控股集团管理员".equalsIgnoreCase(roleName)){
+			List<String> yearList = annualPlanService.getKGPlanYearList(pd);	//列出状态不为编制中、新建的年度计划列表
+			mv.setViewName("information/annualPlan/annualBaseInfo/annualBaseInfo_kg_list");
+			mv.addObject("varList", yearList);
+		}		
+		mv.addObject("pd", pd);
+		mv.addObject("userInfo", userInfo);
+		mv.addObject("roleName", roleName);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+    
+	/**查询所选汇总表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showBaseInfoTable")
+	public ModelAndView showBaseInfoTable(Model model)throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		mv.setViewName("information/annualPlan/annualBaseInfo/"+pd.get("type"));
+		pd.put("table", "oa_department_"+pd.getString("YEAR").toString());
+		PageData result = annualBaseInfoService.getBaseInfo(pd);
+		mv.addObject("varList", result.get("companyList"));
+		mv.addObject("total", result.get("total"));
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+
+    @RequestMapping("/exportBaseInfo")
+    public String exporthz(HttpServletRequest request,HttpServletResponse response) throws Exception{
+        String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
+        ModelAndView mv = this.getModelAndView();
+        PageData pd = new PageData();
+        pd = this.getPageData();
+        List<String> paths = new ArrayList<String>();
+        List<String> result = new ArrayList<String>();
+        //excel文档
+        List<PageData> exceldata = setMultExcelData(pd);
+        MultExcelUtils ex = new MultExcelUtils();
+        String excelpath = ex.exportExcel(pd.getString("exportname")+".xlsx",path,response,exceldata);
+        result.add(excelpath);
+        //zip压缩下载
+        DownloadZip.downloadZip(response,request,result,path);
+        return null;
+    }
+    
+    public List<PageData> setMultExcelData(PageData param) throws Exception {
+        List<PageData> result = new ArrayList<PageData>();
+        String[] modelNames = {"控股系统公路道路技术状况现状汇总表","控股系统公路主要病害汇总表",
+                "控股系统交通等信息综合统计表","控股系统养护质量目标表汇总表"};
+        String[] keyStrs = {
+            "DESIGN_KM,CARE_KM,"
+                + "MQI,QUALITY_GRADE,SECOND_ROAD_RATIO,PQI,SCI,BCI,TCI,"
+                + "PCI,RQI,RDI,PBI,PWI,SRI,PSSI,"
+                + "ONE_BRIDGE_NUM,ONE_BRIDGE_PRO,TWO_BRIDGE_NUM,TWO_BRIDGE_PRO,THREE_BRIDGE_NUM,THREE_BRIDGE_PRO,FOUR_BRIDGE_NUM,FOUR_BRIDGE_PRO,FIVE_BRIDGE_NUM,FIVE_BRIDGE_PRO,BRIDGE_TOTAL_NUM"
+            ,"DESIGN_KM,CARE_KM,ROAD_CONDITION,SUBGRADE_EXPLAIN,PAVEMENT_EXPLAIN,BRIDGE_EXPLAIN,OTHER_EXPLAIN,OTHER_MATTER"
+            ,"DESIGN_KM,CARE_KM,TRAFFIC_AMOUNT,CAR_INFO,TOTAL_COST,DAILY_COST,DAILY_KM_COST"
+            ,"DESIGN_KM,CARE_KM,MQI_STATUS,MQI_TARGET,RATE_STATUS,RATE_TARGET,PQI_STATUS,PQI_TARGET,"
+                + "PCI_STATUS,PCI_TARGET,RQI_STATUS,RQI_TARGET,RDI_STATUS,RDI_TARGET,PBI_STATUS,PBI_TARGET,"
+                + "PWI_STATUS,PWI_TARGET,SRI_STATUS,SRI_TARGET,PSSI_STATUS,PSSI_TARGET,SCI_STATUS,SCI_TARGET,"
+                + "BCI_STATUS,BCI_TARGET,TCI_STATUS,TCI_TARGET,TECHNOLOGY_STATUS,TECHNOLOGY_TARGET"
+        };
+        String[] tableNames = {"highway_technica_statable","highway_technica_statable",
+                "highway_traiffcinfo_sumtable","highway_quality_goals_table"};
+        int[] startRowIndexs = {4,3,3,3};
+        int[] tabletype = {6,6,6,6};
+        int[] totalRange = {2,2,2,2};
+        String[][][] funcArrys = {
+        		{
+		        	{"mmul","MQI","IF(ISERROR((D#row#*F#row#)),\"0.00\",(D#row#*F#row#))"},
+		        	{"mmul","SECOND_ROAD_RATIO","IF(ISERROR((H#row#/D#row#)),\"0.00\",(H#row#/D#row#))"},
+		        	{"mmul","PQI","IF(ISERROR((D#row#*I#row#)),\"0.00\",(D#row#*I#row#))"},
+		        	{"mmul","SCI","IF(ISERROR((D#row#*J#row#)),\"0.00\",(D#row#*J#row#))"},
+		        	{"mmul","BCI","IF(ISERROR((D#row#*K#row#)),\"0.00\",(D#row#*K#row#))"},
+		        	{"mmul","TCI","IF(ISERROR((D#row#*L#row#)),\"0.00\",(D#row#*L#row#))"},
+		        	{"mmul","PCI","IF(ISERROR((D#row#*M#row#)),\"0.00\",(D#row#*M#row#))"},
+		        	{"mmul","RQI","IF(ISERROR((D#row#*N#row#)),\"0.00\",(D#row#*N#row#))"},
+		        	{"mmul","RDI","IF(ISERROR((D#row#*O#row#)),\"0.00\",(D#row#*O#row#))"},
+		        	{"mmul","PBI","IF(ISERROR((D#row#*P#row#)),\"0.00\",(D#row#*P#row#))"},
+		        	{"mmul","PWI","IF(ISERROR((D#row#*Q#row#)),\"0.00\",(D#row#*Q#row#))"},
+		        	{"mmul","SRI","IF(ISERROR((D#row#*R#row#)),\"0.00\",(D#row#*R#row#))"},
+		        	{"mmul","PSSI","IF(ISERROR((D#row#*S#row#)),\"0.00\",(D#row#*S#row#))"},
+		        	{"percent","ONE_BRIDGE_PRO","IF(ISERROR((T#row#/AD#row#)*100),\"0.00\",(T#row#/AD#row#)*100)"},
+		        	{"percent","TWO_BRIDGE_PRO","IF(ISERROR((V#row#/AD#row#)*100),\"0.00\",(V#row#/AD#row#)*100)"},
+		        	{"percent","THREE_BRIDGE_PRO","IF(ISERROR((X#row#/AD#row#)*100),\"0.00\",(X#row#/AD#row#)*100)"},
+		        	{"percent","FOUR_BRIDGE_PRO","IF(ISERROR((Z#row#/AD#row#)*100),\"0.00\",(Z#row#/AD#row#)*100)"},
+		        	{"percent","FIVE_BRIDGE_PRO","IF(ISERROR((AB#row#/AD#row#)*100),\"0.00\",(AB#row#/AD#row#)*100)"},
+        		},
+        		{},{},
+        		{
+        			{"mmul","MQI_STATUS","IF(ISERROR((D#row#*F#row#)),\"0.00\",(D#row#*F#row#))"},
+        			{"mmul","RATE_STATUS","IF(ISERROR((D#row#*H#row#)),\"0.00\",(D#row#*H#row#))"},
+        			{"mmul","PQI_STATUS","IF(ISERROR((D#row#*J#row#)),\"0.00\",(D#row#*J#row#))"},
+        			{"mmul","PCI_STATUS","IF(ISERROR((D#row#*L#row#)),\"0.00\",(D#row#*L#row#))"},
+        			{"mmul","RQI_STATUS","IF(ISERROR((D#row#*N#row#)),\"0.00\",(D#row#*N#row#))"},
+        			{"mmul","RDI_STATUS","IF(ISERROR((D#row#*P#row#)),\"0.00\",(D#row#*P#row#))"},
+        			{"mmul","PBI_STATUS","IF(ISERROR((D#row#*R#row#)),\"0.00\",(D#row#*R#row#))"},
+        			{"mmul","PWI_STATUS","IF(ISERROR((D#row#*T#row#)),\"0.00\",(D#row#*T#row#))"},
+        			{"mmul","SRI_STATUS","IF(ISERROR((D#row#*V#row#)),\"0.00\",(D#row#*V#row#))"},
+        			{"mmul","PSSI_STATUS","IF(ISERROR((D#row#*X#row#)),\"0.00\",(D#row#*X#row#))"},
+        			{"mmul","SCI_STATUS","IF(ISERROR((D#row#*Z#row#)),\"0.00\",(D#row#*Z#row#))"},
+        			{"mmul","BCI_STATUS","IF(ISERROR((D#row#*AB#row#)),\"0.00\",(D#row#*AB#row#))"},
+        			{"mmul","TCI_STATUS","IF(ISERROR((D#row#*AD#row#)),\"0.00\",(D#row#*AD#row#))"},
+        			{"mmul","TECHNOLOGY_STATUS","IF(ISERROR((D#row#*AF#row#)),\"0.00\",(D#row#*AF#row#))"},
+        		}
+        	};
+        PageData pd = new PageData();
+        for (int i = 0; i < tableNames.length; i++) {
+            PageData data = new PageData();
+            pd.put("type", tableNames[i]);
+            pd.put("YEAR", param.get("YEAR"));
+            pd.put("table", "oa_department_"+param.get("YEAR").toString());
+            List<PageData> list = annualPlanCompService.getBaseInfoData(pd);
+            data.put("list", list);
+            data.put("modelName", modelNames[i]);
+            data.put("keyStr", keyStrs[i]);
+            data.put("startRowIndex", startRowIndexs[i]);
+            data.put("tabletype", tabletype[i]);
+            data.put("funcArry", funcArrys[i]);
+            data.put("totalRange", totalRange[i]);
+            data.put("pd", pd);
+            result.add(data);
+        }
+        return result;
+    }
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/HighwayDailyCompDettableController.class


+ 93 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/HighwayDailyCompDettableController.java

@@ -0,0 +1,93 @@
+package com.zhcs.dt.controller.information.annualPlan;
+
+
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.information.annualPlan.impl.HighwayDailyCompDettableService;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.UuidUtil;
+
+
+
+/** 
+ * 类名称:日常养护计划完成情况
+ * 创建人:
+ * 创建时间:
+ */
+@Controller
+@RequestMapping(value="/highwayDailyCompDettableController")
+class HighwayDailyCompDettableController extends BaseController {
+	
+	@Resource(name="highwayDailyCompDettableService")
+	private HighwayDailyCompDettableService highwayDailyCompDettableService;
+	
+	@RequestMapping(value="/treedata")
+	@ResponseBody
+	public Object getTreeDataList( ){
+		/*String resultjson = 
+		 "[{'id': 1,'name': '系统设置','url': '','icon': '','idx': 1.0,'qualified': null,'disqualification': null,'concession': null,'total': null,'parentId': 0},"
+		+ "{'id': 2,'name': '角色管理','url': '','icon': '','idx': 1.0,'qualified': null,'disqualification': null,'concession': null,'total': null,'parentId': 1},"
+		+ "{'id': 6,'name': '数据表格','url': '','icon': '','idx': 1.0,'qualified': null,'disqualification': null,'concession': null,'total': null,'parentId': 5},"
+		+ "{'id': 3,'name': '部门管理','url': '','icon': '','idx': 2.0,'qualified': null,'disqualification': null,'concession': null,'total': null,'parentId': 1}," 
+		+ "{'id': 4,'name': '系统设置小计','url': '','icon': null,'idx':'','qualified': null,'disqualification': null,'concession': null,'total': 500,'parentId':0},"
+		+ "{'id': 5,'name': '表格案例','url': '','icon': '','idx': 2.0,'qualified': null,'disqualification': null,'concession': null,'total': null,'parentId': 0}," 
+		+ "{'id': 7,'name': '树形表格','url': '','icon': '','idx': 2.0,'qualified': null,'disqualification': null,'concession': null,'total': null,'parentId': 5},"
+		+ "{'id': 8,'name': '表格案例小计','url': '','icon': null,'idx':'','qualified': null,'disqualification': null,'concession': null,'total': 100,'parentId':0}]";*/
+		Map<String,Object> map = new HashMap<String, Object>();
+		List<PageData> pageDatasList = new ArrayList<PageData>();
+		
+		try {
+			PageData pdData = new PageData();
+			pdData = this.getPageData();
+			List<PageData> disDatasList = highwayDailyCompDettableService.getDisInfo(pdData);
+			List<PageData> proDatasList = highwayDailyCompDettableService.getProInfo(pdData);
+			if(null != disDatasList && disDatasList.size()>0 && null !=proDatasList && proDatasList.size()>0){
+				DecimalFormat df1 = new DecimalFormat("0.00");
+				for(int a=0;a<disDatasList.size();a++){
+					BigDecimal aBigDecimal = new BigDecimal(0.00);
+					for(int b=0;b<proDatasList.size();b++){
+						if(disDatasList.get(a).get("ID").toString().equals(proDatasList.get(b).get("PARENT_ID").toString())){
+				            BigDecimal bd=new BigDecimal(proDatasList.get(b).get("TOTAL_PRICE").toString());  
+							aBigDecimal = aBigDecimal.add(bd);
+						}
+					}
+					PageData countPd = new PageData();
+					countPd.put("PRO_NAME", "小计");
+					countPd.put("ID", UuidUtil.get32UUID());
+					countPd.put("PARENT_ID", disDatasList.get(a).get("ID"));
+					countPd.put("UNIT", "");
+					countPd.put("UNIT", "");
+					countPd.put("NUM", "");
+					countPd.put("PRICE", "");
+					countPd.put("TOTAL_PRICE", df1.format(aBigDecimal));
+					proDatasList.add(countPd);
+				}
+			}
+			pageDatasList.addAll(disDatasList);
+			pageDatasList.addAll(proDatasList);
+			map.put("data", pageDatasList);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/HighwayReserveFeeController.class


+ 129 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/HighwayReserveFeeController.java

@@ -0,0 +1,129 @@
+package com.zhcs.dt.controller.information.annualPlan;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.annotation.Resource;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+import org.apache.commons.lang.StringUtils;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.service.information.annualPlan.AnnualPlanManager;
+import com.zhcs.dt.service.information.annualPlan.impl.AnnualDailyCompService;
+import com.zhcs.dt.service.information.annualPlan.impl.HighwayReserveFeeCompService;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+
+/** 
+ * 类名称:高速预备费使用情况
+ */
+@Controller
+@RequestMapping(value="/HighwayReserveFeeComp")
+class HighwayReserveFeeController extends BaseController {
+	@Resource(name="highwayReserveFeeCompService")
+	private HighwayReserveFeeCompService highwayReserveFeeCompService;
+//	@Resource(name="annualDailyCompService")
+//	private AnnualDailyCompService annualDailyCompService;
+	@Resource(name="annualPlanService")
+	private AnnualPlanManager annualPlanService;
+	private ShowTableRecodUtil showTableRecodUtil = new ShowTableRecodUtil();
+	
+	 /**显示、编辑子表格
+	 * @param
+	 * @throws Exception
+	 */
+/*	@RequestMapping(value="/showTableRecod")
+	public ModelAndView showTableRecod()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		//int viewType = setViewType(pd.getString("TABLETYPE"));
+		List<PageData> varList = new ArrayList<PageData>();
+		String name = pd.getString("NAME");
+		String projectName = "";
+		if(name.contains("---")){
+			projectName = name.split("---")[1];
+		}
+		pd.put("PROJECT_NAME", projectName);
+		//varList = showTableRecodUtil.showTableRecod(annualDailyCompService, pd);
+		varList = highwayReserveFeeCompService.getAllRecords(pd);
+		String mode = "edit";
+        mv.addObject("dataMap", JSONObject.fromObject(varList.get(0)));
+		JSONArray arr = JSONArray.fromObject(varList);
+		mv.addObject("varList", arr);
+		pd.put("mode", mode);
+		mv.setViewName("information/annualPlan/annualTableRecord/"+pd.getString("TABLETYPE"));
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}*/
+	
+
+
+	@RequestMapping(value="/saveData")
+	@ResponseBody
+	public Object saveData() throws Exception{
+	    ModelAndView mv = this.getModelAndView();
+	    PageData pd = new PageData();
+	    pd = this.getPageData();
+	    JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
+        List<PageData> varList = new ArrayList<PageData>();
+        varList = highwayReserveFeeCompService.hasTableRecod2(pd);
+        Map<String,Object> map = dealWithData(pd,varList,jsonarray);
+        return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**
+	 * 处理新增编辑数据
+	 */
+	@ResponseBody
+	public Map<String,Object> dealWithData(PageData pd,List<PageData> varList,JSONArray jsonarray) throws Exception{
+	    for (Object object : jsonarray) {
+	        JSONObject arrMap = JSONObject.fromObject(object);
+	        Set entryarray = arrMap.entrySet();
+	        ArrayList<Object> keyarray = new ArrayList<Object>();
+	        ArrayList<Object> valuearray = new ArrayList<Object>();
+	        for (Object entry : entryarray) {
+	            Object[] arr = entry.toString().split("=");
+	                boolean saveFlag = true;
+	                //编辑
+	                if (varList != null && varList.size() != 0){
+	                    saveFlag = !"ROAD".equals(arr[0])&&!"YEAR".equals(arr[0])&&!"COMPANY".equals(arr[0])
+	                        &&!"ROAD_ID".equals(arr[0])&&!"COMPANY_ID".equals(arr[0])&&!"PROJECT_NAME".equals(arr[0]);
+	                saveFlag = saveFlag && !"STATUS".equals(arr[0]);
+	                }
+	                if (saveFlag) {
+	                    keyarray.add(arr[0]);
+	                    if (arr.length > 1) {
+	                        valuearray.add(arr[1]);
+	                    }else {
+	                        valuearray.add(null);
+                        }
+	                }
+	        }
+	        pd.put("KEYS", StringUtils.join(keyarray.toArray(), ","));
+	        pd.put("KEYARRAY", keyarray);
+	        pd.put("VALUEARRAY", valuearray);
+	        //pd.put("ROAD_ID", arrMap.get("ROAD_ID"));
+	        //pd.put("PROJECT_NAME", arrMap.get("PROJECT_NAME"));
+	        //新增
+	        if (varList == null || varList.size() == 0) highwayReserveFeeCompService.saveTableRecod(pd);
+	        //编辑
+	        else if (keyarray.size() > 0) highwayReserveFeeCompService.editTableRecod(pd);
+	    }
+	    Map<String,Object> map = new HashMap<String,Object>();
+	    map.put("msg","success");
+	    return map;
+	}
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/ShowTableRecodUtil.class


+ 1465 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/ShowTableRecodUtil.java

@@ -0,0 +1,1465 @@
+package com.zhcs.dt.controller.information.annualPlan;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.annotation.Resource;
+
+import org.springframework.core.io.support.PropertiesLoaderUtils;
+
+import com.zhcs.dt.service.information.annualPlan.impl.AnnualDailyCompService;
+import com.zhcs.dt.util.PageData;
+
+public class ShowTableRecodUtil {
+	private AnnualDailyCompService annualDailyCompService;
+	private String[] dailyPlanType = { "CLEAN_PLAN_COST", "PATROL_PLAN_COST", "SUBGRADE_PLAN_COST",
+			"PAVEMENT_PLAN_COST", "BRIDGE_PLAN_COST", "CULVERT_PLAN_COST", "TUNNEL_PLAN_COST", "GREEN_PLAN_COST",
+			"SAFE_PLAN_COST", "LINE_PLAN_COST", "CAR_PLAN_COST", "EMERGENCY_PLAN_COST" };
+//    private String[] dailyCompType = {"CLEAN_COST", "PATROL_COST", "SUBGRADE_COST","PAVEMENT_COST",
+//    		"BRIDGE_COST","CULVERT_COST","TUNNEL_COST","GREEN_COST","SAFE_COST","LINE_COST",
+//    		"CAR_COST","EMERGENCY_COST"};
+	private String[] annDailyCompType = { "CLEAN_COST", "PATROL_COST", "SUBGRADE_COST", "PAVEMENT_COST", "BRIDGE_COST",
+			"CULVERT_COST", "TUNNEL_COST", "TRAFFIC_SAFE_COST", "ROADSIDE_COST", "GREEN_COST", "MAINT_COST",
+			"EMERGENCY_COST" };
+
+	public List<PageData> showTableRecod(AnnualDailyCompService annualDailyCompService, PageData pd) throws Exception {
+		this.annualDailyCompService = annualDailyCompService;
+		List<PageData> varList = new ArrayList<PageData>();
+		PageData varPg = new PageData();
+		String tableType = pd.getString("TABLETYPE");
+		if ("highway_plan_comp_sumtable".equalsIgnoreCase(tableType)) {
+			// 计划费用
+//			PageData tempPg = annualDailyCompService.findDaliyPlanRecord(pd); // 日常养护
+//			String dailyPlanCost = dailyPlanCostSum(tempPg);
+//			varPg = annualDailyCompService.findTableInfo(pd);
+//			varPg.put("YEAR", pd.get("YEAR"));
+//			varPg = getPlanRecods(putPlanRecods(), varPg, pd);
+//			String scientificPlanSum = findScientificPlanSum(pd);
+//			if (scientificPlanSum != null) {
+//				varPg.put("SCIENTIFIC_DESIGN", Double.parseDouble(scientificPlanSum)); // 科研项目
+//			}
+//			String equipmentPlanSum = findEquipmentPlanSum(pd);
+//			if (equipmentPlanSum != null) {
+//				varPg.put("DEVICE_DESIGN", Double.parseDouble(equipmentPlanSum)); // 设备大修
+//			}
+//			if (dailyPlanCost != "") {
+//				varPg.put("DAILY_PLAN_COST", Double.parseDouble(dailyPlanCost));
+//			}
+//
+//			// 完成费用
+//			varPg = getCompRecods(putCompRecods(), varPg, pd);
+			pd.put("VIEW_NAME", "annual_comp_sumtable_view");
+			varPg = annualDailyCompService.findViewRecords(pd); //获取视图返回结果
+			pd.put("FROM_TABLE", "highway_annual_plan_sumtable");
+			PageData tempPg = annualDailyCompService.findAllRecods(pd);
+			if(tempPg != null){
+				if(tempPg.get("DAILY_REMARKS") != null){
+					varPg.put("DAILY_REMARKS", tempPg.get("DAILY_REMARKS"));
+				}
+				if(tempPg.get("PREVENTION_REMARKS") != null){
+					varPg.put("PREVENTION_REMARKS", tempPg.get("PREVENTION_REMARKS"));
+				}
+				if(tempPg.get("REPAIR_REMARKS") != null){
+					varPg.put("REPAIR_REMARKS", tempPg.get("REPAIR_REMARKS"));
+				}
+				if(tempPg.get("TEST_REMARKS") != null){
+					varPg.put("TEST_REMARKS", tempPg.get("TEST_REMARKS"));
+				}
+				if(tempPg.get("SCIENTIFIC_REMARKS") != null){
+					varPg.put("SCIENTIFIC_REMARKS", tempPg.get("SCIENTIFIC_REMARKS"));
+				}
+				if(tempPg.get("DEVICE_REMARKS") != null){
+					varPg.put("DEVICE_REMARKS", tempPg.get("DEVICE_REMARKS"));
+				}
+				if(tempPg.get("RESERVE_REMARKS") != null){
+					varPg.put("RESERVE_REMARKS", tempPg.get("RESERVE_REMARKS"));
+				}
+			}
+			varPg = dealCompSum(varPg);
+			varList.add(varPg);
+		} else if ("highway_daily_plan_statable".equalsIgnoreCase(tableType)) {
+			pd.put("FROM_TABLE", "highway_daily_plan_statable");
+			varList = annualDailyCompService.getAllRecords(pd); // 计划			
+		} else if ("highway_prevention_plan_sumtable".equalsIgnoreCase(tableType)) {
+			pd.put("FROM_TABLE", "highway_prevention_project_dettable");
+			List<PageData> tempList = annualDailyCompService.getAllRecords(pd); // 计划
+			for (PageData temppd : tempList) {
+				if(temppd.get("QUANTITIES") != null){
+					temppd.put("PLAN_QUANTITIES", temppd.get("QUANTITIES"));
+				}
+				if(temppd.get("AUDIT_FEE") != null){
+					temppd.put("PLAN_COST", temppd.get("AUDIT_FEE"));
+				}else{
+					temppd.put("PLAN_COST", temppd.get("TOTAL_COST"));
+				}
+				if(temppd.get("SJWCGCL") != null){
+					temppd.put("ACTUAL_QUANTITIES", temppd.get("SJWCGCL"));
+				}
+				temppd.put("PROJECT_TYPE", temppd.get("CATEGORY"));
+				temppd.put("SCALE", temppd.get("PROJECT_SCALE"));
+				if(temppd.get("OTHER_MATTER") != null){
+				temppd.put("REMARKS", temppd.get("OTHER_MATTER"));
+				}
+				pd.put("FROM_TABLE", "monthly_prevention_completion");
+				pd.put("PROJECT_NAME", temppd.get("PROJECT_NAME"));
+				Object actualCost = annualDailyCompService.getCompSumForProject(pd);  // 获取每个项目的实际费用		
+				if(actualCost != null){
+					BigDecimal actual = getBigDecimal(actualCost);
+					temppd.put("ACTUAL_COST", actual);
+				}
+				if(temppd.get("ACTUAL_COST") != null && temppd.get("PLAN_COST")!= null){
+					temppd.put("COMPLETE_RATIO", math(temppd.get("ACTUAL_COST"),temppd.get("PLAN_COST")).toString());
+				}
+				varList.add(temppd);
+			}
+		} else if ("highway_repair_comp_sumtable".equalsIgnoreCase(tableType)) {
+			pd.put("FROM_TABLE", "highway_repair_project_dettable");
+			List<PageData> tempList = annualDailyCompService.getAllRecords(pd); // 计划
+			for (PageData temppd : tempList) {
+				if(temppd.get("QUANTITIES") != null){
+					temppd.put("PLAN_QUANTITIES", temppd.get("QUANTITIES"));
+				}
+				if(temppd.get("AUDIT_FEE") != null){
+					temppd.put("PLAN_COST", temppd.get("AUDIT_FEE"));
+				}else if(temppd.get("TOTAL_COST") != null){
+					temppd.put("PLAN_COST", temppd.get("TOTAL_COST"));
+				}
+				if(temppd.get("SJWCGCL") != null){
+					temppd.put("ACTUAL_QUANTITIES", temppd.get("SJWCGCL"));
+				}
+				temppd.put("PROJECT_TYPE", temppd.get("CATEGORY"));
+				temppd.put("SCALE", temppd.get("PROJECT_SCALE"));
+				if(temppd.get("OTHER_MATTER") != null){
+					temppd.put("REMARKS", temppd.get("OTHER_MATTER"));
+				}
+				pd.put("FROM_TABLE", "monthly_repair_completion");
+				pd.put("PROJECT_NAME", temppd.get("PROJECT_NAME"));
+				Object actualCost = annualDailyCompService.getCompSumForProject(pd); // 获取每个项目的实际费用	
+				if(actualCost != null){
+					BigDecimal actual = getBigDecimal(actualCost);
+					temppd.put("ACTUAL_COST", actual);  
+				}
+				if(temppd.get("ACTUAL_COST") != null && temppd.get("PLAN_COST")!= null){
+					if(!"0.0".equals(temppd.get("PLAN_COST").toString())){
+						temppd.put("COMPLETE_RATIO", math(temppd.get("ACTUAL_COST"),temppd.get("PLAN_COST")).toString());
+					}
+				}
+				varList.add(temppd);
+			}
+		} else if ("highway_daily_comp_sumtable".equalsIgnoreCase(tableType)) {
+//			pd.put("FROM_TABLE", "highway_daily_plan_statable");
+//			List<PageData> tempList = annualDailyCompService.getAllRecords(pd); // 计划
+//			PageData temppd = new PageData();
+//			if(tempList.size() > 0){
+//				temppd = tempList.get(0);
+//			}else{
+//				temppd = pd;
+//			}
+//			for(String type : annDailyCompType){
+//				pd.put("TYPE", type);
+//				String payCost = annualDailyCompService.getDaliyCompRecord(pd);    // 获取每个项目的实际费用
+//				if(payCost != null){
+//					temppd.put(type, payCost);
+//				}
+//			}
+			pd.put("VIEW_NAME", "annual_daily_comp_sumtable_view");
+			PageData temppd = annualDailyCompService.findViewRecords(pd); //获取视图返回结果
+			if(temppd != null){
+				varList.add(temppd);
+			}
+		} else if ("highway_special_comp_sumtable".equalsIgnoreCase(tableType)) {
+			/*pd.put("FROM_TABLE", "highway_special_plan_statable");
+			List<PageData> tempList = annualDailyCompService.getAllRecords(pd); // 计划
+			for (PageData temppd : tempList) {
+				temppd.put("PLAN_COST", temppd.get("ESTIMATION"));
+				pd.put("FROM_TABLE", "monthly_special_completion");
+				pd.put("PROJECT_NAME", temppd.get("SPECIAL_PROJECT_NAME"));
+				String compSum = annualDailyCompService.getCompSumForProject(pd); // 获取每个项目的实际费用
+				if (compSum != null) {
+					temppd.put("ACTUAL_COST", Double.parseDouble(compSum));
+				}
+				varList.add(temppd);
+			}*/
+			pd.put("FROM_TABLE", "highway_special_comp_sumtable_view");
+			List<PageData> tempList = annualDailyCompService.getAllRecords(pd); // 计划
+			for (PageData temppd : tempList) {				
+				if(temppd.get("PLAN_COST") != null){
+					temppd.put("PLAN_COST", temppd.get("PLAN_COST"));
+				}				
+				Object actualCost = temppd.get("ACTUAL_COST");
+				if(actualCost != null){
+					BigDecimal actual = getBigDecimal(actualCost);
+					temppd.put("ACTUAL_COST", actual);  
+				}
+				varList.add(temppd);
+			}
+		} else if ("highway_test_comp_sumtable".equalsIgnoreCase(tableType)) {
+			// 计划费用
+			pd.put("FROM_TABLE", "highway_test_plan_statable");
+			List<PageData> tempList = annualDailyCompService.getAllRecords(pd); // 计划
+			for (PageData temppd : tempList) {
+				if(temppd.get("COST_ESTIMAT") != null){
+					temppd.put("PLAN_COST", temppd.get("COST_ESTIMAT"));
+				}				
+				pd.put("FROM_TABLE", "monthly_test_project_completion");
+				if(temppd.get("PROJECT_NAME") != null){
+					pd.put("PROJECT_NAME", temppd.get("PROJECT_NAME"));
+				}
+				String compSum = annualDailyCompService.getCompSumForProject(pd); // 获取每个项目的实际费用
+				if (compSum != null) {
+					BigDecimal actual = getBigDecimal(compSum);
+					temppd.put("ACTUAL_COST", actual);
+				}
+				varList.add(temppd);
+			}
+		} else if ("highway_scientific_comp_sumtable".equalsIgnoreCase(tableType)) { // 科研项目
+			// 计划费用
+			pd.put("FROM_TABLE", "highway_scientific_plan_statable");
+			List<PageData> tempList = annualDailyCompService.getAllRecords(pd); // 计划
+			for (PageData temppd : tempList) {
+				temppd.put("PLAN_COST", temppd.get("COST_ESTIMAT"));
+				pd.put("FROM_TABLE", "monthly_scientific_project_completion");
+				pd.put("PROJECT_NAME", temppd.get("PROJECT_NAME"));
+				String compSum = annualDailyCompService.getCompSumForProject(pd); // 获取每个项目的实际费用
+				if (compSum != null) {
+					temppd.put("ACTUAL_COST", Double.parseDouble(compSum));
+				}
+				varList.add(temppd);
+			}
+		} else if ("highway_equipment_overhaul_comp_sumtable".equalsIgnoreCase(tableType)) { // 设备大修
+			// 计划费用
+			pd.put("FROM_TABLE", "highway_equipment_overhaul_plan_statable");
+			List<PageData> tempList = annualDailyCompService.getAllRecords(pd); // 计划
+			for (PageData temppd : tempList) {
+				temppd.put("PLAN_COST", temppd.get("ESTIMATE_COST"));
+				pd.put("FROM_TABLE", "monthly_equipment_overhaul_completion");
+				pd.put("PROJECT_NAME", temppd.get("PROJECT_NAME"));
+				String compSum = annualDailyCompService.getCompSumForProject(pd); // 获取每个项目的实际费用
+				if (compSum != null) {
+					temppd.put("ACTUAL_COST", compSum);
+				}
+				varList.add(temppd);
+			}
+		} else if ("highway_quality_goals_table".equalsIgnoreCase(tableType)) { // 高速公路养护质量目标表
+			PageData temppd = annualDailyCompService.getQualityRecords(pd); // 现状
+			/*StringBuffer TECHNOLOGY_STATUS = new StringBuffer();
+			if (temppd != null) {				
+				TECHNOLOGY_STATUS.append("一类桥梁占比:" + temppd.get("ONE_BRIDGE_PRO"));
+				TECHNOLOGY_STATUS.append("\r\n");
+				TECHNOLOGY_STATUS.append("二类桥梁占比:" + temppd.get("TWO_BRIDGE_PRO"));
+				temppd.put("TECHNOLOGY_STATUS", TECHNOLOGY_STATUS.toString());*/
+			varList.add(temppd);
+//			}
+		} else if ("highway_annual_plan_sumtable".equalsIgnoreCase(tableType)) {
+			// 计划费用
+			/*PageData tempPg = annualDailyCompService.findDaliyPlanRecord(pd); // 日常养护
+			String dailyPlanCost = dailyPlanCostSum(tempPg);
+			varPg = annualDailyCompService.findTableInfo(pd);
+			varPg.put("YEAR", pd.get("YEAR"));
+			varPg = getPlanRecods(putPlanRecods(), varPg, pd);
+			String scientificPlanSum = findScientificPlanSum(pd);
+			if (scientificPlanSum != null) {
+				varPg.put("SCIENTIFIC_PLAN_COST", Double.parseDouble(scientificPlanSum)); // 科研项目
+			}
+			String equipmentPlanSum = findEquipmentPlanSum(pd);
+			if (equipmentPlanSum != null) {
+				varPg.put("DEVICE_PLAN_COST", Double.parseDouble(equipmentPlanSum)); // 设备大修
+			}
+			if (dailyPlanCost != "") {
+				varPg.put("DAILY_PLAN_COST", Double.parseDouble(dailyPlanCost));
+			}
+			PageData totalCost = annualDailyCompService.getReserveFeesTotal(pd);
+			if (totalCost != null) {
+				if(totalCost.get("TOTAL_COST") != null){
+					varPg.put("RESERVE_PLAN_COST", Double.parseDouble(totalCost.get("TOTAL_COST").toString()));
+				}
+			}*/	
+			//pd.put("VIEW_NAME", "annual_comp_sumtable_view");
+			pd.put("VIEW_NAME", "highway_annual_plan_sumtable_view");
+			varPg = annualDailyCompService.findViewRecords(pd); //获取视图返回结果
+			/*if(varPg != null){
+				List<Object> subVar = new ArrayList<Object>();
+				subVar.add(varPg.get("MINOR_PREVENTION_DESIGN"));
+				subVar.add(varPg.get("MIDDLE_PREVENTION_DESIGN"));
+				subVar.add(varPg.get("OVERHAUL_PREVENTION_DESIGN"));
+				String sum1 = getSum(subVar);
+				if(!"0.0".equalsIgnoreCase(sum1)){
+					varPg.put("PREVENTION_PLAN_COST", sum1);
+				}
+				subVar = new ArrayList<Object>();
+				subVar.add(varPg.get("MINOR_REPAIR_DESIGN"));
+				subVar.add(varPg.get("MIDDLE_REPAIR_DESIGN"));
+				subVar.add(varPg.get("OVERHAUL_DESIGN"));
+				String sum2 = getSum(subVar);
+				if(!"0.0".equalsIgnoreCase(sum2)){
+					varPg.put("REPAIR_PLAN_COST", sum2);
+				}
+			}*/
+			pd.put("FROM_TABLE", "highway_annual_plan_sumtable");
+			PageData tempPg = annualDailyCompService.findAllRecods(pd);
+			if(tempPg != null){
+				if(tempPg.get("DAILY_REMARKS") != null){
+					varPg.put("DAILY_REMARKS", tempPg.get("DAILY_REMARKS"));
+				}
+				if(tempPg.get("PREVENTION_REMARKS") != null){
+					varPg.put("PREVENTION_REMARKS", tempPg.get("PREVENTION_REMARKS"));
+				}
+				if(tempPg.get("REPAIR_REMARKS") != null){
+					varPg.put("REPAIR_REMARKS", tempPg.get("REPAIR_REMARKS"));
+				}
+				if(tempPg.get("TEST_REMARKS") != null){
+					varPg.put("TEST_REMARKS", tempPg.get("TEST_REMARKS"));
+				}
+				if(tempPg.get("SCIENTIFIC_REMARKS") != null){
+					varPg.put("SCIENTIFIC_REMARKS", tempPg.get("SCIENTIFIC_REMARKS"));
+				}
+				if(tempPg.get("DEVICE_REMARKS") != null){
+					varPg.put("DEVICE_REMARKS", tempPg.get("DEVICE_REMARKS"));
+				}
+				if(tempPg.get("RESERVE_REMARKS") != null){
+					varPg.put("RESERVE_REMARKS", tempPg.get("RESERVE_REMARKS"));
+				}
+			}
+			varList.add(varPg);
+		} else if ("highway_prevention_plan_statable".equalsIgnoreCase(tableType)) { // 预防养护计划统计
+			pd.put("FROM_TABLE", tableType);
+			varList = annualDailyCompService.getAllRecords(pd); // 计划
+			for(PageData tpd: varList){
+				if(tpd.get("AUDIT_FEE") != null){
+					tpd.put("ESTIMATION", tpd.get("AUDIT_FEE"));
+				}
+			}
+		} else if ("highway_repair_plan_statable".equalsIgnoreCase(tableType)) { // 修复养护计划统计
+			pd.put("FROM_TABLE", tableType);
+			varList = annualDailyCompService.getAllRecords(pd); // 计划
+			for(PageData tpd: varList){
+				if(tpd.get("AUDIT_FEE") != null){
+					tpd.put("ESTIMATION", tpd.get("AUDIT_FEE"));
+				}
+			}
+		} else if ("highway_special_plan_statable".equalsIgnoreCase(tableType)) { // 专项养护计划统计
+			pd.put("FROM_TABLE", tableType);
+			varList = annualDailyCompService.getSpecialRecords(pd); // 计划
+			for(PageData tpd: varList){
+				if(tpd.get("AUDIT_FEE") != null){
+					tpd.put("ESTIMATION", tpd.get("AUDIT_FEE"));
+				}else if(tpd.get("PROJECT_COST") != null){
+					tpd.put("ESTIMATION", tpd.get("PROJECT_COST"));
+				}
+			}
+		} else if ("highway_test_plan_statable".equalsIgnoreCase(tableType)) { // 检测项目计划统计
+			pd.put("FROM_TABLE", tableType);
+			varList = annualDailyCompService.getAllRecords(pd); // 计划
+			for(PageData tpd: varList){
+				if(tpd.get("AUDIT_FEE") != null){
+					tpd.put("COST_ESTIMAT", tpd.get("AUDIT_FEE"));
+				}
+			}
+		} else if ("highway_scientific_plan_statable".equalsIgnoreCase(tableType)) { // 科研项目计划统计
+			pd.put("FROM_TABLE", tableType);
+			varList = annualDailyCompService.getAllRecords(pd); // 计划
+			for (PageData var : varList) {
+				if (var.get("RESEARCH_CONTENTS") != null) {
+					var.put("CONTENTS", var.get("RESEARCH_CONTENTS"));
+				}
+				if(var.get("AUDIT_FEE") != null){
+					var.put("COST_ESTIMAT", var.get("AUDIT_FEE"));
+				}
+			}
+		} else if ("highway_equipment_overhaul_plan_statable".equalsIgnoreCase(tableType)) { // 设备大修计划统计
+			pd.put("FROM_TABLE", tableType);
+			varList = annualDailyCompService.getAllRecords(pd); // 计划
+			for(PageData tpd: varList){
+				if(tpd.get("AUDIT_FEE") != null){
+					tpd.put("ESTIMATE_COST", tpd.get("AUDIT_FEE"));
+				}
+			}
+		} else if ("highway_reserve_fees_sumtable".endsWith(tableType)) { // 预备费
+			pd.put("FROM_TABLE", tableType);
+			List<PageData> tempList = annualDailyCompService.getAllRecords(pd);
+			PageData totalCost = annualDailyCompService.getReserveFeesTotal(pd);
+			if (tempList.size() > 0) {
+				for (PageData varpd : tempList) {
+					BigDecimal actual_cost = getBigDecimal(varpd.get("ACTUAL_COST"));
+					varpd.put("ACTUAL_COST", actual_cost);
+					varList.add(varpd);
+				}
+			}
+			if (totalCost != null && totalCost.get("TOTAL_COST") != null) {
+				pd.put("TOTAL_COST", Double.parseDouble(totalCost.get("TOTAL_COST").toString()));
+			}
+			//varList.add(pd);
+		}
+		// 年度总报告数据
+		else if ("annual_comp_sumtable".equalsIgnoreCase(tableType)) { // 单位养护计划完成情况汇总表
+			varList = getAnnualCompRecods(pd);
+		} else if ("annual_daily_comp_sumtable".equalsIgnoreCase(tableType)) { // 日常养护计划完成情况汇总表
+			varList = getAnnualDailyCompRecod(pd);
+		} else if ("annual_prevention_comp_sumtable".equalsIgnoreCase(tableType)) { // 预防养护计划完成情况汇总表
+			varList = getPreventionCompRecod(pd);
+		} else if ("annual_repair_comp_sumtable".equalsIgnoreCase(tableType)) { // 单位修复养护计划完成情况汇总表
+			varList = getRepairCompRecod(pd);
+		} else if ("annual_plan_sumtable".equalsIgnoreCase(tableType)) { // 单位养护计划汇总表
+			//varList = getAnnualPlanRecod(pd);
+			pd.put("VIEW_NAME", "annual_comp_sumtable_view");
+			varList = annualDailyCompService.findViewRecordsList(pd); //获取视图返回结果
+		} else if ("annual_daily_plan_sumtable".equalsIgnoreCase(tableType)) { // 单位日常养护计划汇总表
+			varList = getAnnualDailyPlanRecod(pd);
+		} else if ("annual_prevention_plan_sumtable".equalsIgnoreCase(tableType)) { // 单位预防养护计划汇总表
+			//varList = getPreventionPlanRecod(pd);
+			pd.put("VIEW_NAME", "annual_prevention_comp_sumtable_view");
+			varList = annualDailyCompService.findViewRecordsList(pd); //获取视图返回结果
+		} else if ("annual_repair_plan_sumtable".equalsIgnoreCase(tableType)) { // 单位修复养护计划汇总表
+			//varList = getRepairPlanRecod(pd);
+			pd.put("VIEW_NAME", "annual_repair_comp_sumtable_view");
+			varList = annualDailyCompService.findViewRecordsList(pd); //获取视图返回结果
+		}
+		return varList;
+	}
+	
+	// 算完成比例
+	public Double math(Object act_cost, Object plan_cost) throws NumberFormatException, Exception {			
+		return Double.parseDouble(act_cost.toString())/Double.parseDouble(plan_cost.toString())*100;
+	}
+	
+	// 计算费用/公里
+	public Double mathKm(Object act_cost, Object plan_cost) throws NumberFormatException, Exception {			
+		return Double.parseDouble(act_cost.toString())/Double.parseDouble(plan_cost.toString());
+	}
+	
+	private PageData dealCompSum(PageData varPg){
+		if(varPg != null){
+			List<Object> subVar = new ArrayList<Object>();
+			subVar.add(varPg.get("MINOR_PREVENTION_DESIGN"));
+			subVar.add(varPg.get("MIDDLE_PREVENTION_DESIGN"));
+			subVar.add(varPg.get("OVERHAUL_PREVENTION_DESIGN"));
+			String sum1 = getSum(subVar);
+			if(!"0.0".equalsIgnoreCase(sum1)){
+				varPg.put("PREVENTION_PLAN_COST", sum1);
+			}
+			subVar = new ArrayList<Object>();
+			subVar.add(varPg.get("MINOR_PREVENTION_COMPLETE"));
+			subVar.add(varPg.get("MIDDLE_PREVENTION_COMPLETE"));
+			subVar.add(varPg.get("OVERHAUL_PREVENTION_COMPLETE"));
+			String sum3 = getSum(subVar);
+			if(!"0.0".equalsIgnoreCase(sum3)){
+				varPg.put("PREVENTION_COMPLETE_COST", sum3);
+			}
+			subVar = new ArrayList<Object>();
+			subVar.add(varPg.get("MINOR_REPAIR_DESIGN"));
+			subVar.add(varPg.get("MIDDLE_REPAIR_DESIGN"));
+			subVar.add(varPg.get("OVERHAUL_DESIGN"));
+			String sum2 = getSum(subVar);
+			if(!"0.0".equalsIgnoreCase(sum2)){
+				varPg.put("REPAIR_PLAN_COST", sum2);
+			}
+			subVar = new ArrayList<Object>();
+			subVar.add(varPg.get("MINOR_REPAIR_COMPLETE"));
+			subVar.add(varPg.get("MIDDLE_REPAIR_COMPLETE"));
+			subVar.add(varPg.get("OVERHAUL_COMPLETE"));
+			String sum4 = getSum(subVar);
+			if(!"0.0".equalsIgnoreCase(sum4)){
+				varPg.put("REPAIR_COMPLETE_COST", sum4);
+			}
+			if(varPg.get("SPECIAL_DESIGN")!=null){
+				varPg.put("SPECIAL_PLAN_COST", varPg.get("SPECIAL_DESIGN"));
+			}
+			if(varPg.get("SPECIAL_COMPLETE")!=null){
+				varPg.put("SPECIAL_COMPLETE_COST", varPg.get("SPECIAL_COMPLETE"));
+			}
+			if(varPg.get("EMERGENCY_DESIGN")!=null){
+				varPg.put("EMERGENCY_PLAN_COST", varPg.get("EMERGENCY_DESIGN"));
+			}
+			if(varPg.get("EMERGENCY_COMPLETE")!=null){
+				varPg.put("EMERGENCY_COMPLETE_COST", varPg.get("EMERGENCY_COMPLETE"));
+			}
+			if(varPg.get("TEST_DESIGN")!=null){
+				varPg.put("TEST_PLAN_COST", varPg.get("TEST_DESIGN"));
+			}
+			if(varPg.get("TEST_COMPLETE")!=null){
+				varPg.put("TEST_COMPLETE_COST", varPg.get("TEST_COMPLETE"));
+			}
+			if(varPg.get("SCIENTIFIC_DESIGN")!=null){
+				varPg.put("SCIENTIFIC_PLAN_COST", varPg.get("SCIENTIFIC_DESIGN"));
+			}
+			if(varPg.get("SCIENTIFIC_COMPLETE")!=null){
+				varPg.put("SCIENTIFIC_COMPLETE_COST", varPg.get("SCIENTIFIC_COMPLETE"));
+			}
+			if(varPg.get("DEVICE_DESIGN")!=null){
+				varPg.put("DEVICE_PLAN_COST", varPg.get("DEVICE_DESIGN"));
+			}
+			if(varPg.get("DEVICE_COMPLETE")!=null){
+				varPg.put("DEVICE_COMPLETE_COST", varPg.get("DEVICE_COMPLETE"));
+			}
+			if(varPg.get("RESERVE_DESIGN")!=null){
+				varPg.put("RESERVE_PLAN_COST", varPg.get("RESERVE_DESIGN"));
+			}
+			if(varPg.get("RESERVE_COMPLETE")!=null){
+				varPg.put("RESERVE_COMPLETE_COST", varPg.get("RESERVE_COMPLETE"));
+			}
+			if(varPg.get("DAILY_DESIGN")!=null){
+					varPg.put("DAILY_PLAN_COST", varPg.get("DAILY_DESIGN"));
+			}
+			if(varPg.get("DAILY_COMPLETE")!=null){
+				varPg.put("DAILY_COMPLETE_COST", varPg.get("DAILY_COMPLETE"));
+			}
+			
+		}
+		return varPg;
+	}
+
+	private String getSum(List<Object> subVar){
+		Double sumNum = (double) 0;
+		for(Object var : subVar){
+			if(var != null){
+				sumNum += Double.parseDouble(var.toString());
+			}
+		}
+		return String.valueOf(sumNum);
+	}
+
+	private List<PageData> getAnnualPlanRecod(PageData pd) throws Exception {
+		List<PageData> pdateList = annualDailyCompService.getKmInfo(pd);
+		for (PageData pdata : pdateList) {
+			pd.put("ROAD_ID", pdata.get("ROAD_ID"));
+			pd.put("ROAD", pdata.get("ROAD"));
+			pdata.put("YEAR", pd.get("YEAR"));
+			PageData tempPg = annualDailyCompService.findDaliyPlanRecord(pd); // 日常养护
+			String dailyPlanCost = dailyPlanCostSum(tempPg);
+			if (dailyPlanCost != null && !"".equals(dailyPlanCost)) {
+				pdata.put("DAILY_COST", Double.parseDouble(dailyPlanCost)); // 日常养护计划费用
+			}
+			pdata = getPreAndRepPlanCost(pd, pdata, "highway_prevention_project_dettable_cost",
+					"highway_prevention_project_dettable", "PREVENTION"); // 获取预防养护大中小修的计划费用
+			pdata = getPreAndRepPlanCost(pd, pdata, "highway_repair_project_dettable_cost",
+					"highway_repair_project_dettable", "REPAIR"); // 获取修复养护大中小修的计划费用
+			Map<String, String> tableInfo = new HashMap<String, String>();
+			tableInfo.put("highway_special_project_dettable", "SPECIAL"); // 专项养护
+			tableInfo.put("highway_test_project_dettable", "TEST_PROJECT"); // 试验检测项目
+			pdata = getPlanRecods(tableInfo, pdata, pd);
+			String scientificPlanSum = findScientificPlanSum(pd);
+			if (scientificPlanSum != null && !"".equals(scientificPlanSum)) {
+				pdata.put("SCIENTIFIC", Double.parseDouble(scientificPlanSum)); // 科研项目
+			}
+			String equipmentPlanSum = findEquipmentPlanSum(pd);
+			if (equipmentPlanSum != null && !"".equals(equipmentPlanSum)) {
+				pdata.put("DEVICE", Double.parseDouble(equipmentPlanSum)); // 设备大修
+			}
+			String reservePlanSum = findReservePlanSum(pd);
+			if (reservePlanSum != null && !"".equals(reservePlanSum)) {
+				pdata.put("RESERVE", Double.parseDouble(reservePlanSum)); // 预备费
+			}
+		}
+		return pdateList;
+	}
+
+	private List<PageData> getRepairCompRecod(PageData pd) throws Exception {
+//		List<PageData> pdateList = annualDailyCompService.getKmInfo(pd);
+//		for (PageData pdata : pdateList) {
+//			pd.put("ROAD_ID", pdata.get("ROAD_ID"));
+//			pd.put("ROAD", pdata.get("ROAD"));
+//			pdata.put("YEAR", pd.get("YEAR"));
+//			Map<String, String> tableInfo = new HashMap<String, String>();
+//			tableInfo.put("highway_repair_project_dettable", "PLAN_COST"); // 修复养护
+//			pdata = getPlanRecods(tableInfo, pdata, pd); // 修复养护计划费用
+//			// 按规模和类别统计完成费用
+//			Map<String, String> preventionType = getPreventionType(); // 修复养护类型同预防养护
+//			pdata = getRepairCompRecods(preventionType, pdata, pd);
+//		}	
+		List<PageData> pdateList = annualDailyCompService.getRepairCompRecod(pd);
+		for(PageData tpd : pdateList){
+			if(tpd.get("TOTAL")!=null && tpd.get("PLAN_COST")!=null){
+				tpd.put("COM_RETIO", math(tpd.get("TOTAL"),tpd.get("PLAN_COST")).toString());
+			}
+		}
+		return pdateList;
+	}
+
+	private List<PageData> getRepairPlanRecod(PageData pd) throws Exception {
+		List<PageData> pdateList = annualDailyCompService.getKmInfo(pd);
+		for (PageData pdata : pdateList) {
+			pd.put("ROAD_ID", pdata.get("ROAD_ID"));
+			pd.put("ROAD", pdata.get("ROAD"));
+			pdata.put("YEAR", pd.get("YEAR"));
+			// 按规模和类别统计计划费用
+			Map<String, String> preventionType = getPreventionPlanType(); // 修复养护类型同预防养护
+			pdata = getRepairPlanRecods(preventionType, pdata, pd);
+		}
+		return pdateList;
+	}
+
+	private List<PageData> getPreventionCompRecod(PageData pd) throws Exception {
+		List<PageData> pdateList = annualDailyCompService.getKmInfo(pd);
+		for (PageData pdata : pdateList) {
+			pd.put("ROAD_ID", pdata.get("ROAD_ID"));
+			pd.put("ROAD", pdata.get("ROAD"));
+			pdata.put("YEAR", pd.get("YEAR"));
+			Map<String, String> tableInfo = new HashMap<String, String>();
+			tableInfo.put("highway_prevention_project_dettable", "PLAN_COST"); // 预防养护
+			pdata = getPlanRecods(tableInfo, pdata, pd); // 预防养护计划费用
+			// 按类别统计完成费用
+			Map<String, String> preventionType = getPreventionType();
+			pdata = getPreventionCompRecods(preventionType, pdata, pd);
+		}
+		return pdateList;
+	}
+
+	private List<PageData> getPreventionPlanRecod(PageData pd) throws Exception {
+		List<PageData> pdateList = annualDailyCompService.getKmInfo(pd);
+		for (PageData pdata : pdateList) {
+			pd.put("ROAD_ID", pdata.get("ROAD_ID"));
+			pd.put("ROAD", pdata.get("ROAD"));
+			pdata.put("YEAR", pd.get("YEAR"));
+			Map<String, String> tableInfo = new HashMap<String, String>();
+			tableInfo.put("highway_prevention_project_dettable", "TOTAL"); // 预防养护
+			pdata = getPlanRecods(tableInfo, pdata, pd); // 预防养护计划费用
+			// 按类别统计完成费用
+			Map<String, String> preventionType = getPreventionPlanType();
+			pdata = getPreventionPlanRecods(preventionType, pdata, pd);
+		}
+		return pdateList;
+	}
+
+	private Map<String, String> getPreventionType() throws Exception {
+		Map<String, String> preventionType = new HashMap<String, String>();
+		preventionType.put("路基", "SUBGRADE_COST");
+		preventionType.put("路面", "PAVEMENT_COST");
+		preventionType.put("桥涵", "BRIDGE_COST");
+		preventionType.put("隧道", "TUNNEL_COST");
+		preventionType.put("交安设施", "TRAFFIC_SAFE_COST");
+		preventionType.put("沿线设施", "ROADSIDE_COST");
+		preventionType.put("绿化", "GREEN_COST");
+		preventionType.put("其他", "OTHER_COST");
+		return preventionType;
+	}
+
+	private Map<String, String> getPreventionPlanType() throws Exception {
+		Map<String, String> preventionType = new HashMap<String, String>();
+		preventionType.put("路基", "SUBGRADE");
+		preventionType.put("路面", "PAVEMENT");
+		preventionType.put("桥涵", "BRIDGE");
+		preventionType.put("隧道", "TUNNEL");
+		preventionType.put("交安设施", "TRAFFIC_SAFE");
+		preventionType.put("沿线设施", "ROADSIDE");
+		preventionType.put("绿化", "GREEN");
+		preventionType.put("其他", "OTHER");
+		return preventionType;
+	}
+
+	private PageData getPreventionCompRecods(Map<String, String> preventionType, PageData pdata, PageData pd)
+			throws Exception {
+		Double sumCost = (double) 0;
+		for (Map.Entry<String, String> entry : preventionType.entrySet()) {
+			System.out.println("key=" + entry.getKey() + "\tvalue=" + entry.getValue());
+			pd.put("CATEGORY", entry.getKey());
+			String getRecod = annualDailyCompService.findPreventionCompRecods(pd);			
+			if (getRecod != null) {
+				pdata.put(entry.getValue(), Double.parseDouble(getRecod));
+				sumCost += Double.parseDouble(getRecod);
+			}
+		}
+		pdata.put("SUM_COST", sumCost);
+		return pdata;
+	}
+
+	private PageData getPreventionPlanRecods(Map<String, String> preventionType, PageData pdata, PageData pd)
+			throws Exception {
+		for (Map.Entry<String, String> entry : preventionType.entrySet()) {
+			System.out.println("key=" + entry.getKey() + "\tvalue=" + entry.getValue());
+			pd.put("CATEGORY", entry.getKey());
+			String getRecod = annualDailyCompService.findPreventionPlanRecods(pd);
+			if (getRecod != null) {
+				pdata.put(entry.getValue(), Double.parseDouble(getRecod));
+			}
+		}
+		return pdata;
+	}
+
+	private PageData getRepairCompRecods(Map<String, String> preventionType, PageData pdata, PageData pd)
+			throws Exception {
+		String[] PROJECT_SCALES = { "小修", "中修", "大修" };
+		for (String PROJECT_SCALE : PROJECT_SCALES) {
+			pd.put("PROJECT_SCALE", PROJECT_SCALE);
+			Double sumCost = 0D;
+			for (Map.Entry<String, String> entry : preventionType.entrySet()) {
+				System.out.println("key=" + entry.getKey() + "\tvalue=" + entry.getValue());
+				pd.put("CATEGORY", entry.getKey());
+				String getRecod = annualDailyCompService.findRepairCompRecods(pd);
+				if (getRecod != null) {
+					if ("小修".equalsIgnoreCase(PROJECT_SCALE)) {
+						pdata.put("MIN_" + entry.getValue(), Double.parseDouble(getRecod));
+						sumCost += Double.parseDouble(getRecod);
+					} else if ("中修".equalsIgnoreCase(PROJECT_SCALE)) {
+						pdata.put("MID_" + entry.getValue(), Double.parseDouble(getRecod));
+						sumCost += Double.parseDouble(getRecod);
+					} else {
+						pdata.put("MAX_" + entry.getValue(), Double.parseDouble(getRecod));
+						sumCost += Double.parseDouble(getRecod);
+					}
+				}
+			}
+			if ("小修".equalsIgnoreCase(PROJECT_SCALE)) {
+				pdata.put("MIN_SUM_COST", sumCost);
+			} else if ("中修".equalsIgnoreCase(PROJECT_SCALE)) {
+				pdata.put("MID_SUM_COST", sumCost);
+			} else {
+				pdata.put("MAX_SUM_COST", sumCost);
+			}
+		}
+		return pdata;
+	}
+
+	private PageData getRepairPlanRecods(Map<String, String> preventionType, PageData pdata, PageData pd)
+			throws Exception {
+		String[] PROJECT_SCALES = { "小修", "中修", "大修" };
+		for (String PROJECT_SCALE : PROJECT_SCALES) {
+			pd.put("PROJECT_SCALE", PROJECT_SCALE);
+			Double sumCost = 0D;
+			for (Map.Entry<String, String> entry : preventionType.entrySet()) {
+				System.out.println("key=" + entry.getKey() + "\tvalue=" + entry.getValue());
+				pd.put("CATEGORY", entry.getKey());
+				String getRecod = annualDailyCompService.findRepairPlanRecods(pd);
+				if (getRecod != null) {
+					if ("小修".equalsIgnoreCase(PROJECT_SCALE)) {
+						pdata.put("MIN_" + entry.getValue(), Double.parseDouble(getRecod));
+						sumCost += Double.parseDouble(getRecod);
+					} else if ("中修".equalsIgnoreCase(PROJECT_SCALE)) {
+						pdata.put("MID_" + entry.getValue(), Double.parseDouble(getRecod));
+						sumCost += Double.parseDouble(getRecod);
+					} else {
+						pdata.put("MAX_" + entry.getValue(), Double.parseDouble(getRecod));
+						sumCost += Double.parseDouble(getRecod);
+					}
+				}
+			}
+			if ("小修".equalsIgnoreCase(PROJECT_SCALE)) {
+				pdata.put("MIN_SUM", sumCost);
+			} else if ("中修".equalsIgnoreCase(PROJECT_SCALE)) {
+				pdata.put("MID_SUM", sumCost);
+			} else {
+				pdata.put("MAX_SUM", sumCost);
+			}
+		}
+		return pdata;
+	}
+
+	private List<PageData> getAnnualCompRecods(PageData pd) throws Exception {
+//		List<PageData> pdateList = annualDailyCompService.getKmInfo(pd);
+//		for (PageData pdata : pdateList) {
+//			pd.put("ROAD_ID", pdata.get("ROAD_ID"));
+//			pd.put("ROAD", pdata.get("ROAD"));
+//			pdata.put("YEAR", pd.get("YEAR"));
+//			PageData tempPg = annualDailyCompService.findDaliyPlanRecord(pd); // 日常养护
+//			String dailyPlanCost = dailyPlanCostSum(tempPg);
+//			if (dailyPlanCost != "") {
+//				pdata.put("DAILY_DESIGN", Double.parseDouble(dailyPlanCost)); // 日常养护计划费用
+//			}		
+//			pdata = getPreAndRepPlanCost(pd, pdata, "highway_prevention_project_dettable_cost",
+//					"highway_prevention_project_dettable", "PREVENTION_DESIGN"); // 获取预防养护大中小修的计划费用
+//			pdata = getPreAndRepPlanCost(pd, pdata, "highway_repair_project_dettable_cost",
+//					"highway_repair_project_dettable", "REPAIR_DESIGN"); // 获取修复养护大中小修的计划费用
+//
+//			Map<String, String> tableInfo = new HashMap<String, String>();
+//			tableInfo.put("highway_special_project_dettable", "SPECIAL_DESIGN"); // 专项养护
+//			tableInfo.put("highway_test_project_dettable", "TEST_DESIGN"); // 试验检测项目
+//			pdata = getPlanRecods(tableInfo, pdata, pd);
+//			String scientificPlanSum = findScientificPlanSum(pd);
+//			if (scientificPlanSum != null) {
+//				pdata.put("SCIENTIFIC_DESIGN", Double.parseDouble(scientificPlanSum)); // 科研项目
+//			}
+//			String equipmentPlanSum = findEquipmentPlanSum(pd);
+//			if (equipmentPlanSum != null) {
+//				pdata.put("DEVICE_DESIGN", Double.parseDouble(equipmentPlanSum)); // 设备大修
+//			}
+//			String reservePlanSum = findReservePlanSum(pd);
+//			if (reservePlanSum != "") {
+//				pdata.put("RESERVE_DESIGN", Double.parseDouble(reservePlanSum)); // 预备费
+//			}
+//			// 完成费用
+//			pdata = getPreAndRepCompCost(pd, pdata, "monthly_prevention_completion",
+//					"highway_prevention_project_dettable", "PREVENTION_COMPLETE"); // 获取预防养护大中小修的完成费用
+//			pdata = getPreAndRepCompCost(pd, pdata, "monthly_repair_completion", "highway_repair_project_dettable",
+//					"REPAIR_COMPLETE"); // 获取修复养护大中小修的完成费用
+//			pdata = getCompRecods(putAnnualCompRecods(), pdata, pd);
+//			// 预备费完成
+//			String reserveCompSum = findReserveCompSum(pd);
+//			if (reserveCompSum != "") {
+//				pdata.put("RESERVE_COMPLETE", Double.parseDouble(reserveCompSum)); // 预备费
+//			}
+//		}
+		pd.put("VIEW_NAME", "annual_comp_sumtable_view");
+		List<PageData> pdateList = annualDailyCompService.findViewRecordsList(pd); //获取视图返回结果
+		Double TOTAL_PREVENTION_DESIGN = 0.0;
+		for(PageData tpd : pdateList){
+			if(tpd.get("OVERHAUL_DESIGN") != null){
+				tpd.put("OVERHAUL_REPAIR_DESIGN", tpd.get("OVERHAUL_DESIGN"));
+			}
+			if(tpd.get("OVERHAUL_COMPLETE") != null){
+				tpd.put("OVERHAUL_REPAIR_COMPLETE", tpd.get("OVERHAUL_COMPLETE"));
+			}
+			TOTAL_PREVENTION_DESIGN = addThreeNum(tpd.get("MINOR_PREVENTION_DESIGN"), tpd.get("MIDDLE_PREVENTION_DESIGN"), tpd.get("OVERHAUL_PREVENTION_DESIGN"));
+			if(TOTAL_PREVENTION_DESIGN != 0.0){
+				tpd.put("TOTAL_PREVENTION_DESIGN", TOTAL_PREVENTION_DESIGN);
+			}
+			TOTAL_PREVENTION_DESIGN = addThreeNum(tpd.get("MINOR_PREVENTION_COMPLETE"), tpd.get("MIDDLE_PREVENTION_COMPLETE"), tpd.get("OVERHAUL_PREVENTION_COMPLETE"));
+			if(TOTAL_PREVENTION_DESIGN != 0.0){
+				tpd.put("TOTAL_PREVENTION_COMPLETE", TOTAL_PREVENTION_DESIGN);
+			}
+			TOTAL_PREVENTION_DESIGN = addThreeNum(tpd.get("MINOR_REPAIR_DESIGN"), tpd.get("MIDDLE_REPAIR_DESIGN"), tpd.get("OVERHAUL_DESIGN"));
+			if(TOTAL_PREVENTION_DESIGN != 0.0){
+				tpd.put("TOTAL_REPAIR_DESIGN", TOTAL_PREVENTION_DESIGN);
+			}
+			TOTAL_PREVENTION_DESIGN = addThreeNum(tpd.get("MINOR_REPAIR_COMPLETE"), tpd.get("MIDDLE_REPAIR_COMPLETE"), tpd.get("OVERHAUL_COMPLETE"));
+			if(TOTAL_PREVENTION_DESIGN != 0.0){
+				tpd.put("TOTAL_REPAIR_COMPLETE", TOTAL_PREVENTION_DESIGN);
+			}
+			//计算比例
+			if(tpd.get("DAILY_COMPLETE") != null && tpd.get("DAILY_DESIGN")!= null){
+				tpd.put("DAILY_PROPORTION", math(tpd.get("DAILY_COMPLETE"),tpd.get("DAILY_DESIGN")).toString());
+			}
+			if(tpd.get("DAILY_COMPLETE") != null && tpd.get("CARE_KM")!= null){
+				tpd.put("DAILY_KM", mathKm(tpd.get("DAILY_COMPLETE"),tpd.get("CARE_KM")).toString());
+			}
+			if(tpd.get("MINOR_PREVENTION_COMPLETE") != null && tpd.get("MINOR_PREVENTION_DESIGN")!= null){
+				tpd.put("MINOR_PREVENTION_PROPORTION", math(tpd.get("MINOR_PREVENTION_COMPLETE"),tpd.get("MINOR_PREVENTION_DESIGN")).toString());
+			}
+			if(tpd.get("MIDDLE_PREVENTION_COMPLETE") != null && tpd.get("MIDDLE_PREVENTION_DESIGN")!= null){
+				tpd.put("MIDDLE_PREVENTION_PROPORTION", math(tpd.get("MIDDLE_PREVENTION_COMPLETE"),tpd.get("MIDDLE_PREVENTION_DESIGN")).toString());
+			}
+			if(tpd.get("OVERHAUL_PREVENTION_COMPLETE") != null && tpd.get("OVERHAUL_PREVENTION_DESIGN")!= null){
+				tpd.put("OVERHAUL_PREVENTION_PROPORTION", math(tpd.get("OVERHAUL_PREVENTION_COMPLETE"),tpd.get("OVERHAUL_PREVENTION_DESIGN")).toString());
+			}
+			if(tpd.get("TOTAL_PREVENTION_COMPLETE") != null && tpd.get("TOTAL_PREVENTION_DESIGN")!= null){
+				tpd.put("TOTAL_PREVENTION_PROPORTION", math(tpd.get("TOTAL_PREVENTION_COMPLETE"),tpd.get("TOTAL_PREVENTION_DESIGN")).toString());
+			}
+			if(tpd.get("MINOR_REPAIR_COMPLETE") != null && tpd.get("MINOR_REPAIR_DESIGN")!= null){
+				tpd.put("MINOR_REPAIR_PROPORTION", math(tpd.get("MINOR_REPAIR_COMPLETE"),tpd.get("MINOR_REPAIR_DESIGN")).toString());
+			}
+			if(tpd.get("MIDDLE_REPAIR_COMPLETE") != null && tpd.get("MIDDLE_REPAIR_DESIGN")!= null){
+				tpd.put("MIDDLE_REPAIR_PROPORTION", math(tpd.get("MIDDLE_REPAIR_COMPLETE"),tpd.get("MIDDLE_REPAIR_DESIGN")).toString());
+			}
+			if(tpd.get("OVERHAUL_REPAIR_COMPLETE") != null && tpd.get("OVERHAUL_REPAIR_DESIGN")!= null){
+				tpd.put("OVERHAUL_REPAIR_PROPORTION", math(tpd.get("OVERHAUL_REPAIR_COMPLETE"),tpd.get("OVERHAUL_REPAIR_DESIGN")).toString());
+			}
+			if(tpd.get("TOTAL_REPAIR_COMPLETE") != null && tpd.get("TOTAL_REPAIR_DESIGN")!= null){
+				tpd.put("TOTAL_REPAIR_PROPORTION", math(tpd.get("TOTAL_REPAIR_COMPLETE"),tpd.get("TOTAL_REPAIR_DESIGN")).toString());
+			}
+			if(tpd.get("SPECIAL_COMPLETE") != null && tpd.get("SPECIAL_DESIGN")!= null){
+				tpd.put("SPECIAL_PROPORTION", math(tpd.get("SPECIAL_COMPLETE"),tpd.get("SPECIAL_DESIGN")).toString());
+			}
+			if(tpd.get("EMERGENCY_COMPLETE") != null && tpd.get("EMERGENCY_DESIGN")!= null){
+				tpd.put("EMERGENCY_PROPORTION", math(tpd.get("EMERGENCY_COMPLETE"),tpd.get("EMERGENCY_DESIGN")).toString());
+			}
+			if(tpd.get("TEST_COMPLETE") != null && tpd.get("TEST_DESIGN")!= null){
+				tpd.put("TEST_PROPORTION", math(tpd.get("TEST_COMPLETE"),tpd.get("TEST_DESIGN")).toString());
+			}
+			if(tpd.get("SCIENTIFIC_COMPLETE") != null && tpd.get("SCIENTIFIC_DESIGN")!= null){
+				tpd.put("SCIENTIFIC_PROPORTION", math(tpd.get("SCIENTIFIC_COMPLETE"),tpd.get("SCIENTIFIC_DESIGN")).toString());
+			}
+			if(tpd.get("DEVICE_COMPLETE") != null && tpd.get("DEVICE_DESIGN")!= null){
+				tpd.put("DEVICE_PROPORTION", math(tpd.get("DEVICE_COMPLETE"),tpd.get("DEVICE_DESIGN")).toString());
+			}
+			if(tpd.get("RESERVE_COMPLETE") != null && tpd.get("RESERVE_DESIGN")!= null){
+				tpd.put("RESERVE_PROPORTION", math(tpd.get("RESERVE_COMPLETE"),tpd.get("RESERVE_DESIGN")).toString());
+			}
+			TOTAL_PREVENTION_DESIGN = addNineNum(tpd.get("TOTAL_PREVENTION_DESIGN"),tpd.get("TOTAL_REPAIR_DESIGN"),tpd.get("SPECIAL_DESIGN")
+					,tpd.get("EMERGENCY_DESIGN"),tpd.get("TEST_DESIGN"),tpd.get("SCIENTIFIC_DESIGN"),tpd.get("DEVICE_DESIGN")
+					,tpd.get("RESERVE_DESIGN"),tpd.get("DAILY_DESIGN"));
+			if(TOTAL_PREVENTION_DESIGN != 0.0){
+				tpd.put("TOTAL_DESIGN", TOTAL_PREVENTION_DESIGN);
+			}
+			TOTAL_PREVENTION_DESIGN = addNineNum(tpd.get("TOTAL_PREVENTION_COMPLETE"),tpd.get("TOTAL_REPAIR_COMPLETE"),tpd.get("SPECIAL_COMPLETE")
+					,tpd.get("EMERGENCY_COMPLETE"),tpd.get("TEST_COMPLETE"),tpd.get("SCIENTIFIC_COMPLETE"),tpd.get("DEVICE_COMPLETE")
+					,tpd.get("RESERVE_COMPLETE"),tpd.get("DAILY_COMPLETE"));
+			if(TOTAL_PREVENTION_DESIGN != 0.0){
+				tpd.put("TOTAL_COMPLETE", TOTAL_PREVENTION_DESIGN);
+			}
+			if(tpd.get("TOTAL_COMPLETE") != null && tpd.get("TOTAL_DESIGN")!= null){
+				tpd.put("TOTAL_PROPORTION", math(tpd.get("TOTAL_COMPLETE"),tpd.get("TOTAL_DESIGN")).toString());
+			}
+		}
+		return pdateList;
+	}
+	
+	private Double addNums(List<Object> list){
+		Double dou = 0.0;
+		for(Object obj : list){
+			if(obj != null){
+				dou += Double.parseDouble(obj.toString());
+			}
+		}
+		return dou;
+	}
+	
+	private Double addThreeNum(Object obj1, Object obj2, Object obj3){
+		Double dou = 0.0;
+		if(obj1 != null){
+			dou += Double.parseDouble(obj1.toString());
+		}
+		if(obj2 != null){
+			dou += Double.parseDouble(obj2.toString());
+		}
+		if(obj3 != null){
+			dou += Double.parseDouble(obj3.toString());
+		}
+		return dou;
+	}
+	
+	private Double addNineNum(Object obj1, Object obj2, Object obj3,Object obj4, Object obj5, Object obj6,Object obj7, Object obj8, Object obj9){
+		Double dou = 0.0;
+		if(obj1 != null){
+			dou += Double.parseDouble(obj1.toString());
+		}
+		if(obj2 != null){
+			dou += Double.parseDouble(obj2.toString());
+		}
+		if(obj3 != null){
+			dou += Double.parseDouble(obj3.toString());
+		}
+		if(obj4 != null){
+			dou += Double.parseDouble(obj4.toString());
+		}
+		if(obj5 != null){
+			dou += Double.parseDouble(obj5.toString());
+		}
+		if(obj6 != null){
+			dou += Double.parseDouble(obj6.toString());
+		}
+		if(obj7 != null){
+			dou += Double.parseDouble(obj7.toString());
+		}
+		if(obj8 != null){
+			dou += Double.parseDouble(obj8.toString());
+		}
+		if(obj9 != null){
+			dou += Double.parseDouble(obj9.toString());
+		}
+		return dou;
+	}
+	
+	private Double add12Num(Object obj1, Object obj2, Object obj3,Object obj4, Object obj5, Object obj6
+			,Object obj7, Object obj8, Object obj9,Object obj10, Object obj11, Object obj12){
+		Double dou = 0.0;
+		if(obj1 != null){
+			dou += Double.parseDouble(obj1.toString());
+		}
+		if(obj2 != null){
+			dou += Double.parseDouble(obj2.toString());
+		}
+		if(obj3 != null){
+			dou += Double.parseDouble(obj3.toString());
+		}
+		if(obj4 != null){
+			dou += Double.parseDouble(obj4.toString());
+		}
+		if(obj5 != null){
+			dou += Double.parseDouble(obj5.toString());
+		}
+		if(obj6 != null){
+			dou += Double.parseDouble(obj6.toString());
+		}
+		if(obj7 != null){
+			dou += Double.parseDouble(obj7.toString());
+		}
+		if(obj8 != null){
+			dou += Double.parseDouble(obj8.toString());
+		}
+		if(obj9 != null){
+			dou += Double.parseDouble(obj9.toString());
+		}
+		if(obj10 != null){
+			dou += Double.parseDouble(obj10.toString());
+		}
+		if(obj11 != null){
+			dou += Double.parseDouble(obj11.toString());
+		}
+		if(obj12 != null){
+			dou += Double.parseDouble(obj12.toString());
+		}
+		return dou;
+	}
+	
+	
+
+	// 科研项目
+	private String findScientificPlanSum(PageData pd) throws Exception {
+		String scientificPlanSum = annualDailyCompService.findScientificPlanSum(pd);
+		return scientificPlanSum;
+	}
+
+	// 设备大修
+	private String findEquipmentPlanSum(PageData pd) throws Exception {
+		String equipmentPlanSum = annualDailyCompService.findEquipmentPlanSum(pd);
+		return equipmentPlanSum;
+	}
+
+	// 预备费计划
+	private String findReservePlanSum(PageData pd) throws Exception {
+		String reservePlanSum = "";
+		pd.put("FROM_TABLE", "highway_reserve_fees_sumtable_total");
+		PageData allRecods = annualDailyCompService.findAllRecods(pd);
+		if (allRecods != null && allRecods.get("TOTAL_COST")!= null) {
+			reservePlanSum = allRecods.get("TOTAL_COST").toString();
+		}
+		return reservePlanSum;
+	}
+
+	// 预备费完成
+	private String findReserveCompSum(PageData pd) throws Exception {
+		String reservePlanSum = "";
+		pd.put("FROM_TABLE", "highway_reserve_fees_sumtable");
+		PageData allRecods = annualDailyCompService.findAllRecods(pd);
+		if (allRecods != null && allRecods.get("ACTUAL_COST")!=null) {
+			reservePlanSum = allRecods.get("ACTUAL_COST").toString();
+		}
+		return reservePlanSum;
+	}
+
+	private PageData getPreAndRepPlanCost(PageData pd, PageData pdata, String tableNameA, String tableNameB,
+			String kayWords) throws Exception {
+		pd.put("FROM_TABLEA", tableNameA);
+		pd.put("FROM_TABLEB", tableNameB);
+		String[] PROJECT_SCALES = { "小修", "中修", "大修" };
+		for (String PROJECT_SCALE : PROJECT_SCALES) {
+			pd.put("PROJECT_SCALE", PROJECT_SCALE);
+			String getRecod = annualDailyCompService.getPreAndRepPlanCost(pd);
+			if (getRecod != null) {
+				if ("小修".equalsIgnoreCase(PROJECT_SCALE)) {
+					pdata.put("MINOR_" + kayWords, getRecod);
+				} else if ("中修".equalsIgnoreCase(PROJECT_SCALE)) {
+					pdata.put("MIDDLE_" + kayWords, getRecod);
+				} else {
+					pdata.put("OVERHAUL_" + kayWords, getRecod);
+				}
+			}
+		}
+		return pdata;
+	}
+
+	private PageData getPreAndRepCompCost(PageData pd, PageData pdata, String tableNameA, String tableNameB,
+			String kayWords) throws Exception {
+		pd.put("FROM_TABLEA", tableNameA);
+		pd.put("FROM_TABLEB", tableNameB);
+		String[] PROJECT_SCALES = { "小修", "中修", "大修" };
+		for (String PROJECT_SCALE : PROJECT_SCALES) {
+			pd.put("PROJECT_SCALE", PROJECT_SCALE);
+			String getRecod = annualDailyCompService.getPreAndRepCompCost(pd);
+			if (getRecod != null) {
+				if ("小修".equalsIgnoreCase(PROJECT_SCALE)) {
+					pdata.put("MINOR_" + kayWords, getRecod);
+				} else if ("中修".equalsIgnoreCase(PROJECT_SCALE)) {
+					pdata.put("MIDDLE_" + kayWords, getRecod);
+				} else {
+					pdata.put("OVERHAUL_" + kayWords, getRecod);
+				}
+			}
+		}
+		return pdata;
+	}
+
+	private List<PageData> getAnnualDailyCompRecod(PageData pd) throws Exception {
+//		List<PageData> pdateList = annualDailyCompService.getKmInfo(pd);
+//		for (PageData pdata : pdateList) {
+//			pdata.put("YEAR", pd.get("YEAR"));
+//			PageData queryData = pdata;
+//			PageData tempPg = annualDailyCompService.findDaliyPlanRecord(queryData); // 日常养护
+//			String dailyPlanCost = dailyPlanCostSum(tempPg);
+//			if (dailyPlanCost != "") {
+//				pdata.put("PLAN_COST", Double.parseDouble(dailyPlanCost));
+//			}
+//			for (String dct : annDailyCompType) {
+//				queryData.put("TYPE", dct);
+//				String compPdate = annualDailyCompService.findDaliyCompRecord(queryData);
+//				if (compPdate != null) {
+//					pdata.put(dct, compPdate);
+//				}
+//			}
+//		}
+		pd.put("VIEW_NAME", "annual_daily_comp_sumtable_view");
+		List<PageData> pdateList = annualDailyCompService.findViewRecordsList(pd); //获取视图返回结果
+		for(PageData tpd : pdateList){
+			Double totalCost = add12Num(tpd.get("CLEAN_COST"),tpd.get("PATROL_COST"),tpd.get("SUBGRADE_COST"),tpd.get("PAVEMENT_COST")
+					,tpd.get("BRIDGE_COST"),tpd.get("CULVERT_COST"),tpd.get("TUNNEL_COST"),tpd.get("GREEN_COST"),tpd.get("SAFE_COST")
+					,tpd.get("LINE_COST"),tpd.get("CAR_COST"),tpd.get("EMERGENCY_COST"));
+			if(totalCost != 0.0){
+				tpd.put("TOTAL_COST", totalCost);
+			}
+			if(tpd.get("TOTAL_COST")!=null && tpd.get("CARE_KM")!=null){
+				tpd.put("COST_KM", mathKm(tpd.get("TOTAL_COST"),tpd.get("CARE_KM")).toString());
+			}
+			if(tpd.get("TOTAL_COST")!=null && tpd.get("PLAN_COST")!=null){
+				tpd.put("COM_RETIO", math(tpd.get("TOTAL_COST"),tpd.get("PLAN_COST")).toString());
+			}
+		}
+		return pdateList;
+	}
+
+	private List<PageData> getAnnualDailyPlanRecod(PageData pd) throws Exception {
+//		List<PageData> pdateList = annualDailyCompService.getKmInfo(pd);
+//		List<PageData> pdList = new ArrayList<PageData>();
+//		for (PageData pdata : pdateList) {
+//			pdata.put("YEAR", pd.get("YEAR"));
+//			PageData queryData = pdata;
+//			PageData tempPg = annualDailyCompService.getDaliyPlanRecord(queryData); // 日常养护
+//			if (tempPg != null) {
+//				tempPg.put("CARE_KM", pdata.get("CARE_KM"));
+//				tempPg.put("DESIGN_KM", pdata.get("DESIGN_KM"));
+//				pdList.add(tempPg);
+//			}
+//		}
+//		if (pdList.size() == 0) {
+//			pdList = pdateList;
+//		}
+		pd.put("VIEW_NAME", "annual_daily_comp_sumtable_view");
+		List<PageData> pdateList = annualDailyCompService.findViewRecordsList(pd); //获取视图返回结果
+		for(PageData tpd : pdateList){
+			if(tpd.get("PLAN_COST")!=null && tpd.get("CARE_KM")!=null){
+				tpd.put("COST_KM", mathKm(tpd.get("PLAN_COST"),tpd.get("CARE_KM")).toString());
+			}
+		}
+		return pdateList;
+	}
+
+	private Map<String, String> putPlanRecods() throws Exception {
+		Map<String, String> tableInfo = new HashMap<String, String>();
+		tableInfo.put("highway_prevention_project_dettable", "PREVENTION_PLAN_COST"); // 预防养护
+		tableInfo.put("highway_repair_project_dettable", "REPAIR_PLAN_COST"); // 修复养护
+		tableInfo.put("highway_special_project_dettable", "SPECIAL_PLAN_COST"); // 专项养护
+		tableInfo.put("highway_test_project_dettable", "TEST_PLAN_COST"); // 试验检测项目
+		return tableInfo;
+	}
+
+	private PageData getPlanRecods(Map<String, String> tableInfo, PageData varPg, PageData pd) throws Exception {
+		for (Map.Entry<String, String> entry : tableInfo.entrySet()) {
+			System.out.println("key=" + entry.getKey() + "\tvalue=" + entry.getValue());
+			pd.put("FROM_TABLE", entry.getKey());
+			String getRecod = annualDailyCompService.findOtherPlanSum(pd);
+			if (getRecod != null) {
+				varPg.put(entry.getValue(), Double.parseDouble(getRecod));
+			}
+		}
+		return varPg;
+	}
+
+	private Map<String, String> putCompRecods() throws Exception {
+		Map<String, String> tableInfo = new HashMap<String, String>();
+		tableInfo.put("monthly_daily_completion", "DAILY_COMPLETE_COST"); // 日常养护
+		tableInfo.put("monthly_prevention_completion", "PREVENTION_COMPLETE_COST"); // 预防养护
+		tableInfo.put("monthly_repair_completion", "REPAIR_COMPLETE_COST"); // 修复养护
+		tableInfo.put("monthly_special_completion", "SPECIAL_COMPLETE_COST"); // 专项养护
+		tableInfo.put("monthly_test_project_completion", "TEST_COMPLETE_COST"); // 试验检测项目
+		tableInfo.put("monthly_scientific_project_completion", "SCIENTIFIC_COMPLETE_COST"); // 科研项目
+		tableInfo.put("monthly_equipment_overhaul_completion", "DEVICE_COMPLETE_COST"); // 设备大修
+		tableInfo.put("monthly_emergency_completion", "EMERGENCY_COMPLETE_COST"); // 应急
+		return tableInfo;
+	}
+
+	private Map<String, String> putAnnualCompRecods() throws Exception {
+		Map<String, String> tableInfo = new HashMap<String, String>();
+		tableInfo.put("monthly_daily_completion", "DAILY_COMPLETE"); // 日常养护
+		tableInfo.put("monthly_special_completion", "SPECIAL_COMPLETE"); // 专项养护
+		tableInfo.put("monthly_test_project_completion", "TEST_COMPLETE"); // 试验检测项目
+		tableInfo.put("monthly_scientific_project_completion", "SCIENTIFIC_COMPLETE"); // 科研项目
+		tableInfo.put("monthly_equipment_overhaul_completion", "DEVICE_COMPLETE"); // 设备大修
+		tableInfo.put("monthly_emergency_completion", "EMERGENCY_COMPLETE"); // 应急
+		return tableInfo;
+	}
+
+	private PageData getCompRecods(Map<String, String> tableInfo, PageData varPg, PageData pd) throws Exception {
+		for (Map.Entry<String, String> entry : tableInfo.entrySet()) {
+			System.out.println("key=" + entry.getKey() + "\tvalue=" + entry.getValue());
+			pd.put("FROM_TABLE", entry.getKey());
+			String getRecod = annualDailyCompService.findCompSum(pd);
+			if (getRecod != null) {
+				varPg.put(entry.getValue(), Double.parseDouble(getRecod));
+			}
+		}
+		return varPg;
+	}
+
+	private String dailyPlanCostSum(PageData tempPg) {
+		String dailySum = "";
+		if (tempPg != null) {
+			Double DailySumd = 0.00;
+			for (String type : dailyPlanType) {
+				if (tempPg.get(type) != null) {
+					DailySumd += Double.parseDouble(tempPg.get(type).toString());
+				}
+			}
+			dailySum = String.valueOf(DailySumd);
+		}
+		return dailySum;
+	}
+
+	@SuppressWarnings("unused")
+	// 获取公司计划费用
+	private Double getPlanSum(PageData pd, AnnualDailyCompService annualDailyCompService) throws NumberFormatException, Exception {
+		Double planSum = 0.00;
+		Double a = 0.00;
+		Double b = 0.00;
+		Double c = 0.00;
+		Double d = 0.00;
+		Double e = 0.00;
+		Double f = 0.00;
+		Double g = 0.00;
+		Double h = 0.00;
+		Double i = 0.00;
+		// 获取公司日常计划费用
+		if(annualDailyCompService.getRcyhPlanSum(pd)!=null) {
+		 a = Double.parseDouble(annualDailyCompService.getRcyhPlanSum(pd));
+		}
+		// 获取预防养护计划费用
+		if(annualDailyCompService.getYfyhPlanSum(pd)!=null) {
+		 b = Double.parseDouble(annualDailyCompService.getYfyhPlanSum(pd));
+		}
+		// 获取修复养护计划费用
+		if(annualDailyCompService.getXfyhPlanSum(pd)!=null) {
+		 c = Double.parseDouble(annualDailyCompService.getXfyhPlanSum(pd));
+		}
+		// 获取专项养护计划费用
+		if(annualDailyCompService.getZxyhPlanSum(pd)!=null) {
+		 d = Double.parseDouble(annualDailyCompService.getZxyhPlanSum(pd));
+		}
+		// 获取试验检测计划费用
+		if(annualDailyCompService.getSyjcPlanSum(pd)!=null) {
+		 e = Double.parseDouble(annualDailyCompService.getSyjcPlanSum(pd));
+		}
+		// 获取科研项目计划费用
+		if(annualDailyCompService.getKyxmPlanSum(pd)!=null) {
+		 f = Double.parseDouble(annualDailyCompService.getKyxmPlanSum(pd));
+		}
+		// 获取设备大修计划费用
+		if(annualDailyCompService.getSbdxPlanSum(pd)!=null) {
+		 g = Double.parseDouble(annualDailyCompService.getSbdxPlanSum(pd));
+		}
+		// 获取预备费计划费用
+		if(annualDailyCompService.getYbfPlanSum(pd)!=null) {
+		 h = Double.parseDouble(annualDailyCompService.getYbfPlanSum(pd));
+		}
+		// 获取应急养护计划费用
+		if(annualDailyCompService.getYjyhPlanSum(pd)!=null) {
+		 i = Double.parseDouble(annualDailyCompService.getYjyhPlanSum(pd));
+		}
+		planSum = a + b + c + d + e + f + g + h + i;
+		return planSum;
+	}
+
+	@SuppressWarnings("unused")
+	// 获取公司完成费用
+	private Double getCompSum(PageData pd, AnnualDailyCompService annualDailyCompService) throws NumberFormatException, Exception {
+		Double compSum = 0.00;
+		Double a = 0.00;
+		Double b = 0.00;
+		Double c = 0.00;
+		Double d = 0.00;
+		Double e = 0.00;
+		Double f = 0.00;
+		Double g = 0.00;
+		Double h = 0.00;
+		Double i = 0.00;
+		// 获取公司日常计划费用
+		if(annualDailyCompService.getRcyhCompSum(pd)!=null) {
+		 a = Double.parseDouble(annualDailyCompService.getRcyhCompSum(pd));
+		}
+		// 获取预防养护计划费用
+		if(annualDailyCompService.getYfyhCompSum(pd)!=null) {
+		 b = Double.parseDouble(annualDailyCompService.getYfyhCompSum(pd));
+		}
+		// 获取修复养护计划费用
+		if(annualDailyCompService.getXfyhCompSum(pd)!=null) {
+		 c = Double.parseDouble(annualDailyCompService.getXfyhCompSum(pd));
+		}
+		// 获取专项养护计划费用
+		if(annualDailyCompService.getZxyhCompSum(pd)!=null) {
+		 d = Double.parseDouble(annualDailyCompService.getZxyhCompSum(pd));
+		}
+		// 获取试验检测计划费用
+		if(annualDailyCompService.getSyjcCompSum(pd)!=null) {
+		 e = Double.parseDouble(annualDailyCompService.getSyjcCompSum(pd));
+		}
+		// 获取科研项目计划费用
+		if(annualDailyCompService.getKyxmCompSum(pd)!=null) {
+		 f = Double.parseDouble(annualDailyCompService.getKyxmCompSum(pd));
+		}
+		// 获取设备大修计划费用
+		if(annualDailyCompService.getSbdxCompSum(pd)!=null) {
+		 g = Double.parseDouble(annualDailyCompService.getSbdxCompSum(pd));
+		}
+		// 获取预备费计划费用
+		if(annualDailyCompService.getYbfCompSum(pd)!=null) {
+		 h = Double.parseDouble(annualDailyCompService.getYbfCompSum(pd));
+		}
+		// 获取应急养护计划费用
+		if(annualDailyCompService.getYjyhCompSum(pd)!=null) {
+		 i = Double.parseDouble(annualDailyCompService.getYjyhCompSum(pd));
+		}
+		compSum = a + b + c + d + e + f + g + h + i;
+		return compSum;
+
+	}
+
+	// 算完成比例得方法,保留2位小数
+	public Double div(PageData pd, AnnualDailyCompService annualDailyCompService) throws NumberFormatException, Exception {
+		BigDecimal b1 = new BigDecimal(this.getPlanSum(pd,annualDailyCompService).toString());
+		BigDecimal b2 = new BigDecimal(this.getCompSum(pd,annualDailyCompService).toString());
+		if(b1.compareTo(BigDecimal.ZERO)==0) {
+			return 0.00;
+		}
+		return new Double(b2.divide(b1, 2, BigDecimal.ROUND_HALF_UP).doubleValue());
+	}
+
+	// 计算公司完成率得分
+	public int getPoint(Double proportion, AnnualDailyCompService annualDailyCompService) {
+		int point = 0;
+		// 完成率大于95的得20分
+		if (proportion > 0.95) {
+			point = 20;
+		}
+		// 完成率大于90小于等于0.95的得15分
+		if (proportion > 0.90 && proportion <= 0.95) {
+			point = 15;
+		}
+		// 完成率大于等于85小于等于90得10分
+		if (proportion >= 0.85 && proportion <= 0.90) {
+			point = 10;
+		}
+		// 完成率小于85的得5分
+		if (proportion < 0.85) {
+			point = 5;
+		}
+		return point;
+	}
+
+	// 获取上报及时信息
+	public int getReportInfo(PageData pd, AnnualDailyCompService annualDailyCompService) throws Exception {
+		// 获取改公司所有上报表格时间
+		List<PageData> pdList = new ArrayList<PageData>();
+		// List dateList = new ArrayList();
+		int point = 0;
+		//记录如果有不符合时间得就加1
+		int a = 0;
+		int b = 0;
+		int c = 0;
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+		Date pz1 = sdf.parse(this.getProperties("pz1"));
+		Date pz2 = sdf.parse(this.getProperties("pz2"));
+		pdList = annualDailyCompService.getcompanysReport(pd);
+		for (PageData pdData : pdList) {
+			Date date = new Date();
+			if(pdData.get("SPTIME")!=null) {
+			date = sdf.parse(pdData.get("SPTIME").toString()) ;
+			}
+			if (date.before(pz1)) {
+				a = a + 1;
+				if (date.before(pz1)&&date.after(pz2)) {
+					b = b + 1;
+					if (date.before(pz2)) {
+						c = c + 1;
+					}
+				}
+			}
+		}
+		if (a == 0) {
+			point = 5;
+		}
+		if (b == 0) {
+			point = 3;
+		}
+		if (c == 0) {
+			point = 1;
+		}
+		return point;
+	}
+
+	// 读取配置文件方法
+	public String getProperties(String str) throws IOException {
+		Properties properties = PropertiesLoaderUtils.loadAllProperties("plantime.properties");
+		String test = properties.getProperty(str);
+		return test;
+	}
+
+	// 读取编制得分
+		public Double getBzPoint(PageData pd,AnnualDailyCompService annualDailyCompService) throws Exception {
+			Double bpoint =0.0;
+			if(annualDailyCompService.getBzPoint(pd)!=null)
+			{
+			 bpoint = Double.parseDouble(annualDailyCompService.getBzPoint(pd));
+			}
+			return bpoint;
+		}
+	// 获取所有公司信息
+	public List<PageData> getAllcompanys(AnnualDailyCompService annualDailyCompService,PageData pg) throws Exception {
+		PageData pageData = new PageData();
+		// 获取公司信息
+		List<PageData> compList = annualDailyCompService.getAllcompanys(pageData);
+		// 返回前台处理过的公司信息List
+		List<PageData> newCompList = new ArrayList<PageData>();
+		//前台传入年份year
+//		 if(pg.getString("EVET_CODE")!=null) 
+//		 {
+			String year = pg.getString("EVET_CODE");
+//		 }
+		for (PageData comp : compList) {
+			PageData pd = new PageData();
+			// 获得公司名字
+			String compName = comp.getString("NAME");
+			// 获得公司ID
+			String compId = comp.getString("BIANMA");
+			pd.put("COMPANY_ID", compId);
+			pd.put("COMPANY_NAME", compName);
+			pd.put("YEAR", year);
+			// 获得公司完成比例
+			Double proportion = this.div(pd,annualDailyCompService);
+			//pd.put("PROPORTION", proportion);
+			// 完成率得分
+			int wpoint = this.getPoint(proportion,annualDailyCompService);
+			pd.put("WPOINT", wpoint);
+			// 获取上报及时获取得得分
+			int spoint = this.getReportInfo(pd,annualDailyCompService);
+			pd.put("SPOINT", spoint);
+			//获得编制质量得分
+			int bpoint = new Double(this.getBzPoint(pd,annualDailyCompService)).intValue();
+			pd.put("BPOINT", bpoint);
+			//总分
+			int point = wpoint+spoint+bpoint;
+			if(!year.equals("2019")) {
+				point = 100;
+			}
+			pd.put("POINT", point);
+			newCompList.add(pd);
+		}
+		return newCompList;
+	}
+	
+	
+	/**
+	 * object => bigdecimal
+	 * @param value
+	 * @return
+	 */
+	 public static BigDecimal getBigDecimal( Object value ) {  
+	        BigDecimal ret = null;  
+	        if( value != null ) {  
+	            if( value instanceof BigDecimal ) {  
+	                ret = (BigDecimal) value;  
+	            } else if( value instanceof String ) {  
+	                ret = new BigDecimal( (String) value );  
+	            } else if( value instanceof BigInteger ) {  
+	                ret = new BigDecimal( (BigInteger) value );  
+	            } else if( value instanceof Number ) {  
+	                ret = new BigDecimal( ((Number)value).doubleValue() );  
+	            } else {  
+	                throw new ClassCastException("Not possible to coerce ["+value+"] from class "+value.getClass()+" into a BigDecimal.");  
+	            }  
+	        }  
+	        return ret;  
+	    } 
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/SynchDailyPlanController.class


+ 63 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/annualPlan/SynchDailyPlanController.java

@@ -0,0 +1,63 @@
+package com.zhcs.dt.controller.information.annualPlan;
+
+import java.io.File;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+import net.sf.json.JSONArray;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.alibaba.fastjson.JSON;
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.information.annualPlan.AnnualPlanManager;
+import com.zhcs.dt.service.information.annualPlan.ImportDoc;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.Tools;
+
+/** 
+ * 类名称:同步日常养护计划和实际数据
+ * 创建人:Yuanf
+ * 创建时间:2019-9-2
+ */
+@Controller
+@RequestMapping(value="/synchDailyPlan")
+class SynchDailyPlanController extends BaseController {
+	@Resource(name="annualPlanService")
+	private AnnualPlanManager annualPlanService;
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/getDailyPlanCost")
+	@ResponseBody
+	public Object getDailyPlanCost(String year) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"年度养护计划");	
+		Object temp = new Object();
+		PageData pd = new PageData();
+		try{
+			List<PageData> dailyPlanCostList = annualPlanService.getDailyPlanCost(year);
+			temp = dailyPlanCostList;
+		}catch(Exception e){
+			temp = "error";
+		}
+		return temp;
+	}
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/attached/AttachedController.class


+ 228 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/attached/AttachedController.java

@@ -0,0 +1,228 @@
+package com.zhcs.dt.controller.information.attached;
+
+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;
+
+import javax.annotation.Resource;
+
+import org.springframework.beans.propertyeditors.CustomDateEditor;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.InitBinder;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.information.attached.AttachedManager;
+import com.zhcs.dt.service.information.attachedmx.AttachedMxManager;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.ObjectExcelView;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.Tools;
+
+/** 
+ * 说明:主附结构
+ * 创建人:FH Q313596790
+ * 创建时间:2016-04-17
+ */
+@Controller
+@RequestMapping(value="/attached")
+public class AttachedController extends BaseController {
+	
+	String menuUrl = "attached/list.do"; //菜单地址(权限用)
+	@Resource(name="attachedService")
+	private AttachedManager attachedService;
+	
+	@Resource(name="attachedmxService")
+	private AttachedMxManager attachedmxService;
+	
+	/**保存
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/save")
+	public ModelAndView save() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"新增Attached");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("ATTACHED_ID", this.get32UUID());		//主键
+		pd.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+		attachedService.save(pd);
+		pd = attachedService.findById(pd);				//根据ID读取
+		mv.setViewName("information/attached/attached_edit");
+		mv.addObject("msg", "edit");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**删除
+	 * @param out
+	 * @throws NumberFormatException 
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delete")
+	@ResponseBody
+	public Object delete() throws NumberFormatException, Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"删除Attached");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String errInfo = "success";
+		if(Integer.parseInt(attachedmxService.findCount(pd).get("zs").toString()) > 0){
+			errInfo = "false";
+		}else{
+			attachedService.delete(pd);
+		}
+		map.put("result", errInfo);
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**修改
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/edit")
+	public ModelAndView edit() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"修改Attached");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		attachedService.edit(pd);
+		mv.addObject("msg","success");
+		mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"列表Attached");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");				//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		page.setPd(pd);
+		List<PageData>	varList = attachedService.list(page);	//列出Attached列表
+		mv.setViewName("information/attached/attached_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**去新增页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goAdd")
+	public ModelAndView goAdd()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		mv.setViewName("information/attached/attached_edit");
+		mv.addObject("msg", "save");
+		mv.addObject("pd", pd);
+		return mv;
+	}	
+	
+	 /**去修改页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goEdit")
+	public ModelAndView goEdit()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd = attachedService.findById(pd);	//根据ID读取
+		mv.setViewName("information/attached/attached_edit");
+		mv.addObject("msg", "edit");
+		mv.addObject("pd", pd);
+		return mv;
+	}	
+	
+	 /**批量删除
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/deleteAll")
+	@ResponseBody
+	public Object deleteAll() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"批量删除Attached");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
+		PageData pd = new PageData();		
+		Map<String,Object> map = new HashMap<String,Object>();
+		pd = this.getPageData();
+		List<PageData> pdList = new ArrayList<PageData>();
+		String DATA_IDS = pd.getString("DATA_IDS");
+		if(null != DATA_IDS && !"".equals(DATA_IDS)){
+			String ArrayDATA_IDS[] = DATA_IDS.split(",");
+			attachedService.deleteAll(ArrayDATA_IDS);
+			pd.put("msg", "ok");
+		}else{
+			pd.put("msg", "no");
+		}
+		pdList.add(pd);
+		map.put("list", pdList);
+		return AppUtil.returnObject(pd, map);
+	}
+	
+	 /**导出到excel
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/excel")
+	public ModelAndView exportExcel() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"导出Attached到excel");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
+		ModelAndView mv = new ModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		Map<String,Object> dataMap = new HashMap<String,Object>();
+		List<String> titles = new ArrayList<String>();
+		titles.add("名称");	//1
+		titles.add("描述");	//2
+		titles.add("价格");	//3
+		titles.add("创建时间");	//4
+		dataMap.put("titles", titles);
+		List<PageData> varOList = attachedService.listAll(pd);
+		List<PageData> varList = new ArrayList<PageData>();
+		for(int i=0;i<varOList.size();i++){
+			PageData vpd = new PageData();
+			vpd.put("var1", varOList.get(i).getString("NAME"));	    //1
+			vpd.put("var2", varOList.get(i).getString("FDESCRIBE"));	    //2
+			vpd.put("var3", varOList.get(i).get("PRICE").toString());	//3
+			vpd.put("var4", varOList.get(i).getString("CTIME"));	    //4
+			varList.add(vpd);
+		}
+		dataMap.put("varList", varList);
+		ObjectExcelView erv = new ObjectExcelView();
+		mv = new ModelAndView(erv,dataMap);
+		return mv;
+	}
+	
+	@InitBinder
+	public void initBinder(WebDataBinder binder){
+		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+		binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
+	}
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/attachedmx/AttachedMxController.class


+ 213 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/attachedmx/AttachedMxController.java

@@ -0,0 +1,213 @@
+package com.zhcs.dt.controller.information.attachedmx;
+
+import java.io.PrintWriter;
+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;
+
+import javax.annotation.Resource;
+
+import org.springframework.beans.propertyeditors.CustomDateEditor;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.InitBinder;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.information.attachedmx.AttachedMxManager;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.ObjectExcelView;
+import com.zhcs.dt.util.PageData;
+
+/** 
+ * 说明:明细表
+ * 创建人:FH Q313596790
+ * 创建时间:2016-04-17
+ */
+@Controller
+@RequestMapping(value="/attachedmx")
+public class AttachedMxController extends BaseController {
+	
+	String menuUrl = "attachedmx/list.do"; //菜单地址(权限用)
+	@Resource(name="attachedmxService")
+	private AttachedMxManager attachedmxService;
+	
+	/**保存
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/save")
+	public ModelAndView save() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"新增AttachedMx");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("ATTACHEDMX_ID", this.get32UUID());	//主键
+		attachedmxService.save(pd);
+		mv.addObject("msg","success");
+		mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**删除
+	 * @param out
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delete")
+	public void delete(PrintWriter out) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"删除AttachedMx");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		attachedmxService.delete(pd);
+		out.write("success");
+		out.close();
+	}
+	
+	/**修改
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/edit")
+	public ModelAndView edit() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"修改AttachedMx");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		attachedmxService.edit(pd);
+		mv.addObject("msg","success");
+		mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"列表AttachedMx");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");				//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		page.setPd(pd);
+		List<PageData>	varList = attachedmxService.list(page);	//列出AttachedMx列表
+		mv.setViewName("information/attachedmx/attachedmx_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**去新增页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goAdd")
+	public ModelAndView goAdd()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		mv.setViewName("information/attachedmx/attachedmx_edit");
+		mv.addObject("msg", "save");
+		mv.addObject("pd", pd);
+		return mv;
+	}	
+	
+	 /**去修改页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goEdit")
+	public ModelAndView goEdit()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd = attachedmxService.findById(pd);	//根据ID读取
+		mv.setViewName("information/attachedmx/attachedmx_edit");
+		mv.addObject("msg", "edit");
+		mv.addObject("pd", pd);
+		return mv;
+	}	
+	
+	 /**批量删除
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/deleteAll")
+	@ResponseBody
+	public Object deleteAll() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"批量删除AttachedMx");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
+		PageData pd = new PageData();		
+		Map<String,Object> map = new HashMap<String,Object>();
+		pd = this.getPageData();
+		List<PageData> pdList = new ArrayList<PageData>();
+		String DATA_IDS = pd.getString("DATA_IDS");
+		if(null != DATA_IDS && !"".equals(DATA_IDS)){
+			String ArrayDATA_IDS[] = DATA_IDS.split(",");
+			attachedmxService.deleteAll(ArrayDATA_IDS);
+			pd.put("msg", "ok");
+		}else{
+			pd.put("msg", "no");
+		}
+		pdList.add(pd);
+		map.put("list", pdList);
+		return AppUtil.returnObject(pd, map);
+	}
+	
+	 /**导出到excel
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/excel")
+	public ModelAndView exportExcel() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"导出AttachedMx到excel");
+		if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
+		ModelAndView mv = new ModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		Map<String,Object> dataMap = new HashMap<String,Object>();
+		List<String> titles = new ArrayList<String>();
+		titles.add("名称");	//1
+		titles.add("标题");	//2
+		titles.add("创建日期");	//3
+		titles.add("单价");	//4
+		dataMap.put("titles", titles);
+		List<PageData> varOList = attachedmxService.listAll(pd);
+		List<PageData> varList = new ArrayList<PageData>();
+		for(int i=0;i<varOList.size();i++){
+			PageData vpd = new PageData();
+			vpd.put("var1", varOList.get(i).getString("NAME"));	    //1
+			vpd.put("var2", varOList.get(i).getString("TITLE"));	    //2
+			vpd.put("var3", varOList.get(i).getString("CTIME"));	    //3
+			vpd.put("var4", varOList.get(i).get("PRICE").toString());	//4
+			varList.add(vpd);
+		}
+		dataMap.put("varList", varList);
+		ObjectExcelView erv = new ObjectExcelView();
+		mv = new ModelAndView(erv,dataMap);
+		return mv;
+	}
+	
+	@InitBinder
+	public void initBinder(WebDataBinder binder){
+		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+		binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
+	}
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/examineResults/ExamineResultsController.class


+ 264 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/examineResults/ExamineResultsController.java

@@ -0,0 +1,264 @@
+package com.zhcs.dt.controller.information.examineResults;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.controller.information.annualPlan.ShowTableRecodUtil;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.information.annualPlan.impl.AnnualDailyCompService;
+import com.zhcs.dt.service.information.examineResults.ExamineResultsManager;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+/**
+ * 类名称:年度养护计划 创建人:Yuanf 创建时间:2018-11-12
+ */
+@Controller
+@RequestMapping(value = "/examineResults")
+class ExamineResultsController extends BaseController {
+	String menuUrl = "examineResults/list.do"; // 菜单地址(权限用)
+	@Resource(name = "examineResultsService")
+	private ExamineResultsManager examineResultsService;
+	@Resource(name = "annualDailyCompService")
+	private AnnualDailyCompService annualDailyCompService;
+	private ShowTableRecodUtil showTableRecodUtil = new ShowTableRecodUtil();
+
+	/**
+	 * 列表
+	 * 
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value = "/list1")
+	public ModelAndView list(Page page) throws Exception {
+		logBefore(logger, Jurisdiction.getUsername() + "月度养护计划实施情况");
+		// if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
+		// //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords"); // 关键词检索条件
+		if (null != keywords && !"".equals(keywords)) {
+			pd.put("keywords", keywords.trim());
+		}
+		page.setPd(pd);
+		List<PageData> varList = examineResultsService.list(page); // 列出Attached列表
+		mv.setViewName("information/examineResults/examineResults_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX", Jurisdiction.getHC()); // 按钮权限
+		return mv;
+	}
+
+	
+	/**
+	 * 
+	* @Title: getexamine
+	* @Description: 养护计划考核
+	* @param @return
+	* @param @throws Exception
+	* @return ModelAndView
+	* @throws
+	 */
+	@RequestMapping(value = "/list")
+	public ModelAndView getexamine() throws Exception {
+		logBefore(logger, Jurisdiction.getUsername() + "月度养护计划实施情况");
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		
+		List<PageData> yearList = examineResultsService.queryAnnualPlanYear();
+		pd.put("yearList", yearList);
+		
+		//年份默认第一条
+		if(pd.get("year") == null && !yearList.isEmpty() ) 
+			pd.put("year", yearList.get(0).get("year"));
+		
+		List<PageData> varList = examineResultsService.queryExamineResultByYear(pd);
+		mv.setViewName("information/examineResults/examineResults_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("year", pd.get("year"));
+		mv.addObject("QX", Jurisdiction.getHC()); // 按钮权限
+		return mv;
+	}
+
+	/**
+	 * 
+	* @Title: saveData
+	* @Description: 保存
+	* @param @param request
+	* @param @param data
+	* @param @return
+	* @param @throws Exception
+	* @return Object
+	* @throws
+	 */
+	@RequestMapping(value = "/saveData")
+	@ResponseBody
+	public Object saveData() throws Exception {
+		
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
+		List<PageData> d = dealData(jsonarray);
+		String year = pd.get("year").toString();
+		PageData data = new PageData();
+		data.put("year", year);
+		data.put("data", d);
+		examineResultsService.saveBatch(data);
+		Map<String,String> map = new HashMap<String,String>();
+		map.put("result", "success");
+		return AppUtil.returnObject(new PageData(), map);
+	}
+
+	/**
+	 * 显示对应的报表列表
+	 * 
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value = "/goReport")
+	public ModelAndView goReport() throws Exception {
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		mv.setViewName("information/monthProgress/monthProgress_list2");
+		/*
+		 * mv.addObject("varList", varList); mv.addObject("pd", pd);
+		 */
+		mv.addObject("QX", Jurisdiction.getHC()); // 按钮权限
+		return mv;
+	}
+
+	/**
+	 * 显示、编辑子表格
+	 * 
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value = "/showTableRecod")
+	public ModelAndView showTableRecod() throws Exception {
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+//		List<PageData>	varList = monthProgressService.findTableById(pd);	//获取对应的表格列表
+		mv.setViewName("information/monthProgress/monthProgress_edit");
+//		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX", Jurisdiction.getHC()); // 按钮权限
+		return mv;
+	}
+	
+	public List<PageData> dealData(JSONArray jsonarray) throws Exception {
+		List<PageData> pdList = new ArrayList<PageData>();
+		if (jsonarray.size() > 0) {
+			for (int i = 0; i < jsonarray.size(); i++) {
+				PageData pd = new PageData();
+				JSONObject job = jsonarray.getJSONObject(i);
+				pd.put("COMPANY_ID", job.get("COMPANY_ID"));
+				pd.put("COMPANY", job.get("COMPANY"));
+				pd.put("YEAR", job.get("YEAR"));
+				pd.put("BZZL", job.get("BZZL"));
+				pdList.add(pd);
+			}
+		}
+		return pdList;
+	}
+
+	/* *//**
+			 * 显示、编辑子表格
+			 * 
+			 * @param
+			 * @throws Exception
+			 */
+	/*
+	 * @RequestMapping(value="/showTableRecod") public ModelAndView
+	 * showTableRecod()throws Exception{ ModelAndView mv = this.getModelAndView();
+	 * PageData pd = new PageData(); pd = this.getPageData(); List<PageData> varList
+	 * = monthProgressService.showTableRecod(pd); //根据ID读取
+	 * mv.setViewName("information/monthProgress/monthProgress_edit");
+	 * mv.addObject("varList", varList); mv.addObject("pd", pd);
+	 * mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; }
+	 * 
+	 *//**
+		 * 去新增页面
+		 * 
+		 * @param
+		 * @throws Exception
+		 */
+	/*
+	 * @RequestMapping(value="/goAdd") public ModelAndView goAdd()throws Exception{
+	 * ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd =
+	 * this.getPageData(); List<PageData> varList =
+	 * monthProgressService.getReportType(pd); //获取报告类型
+	 * mv.setViewName("information/monthProgress/monthProgress_add");
+	 * mv.addObject("varList", varList); mv.addObject("msg", "save");
+	 * mv.addObject("pd", pd); return mv; }
+	 * 
+	 *//**
+		 * 保存
+		 * 
+		 * @param
+		 * @throws Exception
+		 *//*
+			 * @RequestMapping(value="/save") public ModelAndView save() throws Exception{
+			 * logBefore(logger, Jurisdiction.getUsername()+"新增monthProgress");
+			 * if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
+			 * ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd =
+			 * this.getPageData(); pd.put("NAME",
+			 * pd.get("YEAR")+"年"+pd.get("COMPANY")+pd.get("REPORTTYPE")); pd.put("CTIME",
+			 * Tools.date2Str(new Date())); //创建时间 pd.put("MTIME", Tools.date2Str(new
+			 * Date())); //修改时间 pd.put("STATUS", "新建"); //创建时间
+			 * monthProgressService.saveAnnualPlan(pd); // pd =
+			 * annualPlanService.findById(pd); // Page page = new Page(); // List<PageData>
+			 * varList = annualPlanService.list(page); //列出annualPlan列表 //
+			 * mv.setViewName("information/annualPlan/annualPlan_list"); //
+			 * mv.addObject("varList", varList); mv.addObject("pd", pd);
+			 * mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; }
+			 */
+
+	/*	 *//**
+			 * 导出到excel
+			 * 
+			 * @param
+			 * @throws Exception
+			 *//*
+				 * @RequestMapping(value="/excel") public ModelAndView exportExcel() throws
+				 * Exception{ logBefore(logger,
+				 * Jurisdiction.getUsername()+"导出annualPlan到excel");
+				 * if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
+				 * ModelAndView mv = new ModelAndView(); PageData pd = new PageData(); pd =
+				 * this.getPageData(); Map<String,Object> dataMap = new
+				 * HashMap<String,Object>(); List<String> titles = new ArrayList<String>();
+				 * titles.add("名称"); //1 titles.add("描述"); //2 titles.add("价格"); //3
+				 * titles.add("创建时间"); //4 dataMap.put("titles", titles); List<PageData>
+				 * varOList = annualPlanService.listAll(pd); List<PageData> varList = new
+				 * ArrayList<PageData>(); for(int i=0;i<varOList.size();i++){ PageData vpd = new
+				 * PageData(); vpd.put("var1", varOList.get(i).getString("NAME")); //1
+				 * vpd.put("var2", varOList.get(i).getString("FDESCRIBE")); //2 vpd.put("var3",
+				 * varOList.get(i).get("PRICE").toString()); //3 vpd.put("var4",
+				 * varOList.get(i).getString("CTIME")); //4 varList.add(vpd); }
+				 * dataMap.put("varList", varList); ObjectExcelView erv = new ObjectExcelView();
+				 * mv = new ModelAndView(erv,dataMap); return mv; }
+				 */
+
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/linkage/Linkage.class


+ 82 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/linkage/Linkage.java

@@ -0,0 +1,82 @@
+package com.zhcs.dt.controller.information.linkage;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.entity.system.Dictionaries;
+import com.zhcs.dt.service.system.dictionaries.DictionariesManager;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.Tools;
+
+/**
+ * @author Administrator
+ *
+ */
+/** 
+ * 说明:4级联动
+ * 创建人:FH Q 3 13596 790
+ * 创建时间:2016-05-19
+ */
+@Controller
+@RequestMapping(value="/linkage")
+public class Linkage extends BaseController{
+	
+	String menuUrl = "linkage/view.do"; //菜单地址(权限用)
+	
+	@Resource(name="dictionariesService")
+	private DictionariesManager dictionariesService;
+	
+	/**去新增页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/view")
+	public ModelAndView goAdd()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		mv.setViewName("information/linkage/view");
+		return mv;
+	}
+	
+	/**获取连级数据
+	 * @return
+	 */
+	@RequestMapping(value="/getLevels")
+	@ResponseBody
+	public Object getLevels(){
+		Map<String,Object> map = new HashMap<String,Object>();
+		String errInfo = "success";
+		PageData pd = new PageData();
+		try{
+			pd = this.getPageData();
+			String DICTIONARIES_ID = pd.getString("DICTIONARIES_ID");
+			DICTIONARIES_ID = Tools.isEmpty(DICTIONARIES_ID)?"0":DICTIONARIES_ID;
+			List<Dictionaries>	varList = dictionariesService.listSubDictByParentId(DICTIONARIES_ID); //用传过来的ID获取此ID下的子列表数据
+			List<PageData> pdList = new ArrayList<PageData>();
+			for(Dictionaries d :varList){
+				PageData pdf = new PageData();
+				pdf.put("DICTIONARIES_ID", d.getDICTIONARIES_ID());
+				pdf.put("BIANMA", d.getBIANMA());
+				pdf.put("NAME", d.getNAME());
+				pdList.add(pdf);
+			}
+			map.put("list", pdList);	
+		} catch(Exception e){
+			errInfo = "error";
+			logger.error(e.toString(), e);
+		}
+		map.put("result", errInfo);				//返回结果
+		return AppUtil.returnObject(new PageData(), map);
+	}
+
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/KyxmMonthProgressController.class


+ 278 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/KyxmMonthProgressController.java

@@ -0,0 +1,278 @@
+package com.zhcs.dt.controller.information.monthProgress;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.information.annualPlan.DownloadZip;
+import com.zhcs.dt.service.information.annualPlan.MultExcelUtils;
+import com.zhcs.dt.service.information.monthProgress.KyxmMonthProgressManager;
+import com.zhcs.dt.service.information.monthProgress.MonthProgressManager;
+import com.zhcs.dt.service.information.monthProgress.SyjcMonthProgressManager;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.Tools;
+
+/**
+ * @author yuanfei
+ * @date 2019年2月22日
+ * @desc 预防养护
+ */
+
+@Controller
+@RequestMapping(value="/scientific")
+public class KyxmMonthProgressController extends BaseController{
+	
+	@Resource(name="kyxmmonthProgressService")
+	private KyxmMonthProgressManager kyxmmonthProgressService;
+	
+	@Resource(name="monthProgressService")
+	private MonthProgressManager monthProgressService;
+	
+	/**月度列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"应急养护月度报告");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		PageData userInfo = monthProgressService.getCompanyAndRoad(Jurisdiction.getUsername().toString());	//通过username获取公司和路段
+		//通过ROLE_ID获取角色
+		String roleName = monthProgressService.getRoleName(userInfo.get("ROLE_ID").toString());
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");				//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		if(userInfo.get("COMPANY") != null){
+			pd.put("COMPANY", userInfo.get("COMPANY"));
+		}
+		//page.setPd(pd);
+		List<PageData>	varList = kyxmmonthProgressService.getReportlist(pd);	//列出月度报告
+		mv.setViewName("information/monthProgress/kyxm/monthProgress_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("userInfo", userInfo);
+		mv.addObject("roleName", roleName);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**去新增页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goAdd")
+	public ModelAndView goAdd()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String company = pd.get("COMPANY").toString();
+		mv.setViewName("information/monthProgress/kyxm/monthProgress_add");
+		mv.addObject("company", company);
+		mv.addObject("msg", "save");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**新增报告
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/saveNewReport")
+	public ModelAndView saveNewReport() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"新增预防养护月报");
+		//List<PageData> reportList = new ArrayList<PageData>();		
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String planID = this.get32UUID();
+		String companyid = monthProgressService.getCompanyid(pd.get("COMPANY"));
+		pd.put("COMPANY_ID", companyid);
+		pd.put("ID", planID);//主键
+		pd.put("NAME", pd.get("YEAR")+"年"+pd.get("COMPANY")+"月度养护报告");
+		pd.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+		pd.put("MTIME", Tools.date2Str(new Date()));	//修改时间
+		pd.put("STATUS", "新建");	//创建时间
+		kyxmmonthProgressService.addMonthlyReport(pd);   //新建月度养护报告
+		mv.addObject("pd", pd);
+		mv.addObject("msg","success");
+	    mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showTable")
+	public ModelAndView showTable() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"月度预防养护");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		PageData userInfo = monthProgressService.getCompanyAndRoad(Jurisdiction.getUsername().toString());	//通过username获取公司和路段
+		//通过ROLE_ID获取角色
+		String roleName = monthProgressService.getRoleName(userInfo.get("ROLE_ID").toString());
+		if("路段管理员".equalsIgnoreCase(roleName)){
+			pd.put("ROADS", userInfo.get("ROAD").toString().split(","));
+		}
+		List<PageData> varList = kyxmmonthProgressService.getReportInfo(pd);	//获取月报相应数据
+		mv.setViewName("information/monthProgress/kyxm/scientificCompletion_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());
+		return mv;
+	}
+	
+	/**
+	 * 保存
+	 * @throws Exception
+	 */
+	@RequestMapping(value = "/saveData")
+	@ResponseBody
+	public Object saveData(String data) throws Exception{
+        ModelAndView mv = this.getModelAndView();
+        PageData pd = new PageData();
+        pd = this.getPageData();
+//        JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
+        JSONArray jsonarray = JSONArray.fromObject(data);
+        Map<String,Object> map = dealWithData(pd,jsonarray);
+        return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**
+     * 处理新增编辑数据
+     */
+    @ResponseBody
+    public Map<String,Object> dealWithData(PageData pd,JSONArray jsonarray) throws Exception{
+        for (Object object : jsonarray) {
+            JSONObject arrMap = JSONObject.fromObject(object);
+            pd.put("YEAR", arrMap.get("YEAR"));
+            pd.put("COMPANY", arrMap.get("COMPANY"));
+            pd.put("COMPANY_ID", arrMap.get("COMPANY_ID"));
+            pd.put("ROAD", arrMap.get("ROAD"));
+            pd.put("ROAD_ID", arrMap.get("ROAD_ID"));
+            pd.put("PROJECT_NAME", arrMap.get("PROJECT_NAME"));
+            pd.put("SJWCGCL", arrMap.get("SJWCGCL"));
+            String type = pd.get("TABLETYPE").toString();
+            if("monthly_scientific_project_completion".equalsIgnoreCase(type)){
+            	pd.put("TABLE_NAME", "highway_scientific_project_dettable");
+            }
+            kyxmmonthProgressService.updateWCQKRecord(pd);
+            kyxmmonthProgressService.deleteMonthRecord(pd);
+            for (int i = 1; i < 13; i++) {
+                pd.put("MONTH",i);
+                if ((!arrMap.get("ACTUAL_COST_"+i).equals(""))||(!arrMap.get("PAY_COST_"+i).equals(""))
+                		||(!arrMap.get("ACTUAL_QUANTITIES_"+i).equals(""))) {
+                	pd.put("ACTUAL_QUANTITIES", arrMap.get("ACTUAL_QUANTITIES_"+i).equals("")?null:arrMap.get("ACTUAL_QUANTITIES_"+i));
+                    pd.put("ACTUAL_COST", arrMap.get("ACTUAL_COST_"+i).equals("")?null:arrMap.get("ACTUAL_COST_"+i));
+                    pd.put("PAY_COST", arrMap.get("PAY_COST_"+i).equals("")?null:arrMap.get("PAY_COST_"+i));
+                    pd.put("RATIO", arrMap.get("RATIO_"+i).equals("")?null:arrMap.get("RATIO_"+i));
+                    kyxmmonthProgressService.insertMonthRecord(pd);
+                }
+            }
+        }
+        Map<String,Object> map = new HashMap<String,Object>();
+        map.put("msg","success");
+        return map;
+    }
+	
+	/**删除月度报告
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delMonthlyReport")
+	@ResponseBody
+	public Object delMonthlyReport()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		kyxmmonthProgressService.delMonthlyReport(pd);	//删除月度报告
+		kyxmmonthProgressService.delMonthlyCompletion(pd);	//删除对应月度完成情况
+		map.put("result", "success");
+		return AppUtil.returnObject(new PageData(), map);
+	}
+
+    @RequestMapping("/excelExport")
+    public String excelExport(HttpServletRequest request,HttpServletResponse response) throws Exception{
+        String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
+        ModelAndView mv = this.getModelAndView();
+        PageData pd = new PageData();
+        pd = this.getPageData();
+        List<String> paths = new ArrayList<String>();
+        List<String> result = new ArrayList<String>();
+        List<PageData> exceldata = setExcelData(pd);
+        MultExcelUtils ex = new MultExcelUtils();
+        String excelpath = ex.exportExcel(pd.getString("exportname")+".xlsx",path,response,exceldata);
+        result.add(excelpath);
+        //zip压缩下载
+        DownloadZip.downloadZip(response,request,result,path);
+        return null;
+    }
+    
+    public List<PageData> setExcelData(PageData param) throws Exception {
+        List<PageData> result = new ArrayList<PageData>();
+        PageData data = new PageData();
+        if (param.get("TABLETYPE").equals("monthly_scientific_project_completion")) {
+            param.put("subtable", "highway_scientific_project_dettable");
+            data.put("modelName", "科研项目月度完成情况");
+            data.put("keyStr", "num,PROJECT_NAME,CATEGORY,CONTENT,PROJECT_COST,AUDIT_FEE,MATTER_YEAR,MATTER_NEW_CARRY,MATTER_CONSULT"
+                    + ",ACTUAL_COST_1,PAY_COST_1,RATIO_1,ACTUAL_COST_2,PAY_COST_2,RATIO_2,ACTUAL_COST_3,PAY_COST_3,RATIO_3"
+                    + ",ACTUAL_COST_4,PAY_COST_4,RATIO_4,ACTUAL_COST_5,PAY_COST_5,RATIO_5,ACTUAL_COST_6,PAY_COST_6,RATIO_6"
+                    + ",ACTUAL_COST_7,PAY_COST_7,RATIO_7,ACTUAL_COST_8,PAY_COST_8,RATIO_8,ACTUAL_COST_9,PAY_COST_9,RATIO_9"
+                    + ",ACTUAL_COST_10,PAY_COST_10,RATIO_10,ACTUAL_COST_11,PAY_COST_11,RATIO_11,ACTUAL_COST_12,PAY_COST_12,RATIO_12"
+                    + ",ACTUAL_COST,PAY_COST,RATIO");
+            String[][] funcArry = {
+                {"percent","RATIO_1","IF(ISERROR((L#row#/G#row#)),\"\",(L#row#/G#row#))"}
+                ,{"percent","RATIO_2","IF(ISERROR((O#row#/G#row#)),\"\",(O#row#/G#row#))"}
+                ,{"percent","RATIO_3","IF(ISERROR((R#row#/G#row#)),\"\",(R#row#/G#row#))"}
+                ,{"percent","RATIO_4","IF(ISERROR((U#row#/G#row#)),\"\",(U#row#/G#row#))"}
+                ,{"percent","RATIO_5","IF(ISERROR((X#row#/G#row#)),\"\",(X#row#/G#row#))"}
+                ,{"percent","RATIO_6","IF(ISERROR((AA#row#/G#row#)),\"\",(AA#row#/G#row#))"}
+                ,{"percent","RATIO_7","IF(ISERROR((AD#row#/G#row#)),\"\",(AD#row#/G#row#))"}
+                ,{"percent","RATIO_8","IF(ISERROR((AG#row#/G#row#)),\"\",(AG#row#/G#row#))"}
+                ,{"percent","RATIO_9","IF(ISERROR((AJ#row#/G#row#)),\"\",(AJ#row#/G#row#))"}
+                ,{"percent","RATIO_10","IF(ISERROR((AM#row#/G#row#)),\"\",(AM#row#/G#row#))"}
+                ,{"percent","RATIO_11","IF(ISERROR((AP#row#/G#row#)),\"\",(AP#row#/G#row#))"}
+                ,{"percent","RATIO_12","IF(ISERROR((AS#row#/G#row#)),\"\",(AS#row#/G#row#))"}
+                ,{"sum","ACTUAL_COST","SUM(K#row#,N#row#,Q#row#,T#row#,W#row#,Z#row#,AC#row#,AF#row#,AI#row#,AL#row#,AO#row#,AR#row#)"}
+                ,{"sum","PAY_COST","SUM(L#row#,O#row#,R#row#,U#row#,X#row#,AA#row#,AD#row#,AG#row#,AJ#row#,AM#row#,AP#row#,AS#row#)"}
+                ,{"percent","RATIO","IF(ISERROR((AV#row#/G#row#)),\"\",(AV#row#/G#row#))"}
+            };
+            data.put("funcArry", funcArry);
+            data.put("tabletype", 3);
+            data.put("totalRange", 4);
+            data.put("startRowIndex", 3);
+        }
+        List<PageData> list = kyxmmonthProgressService.getReportInfo(param);
+        data.put("list", list);
+        data.put("pd", param);
+        result.add(data);
+        return result;
+    }
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/MonthProgressController.class


+ 250 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/MonthProgressController.java

@@ -0,0 +1,250 @@
+package com.zhcs.dt.controller.information.monthProgress;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import javax.annotation.Resource;
+
+import net.sf.json.JSONArray;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.information.annualPlan.AnnualPlanManager;
+import com.zhcs.dt.service.information.monthProgress.MonthProgressManager;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+
+/** 
+ * 类名称:年度养护计划
+ * 创建人:Yuanf
+ * 创建时间:2018-11-12
+ */
+@Controller
+@RequestMapping(value="/monthProgress")
+class MonthProgressController extends BaseController {
+	String menuUrl = "monthProgress/list.do"; //菜单地址(权限用)
+	@Resource(name="monthProgressService")
+	private MonthProgressManager monthProgressService;
+	@Resource(name="annualPlanService")
+	private AnnualPlanManager annualPlanService;
+
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"月度养护计划实施情况");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		//通过username获取对应的公司和路段,控股集团管理员只可以看到状态为“待审批”和“已完成”的计划,路公司管理员和路段管理员可以看到本公司所有计划,admin没有权限控制
+		PageData userInfo = annualPlanService.getCompanyAndRoad(Jurisdiction.getUsername().toString());	//通过username获取公司和路段
+		//通过ROLE_ID获取角色
+		String roleName = annualPlanService.getRoleName(userInfo.get("ROLE_ID").toString());
+		List<String> varList = new ArrayList<String>();		
+		if(!"控股集团管理员".equalsIgnoreCase(roleName) && !"admin".equalsIgnoreCase(Jurisdiction.getUsername().toString())){
+			String company_id = monthProgressService.getCompanyid(userInfo.get("COMPANY").toString());
+			pd.put("COMPANY", userInfo.get("COMPANY"));	
+			pd.put("COMPANY_ID", company_id);
+			varList = monthProgressService.getCompPlanList(pd);	//列出本公司已审核通过的年计划  (次数读取oa_department基础信息)
+			mv.setViewName("information/monthProgress/monthProgress_list");
+			mv.addObject("varList", varList);
+		}else{
+			varList = monthProgressService.getCompPlanList(pd);	//列出已审核通过的年计划
+			mv.setViewName("information/monthProgress/monthProgress_kg_list");
+			mv.addObject("varList", varList);
+		}
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**查询所选汇总表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showSumTable")
+	public ModelAndView showSumTable(Model model)throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		mv.setViewName("information/monthProgress/monthSumTable/"+pd.get("type"));
+		List<PageData> varList = new ArrayList<PageData>();
+		if("monthly_test_project_completion".equalsIgnoreCase(pd.get("type").toString()) 
+			|| "monthly_equipment_overhaul_completion".equalsIgnoreCase(pd.get("type").toString())){
+			varList = monthProgressService.getTestdata(pd);
+		}else if("monthly_scientific_project_completion".equalsIgnoreCase(pd.get("type").toString())){
+			varList = monthProgressService.getScidata(pd);
+		}else{
+			varList = monthProgressService.getdata(pd);
+		}
+		if(varList ==null || varList.equals(" ") || varList.isEmpty() ) {
+			mv.addObject("varList", "");
+		}
+//		else if("highway_reserve_fees_sumtable_view".equalsIgnoreCase(pd.get("type").toString())){
+//			List<PageData> feeList = annualPlanCompService.getTotalFee(pd);
+//			varList = getReserveFee(varList, feeList);			
+//			mv.addObject("dettList", varList);
+//		}
+		else {
+			LinkedHashMap<String, LinkedHashMap<String, ArrayList<PageData>>> varMap = new LinkedHashMap<String, LinkedHashMap<String, ArrayList<PageData>>>();
+			Double sumPlanCost = (double) 0;
+			Double sumActualCost = (double) 0;
+			String prevCompanyName = "";
+			String prevCompanyId="";
+			for(PageData tpd : varList){
+				LinkedHashMap<String, ArrayList<PageData>> xjroadMap = new LinkedHashMap<String, ArrayList<PageData>>();
+				String company = tpd.get("COMPANY").toString();
+				String road = tpd.get("ROAD").toString();
+				String companyId = tpd.get("COMPANY_ID").toString();
+				if(varMap.containsKey(company)){
+					LinkedHashMap<String, ArrayList<PageData>> roadMap = varMap.get(company);
+					if(roadMap != null && roadMap.containsKey(road)){
+						ArrayList<PageData> pList = roadMap.get(road);
+						pList.add(tpd);
+					}else{
+						ArrayList<PageData> npList = new ArrayList<PageData>();
+						npList.add(tpd);
+						roadMap.put(road, npList);					
+					}
+					xjroadMap = roadMap;
+					prevCompanyName = company;
+					prevCompanyId = companyId;
+				}else{					
+					if(varMap.size() > 0){
+						ArrayList<PageData> xjList = new ArrayList<PageData>();
+						PageData xjPd = new PageData();
+						xjPd.put("COMPANY", prevCompanyName);
+						xjPd.put("ROAD", "小计");
+						xjPd.put("PROJECT_NAME", "");
+						xjPd.put("COMPANY_ID", prevCompanyId);
+//						xjPd.put("PROJECT_TYPE", "");
+//						xjPd.put("SCALE", "");
+//						xjPd.put("PLAN_QUANTITIES", "");
+//						xjPd.put("PLAN_COST", sumPlanCost);
+//						xjPd.put("ACTUAL_QUANTITIES", "");
+//						xjPd.put("REMARKS", "");
+//						xjPd.put("ACTUAL_COST", sumActualCost);
+						xjList.add(xjPd);
+						xjroadMap = varMap.get(prevCompanyName);
+						xjroadMap.put("小计", xjList);
+						varMap.put(prevCompanyName, xjroadMap);
+					}	
+					ArrayList<PageData> mpList = new ArrayList<PageData>();
+					LinkedHashMap<String, ArrayList<PageData>> mroadMap = new LinkedHashMap<String, ArrayList<PageData>>();
+					mpList.add(tpd);				
+					mroadMap.put(road, mpList);
+					varMap.put(company, mroadMap);
+					prevCompanyName = company;
+					prevCompanyId = companyId;
+				}
+			}
+			
+			PageData lastxjPd = new PageData();
+			lastxjPd.put("COMPANY", prevCompanyName);
+			lastxjPd.put("ROAD", "小计");
+			lastxjPd.put("PROJECT_NAME", "");
+			lastxjPd.put("COMPANY_ID", prevCompanyId);
+			
+			List<PageData> dettListNew = new ArrayList<PageData>();
+			for(Entry<String, LinkedHashMap<String, java.util.ArrayList<PageData>>> centry : varMap.entrySet()){
+				HashMap<String, java.util.ArrayList<PageData>> roadMap = centry.getValue();
+				for(Entry<String, java.util.ArrayList<PageData>> rentry : roadMap.entrySet()){
+					ArrayList<PageData> projectList = rentry.getValue();
+					for(PageData ppd : projectList){
+						dettListNew.add(ppd);
+					}
+				}
+			}
+			dettListNew.add(lastxjPd);			
+			mv.addObject("varList", dettListNew);
+		}
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	 /**显示对应的报表列表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goReport")
+	public ModelAndView goReport()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		mv.setViewName("information/monthProgress/monthProgress_list2");
+		/*mv.addObject("varList", varList);
+		mv.addObject("pd", pd);*/
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**显示、编辑子表格
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showTableRecod")
+	public ModelAndView showTableRecod()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+//		List<PageData>	varList = monthProgressService.findTableById(pd);	//获取对应的表格列表
+		mv.setViewName("information/monthProgress/monthProgress_edit");
+//		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**查询日常月度完成情况表
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showDailyTable")
+	public ModelAndView showDailyTable(Model model)throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		pd.put("table","oa_department_"+pd.get("YEAR").toString());
+		mv.setViewName("information/monthProgress/monthSumTable/dailyCompletion_list");
+		List<PageData> varList = new ArrayList<PageData>();
+		List<PageData> companyRoadList = monthProgressService.getCompanyRoadList(pd);
+		Map<String,List<String>> companyRoad = new HashMap<String,List<String>>();
+		List<String> companyList = new ArrayList<String>();
+		for(PageData tpd : companyRoadList){
+			if(tpd.get("PARENT_ID").equals("0")){
+				companyList.add(tpd.get("NAME").toString());
+				List<String> roadList = new ArrayList<String>();
+				for(PageData tempPd : companyRoadList){					
+					if(tempPd.get("PARENT_ID").equals(tpd.get("DEPARTMENT_ID"))){
+						roadList.add(tempPd.get("NAME").toString());						
+					}
+				}
+				companyRoad.put(tpd.get("NAME").toString(), roadList);
+			}
+		}
+		mv.addObject("companyList", companyList);
+		mv.addObject("companyRoad", JSONArray.fromObject(companyRoad));
+		mv.addObject("pd", pd);
+		//mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+
+	public static void main(String[] args) {
+		// TODO Auto-generated method stub
+
+	}
+
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/PreventionCompletionController.class


+ 203 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/PreventionCompletionController.java

@@ -0,0 +1,203 @@
+package com.zhcs.dt.controller.information.monthProgress;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.information.monthProgress.MonthProgressManager;
+import com.zhcs.dt.service.information.monthProgress.PreventionCompletionManager;
+import com.zhcs.dt.service.information.monthProgress.YjMonthProgressManager;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.Tools;
+
+import net.sf.json.JSONArray;
+
+/**
+ * @author zhengfei
+ * @date 2019年2月18日
+ * @desc 预防养护
+ */
+
+@Controller
+@RequestMapping(value="/preventionCompletion")
+public class PreventionCompletionController extends BaseController{
+	
+	@Resource(name="preventionCompletionService")
+	private PreventionCompletionManager preventionCompletionService;
+	
+	@Resource(name="monthProgressService")
+	private MonthProgressManager monthProgressService;
+	@Resource(name="yjmonthProgressService")
+    private YjMonthProgressManager yjmonthProgressService;
+	
+	/**月度列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"应急养护月度报告");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		PageData userInfo = monthProgressService.getCompanyAndRoad(Jurisdiction.getUsername().toString());	//通过username获取公司和路段
+		//通过ROLE_ID获取角色
+		String roleName = monthProgressService.getRoleName(userInfo.get("ROLE_ID").toString());
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");				//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		if(userInfo.get("COMPANY") != null){
+			pd.put("COMPANY", userInfo.get("COMPANY"));
+		}
+		//page.setPd(pd);
+		List<PageData>	varList = preventionCompletionService.getReportlist(pd);	//列出月度报告
+		mv.setViewName("information/monthProgress/preventionCompletion/monthProgress_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("userInfo", userInfo);
+		mv.addObject("roleName", roleName);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**去新增页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goAdd")
+	public ModelAndView goAdd()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String company = pd.get("COMPANY").toString();
+		mv.setViewName("information/monthProgress/preventionCompletion/monthProgress_add");
+		mv.addObject("company", company);
+		mv.addObject("msg", "save");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**新增报告
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/saveNewReport")
+	public ModelAndView saveNewReport() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"新增预防养护月报");
+		//List<PageData> reportList = new ArrayList<PageData>();		
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String planID = this.get32UUID();
+		String companyid = monthProgressService.getCompanyid(pd.get("COMPANY"));
+		pd.put("COMPANY_ID", companyid);
+		pd.put("ID", planID);//主键
+		pd.put("NAME", pd.get("YEAR")+"年"+pd.get("COMPANY")+"月度养护报告");
+		pd.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+		pd.put("MTIME", Tools.date2Str(new Date()));	//修改时间
+		pd.put("STATUS", "新建");	//创建时间
+		preventionCompletionService.addMonthlyReport(pd);   //新建月度养护报告
+		mv.addObject("pd", pd);
+		mv.addObject("msg","success");
+	    mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showTable")
+    public ModelAndView showTable()throws Exception{
+        ModelAndView mv = this.getModelAndView();
+        PageData pd = new PageData();
+        pd = this.getPageData();
+        List<PageData> varList = yjmonthProgressService.getReportInfo(pd);  //获取月报相应数据
+        mv.setViewName("information/monthProgress/preventionCompletion/preventionCompletion_list");
+        mv.addObject("varList", varList);
+        mv.addObject("pd", pd);
+        mv.addObject("QX",Jurisdiction.getHC());
+        return mv;
+    }
+//	@RequestMapping(value="/showTable")
+//	public ModelAndView showTable() throws Exception{
+//		logBefore(logger, Jurisdiction.getUsername()+"月度预防养护");
+//		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+//		ModelAndView mv = this.getModelAndView();
+//		PageData pd = this.getPageData();
+////		PageData pd1 = this.getPageData();
+////		String companyIds = pd1.getString("COMPANY_ID");
+////		PageData pd = new PageData();
+////		pd.put("year", pd1.getString("YEAR"));
+////		pd.put("companyIds", companyIds.split(","));
+////		companyIds year
+//		
+//		List<PageData> varList = preventionCompletionService.roadlistAll(pd);	//列出所有道路
+//		
+//		
+//		List<PageData> monthRoadList = preventionCompletionService.listAll(pd);	//列出道路月度信息
+//		List<PageData> yearRoadList = preventionCompletionService.findSumByCompanyAndRoad(pd);	//列出道路年度汇总
+//		
+//		mv.setViewName("information/monthProgress/preventionCompletion/preventionCompletion_list");
+//		mv.addObject("varList",JSONArray.fromObject(varList) );
+//		mv.addObject("monthRoadList", JSONArray.fromObject(monthRoadList));
+//		mv.addObject("yearRoadList", JSONArray.fromObject(yearRoadList));
+//		mv.addObject("pd", pd);
+//		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+//		return mv;
+//	}
+	
+	/**
+	 * 保存
+	 * @throws Exception
+	 */
+	@RequestMapping(value = "/save",method=RequestMethod.POST)
+	@ResponseBody
+	public Object save(@RequestBody List<PageData> pd){
+		Map<String, Object> result = new HashMap<String, Object>();
+		try {
+			preventionCompletionService.save(pd);
+			result.put("msg", "ok");
+		} catch (Exception e) {
+			result.put("msg", "error");
+			result.put("data", "操作异常");
+			e.printStackTrace();
+		}
+		return result;
+	}
+	
+	/**删除月度报告
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delMonthlyReport")
+	@ResponseBody
+	public Object delMonthlyReport()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		preventionCompletionService.delMonthlyReport(pd);	//删除月度报告
+		preventionCompletionService.delMonthlyCompletion(pd);	//删除对应月度完成情况
+		map.put("result", "success");
+		return AppUtil.returnObject(new PageData(), map);
+	}
+
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/RcMonthProgressController.class


+ 395 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/RcMonthProgressController.java

@@ -0,0 +1,395 @@
+package com.zhcs.dt.controller.information.monthProgress;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.information.annualPlan.DownloadZip;
+import com.zhcs.dt.service.information.annualPlan.MultExcelUtils;
+import com.zhcs.dt.service.information.monthProgress.MonthProgressManager;
+import com.zhcs.dt.service.information.monthProgress.RcMonthProgressManager;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.Tools;
+
+/**
+ * @author yuanfei
+ * @date 2019年2月22日
+ * @desc 预防养护
+ */
+
+@Controller
+@RequestMapping(value="/daily")
+public class RcMonthProgressController extends BaseController{
+	
+	@Resource(name="rcmonthProgressService")
+	private RcMonthProgressManager rcmonthProgressService;
+	
+	@Resource(name="monthProgressService")
+	private MonthProgressManager monthProgressService;
+	
+	private String[] month = {"1","2","3","4","5","6","7","8","9","10","11","12"};
+	private String[] commontype = {"CLEAN_COST","PATROL_COST","SUBGRADE_COST","PAVEMENT_COST","BRIDGE_COST","CULVERT_COST",
+			"TUNNEL_COST","GREEN_COST","SAFE_COST","LINE_COST","CAR_COST","EMERGENCY_COST"};
+	
+	/**月度列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"应急养护月度报告");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		PageData userInfo = monthProgressService.getCompanyAndRoad(Jurisdiction.getUsername().toString());	//通过username获取公司和路段
+		//通过ROLE_ID获取角色
+		String roleName = monthProgressService.getRoleName(userInfo.get("ROLE_ID").toString());
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");				//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		if(userInfo.get("COMPANY") != null){
+			pd.put("COMPANY", userInfo.get("COMPANY"));
+		}
+		//page.setPd(pd);
+		List<PageData>	varList = rcmonthProgressService.getReportlist(pd);	//列出月度报告
+		mv.setViewName("information/monthProgress/rc/monthProgress_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("userInfo", userInfo);
+		mv.addObject("roleName", roleName);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**去新增页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goAdd")
+	public ModelAndView goAdd()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String company = pd.get("COMPANY").toString();
+		mv.setViewName("information/monthProgress/rc/monthProgress_add");
+		mv.addObject("company", company);
+		mv.addObject("msg", "save");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**新增报告
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/saveNewReport")
+	public ModelAndView saveNewReport() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"新增预防养护月报");
+		//List<PageData> reportList = new ArrayList<PageData>();		
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String planID = this.get32UUID();
+		String companyid = monthProgressService.getCompanyid(pd.get("COMPANY"));
+		pd.put("COMPANY_ID", companyid);
+		pd.put("ID", planID);//主键
+		pd.put("NAME", pd.get("YEAR")+"年"+pd.get("COMPANY")+"月度养护报告");
+		pd.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+		pd.put("MTIME", Tools.date2Str(new Date()));	//修改时间
+		pd.put("STATUS", "新建");	//创建时间
+		rcmonthProgressService.addMonthlyReport(pd);   //新建月度养护报告
+		mv.addObject("pd", pd);
+		mv.addObject("msg","success");
+	    mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showTable")
+	public ModelAndView showTable() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"月度预防养护");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = this.getPageData();
+		List<PageData> monthVarList = new ArrayList<PageData>();	//列出月度信息
+		List<PageData> yearRoadList = new ArrayList<PageData>();	//列出道路年度汇总
+		List<PageData> roadList = rcmonthProgressService.listRoadInfo(pd);	//按公司查询出有日常养护计划的路段信息
+		if(roadList.size() > 0){
+			if(pd.get("ROAD_ID") == null && roadList.get(0) != null){
+				pd.put("ROAD_ID", roadList.get(0).get("ROAD_ID"));
+			}
+			PageData plancost = rcmonthProgressService.listPlanByRoad(pd);	//按路段查询计划费用
+	
+			if(plancost != null){
+				pd.put("ROAD_ID", plancost.get("ROAD_ID"));
+				pd.put("ROAD", plancost.get("ROAD"));
+				List<PageData> monthList = rcmonthProgressService.listAll(pd);	//列出道路月度信息
+				Map<String, PageData> monthMap = new HashMap<String, PageData>();			
+				PageData tempPd = new PageData();
+				for(String temptype : commontype){
+					monthMap.put(temptype, tempPd);
+				}
+				for(Map.Entry<String, PageData> entry : monthMap.entrySet()){
+					PageData tempPd1 = new PageData();
+					tempPd1.put("type", entry.getKey());
+					for(PageData monthdt : monthList){			
+						String type = monthdt.get("TYPE").toString();
+						String month = monthdt.get("MONTH").toString();
+						if(entry.getKey().equalsIgnoreCase(type)){
+							if(monthdt.get("ACTUAL_COST") != null){
+								Double paycost = Double.parseDouble(monthdt.get("ACTUAL_COST").toString());
+								Double plancostByType = Double.parseDouble(plancost.get(type).toString());
+								double RATIO = (paycost/plancostByType);
+								tempPd1.put("RATIO"+"_"+type+"_"+month, RATIO);								
+							}
+							tempPd1.put("ACTUAL_COST"+"_"+type+"_"+month, monthdt.get("ACTUAL_COST"));							
+							tempPd1.put("PAY_COST"+"_"+type+"_"+month, monthdt.get("PAY_COST"));
+							
+						}	
+					}
+					pd.put("TYPE", entry.getKey());
+					PageData yearListByType = rcmonthProgressService.findSumByType(pd);	//汇总
+					if(yearListByType != null){
+						tempPd1.put("SUM_ACTUAL_COST"+"_"+entry.getKey(), yearListByType.get("SUM_ACTUAL_COST"));
+						tempPd1.put("SUM_PAY_COST"+"_"+entry.getKey(), yearListByType.get("SUM_PAY_COST"));
+					}
+					monthVarList.add(tempPd1);
+				}
+				yearRoadList = rcmonthProgressService.findSumByCompanyAndRoad(pd);		
+			}
+			mv.addObject("plancost", plancost);
+		}
+		mv.setViewName("information/monthProgress/rc/dailyCompletion_list");
+		mv.addObject("monthVarList", monthVarList);
+		mv.addObject("roadList", roadList);
+		
+		mv.addObject("yearRoadList", JSONArray.fromObject(yearRoadList));
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showTable2")
+	public ModelAndView showTable2() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"月度预防养护");
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = this.getPageData();
+		
+		PageData plancost = rcmonthProgressService.listPlanByRoad(pd);	//按路段查询计划费用
+		List<PageData> monthVarList = new ArrayList<PageData>();	//列出月度信息
+		List<PageData> yearRoadList = new ArrayList<PageData>();	//列出道路年度汇总
+		if(plancost != null){
+			List<PageData> monthList = rcmonthProgressService.listAll(pd);	//列出道路月度信息
+			Map<String, PageData> monthMap = new HashMap<String, PageData>();			
+			PageData tempPd = new PageData();
+			for(String temptype : commontype){
+				monthMap.put(temptype, tempPd);
+			}
+			for(Map.Entry<String, PageData> entry : monthMap.entrySet()){
+				PageData tempPd1 = new PageData();
+				tempPd1.put("type", entry.getKey());
+				for(PageData monthdt : monthList){			
+					String type = monthdt.get("TYPE").toString();
+					String month = monthdt.get("MONTH").toString();
+					if(entry.getKey().equalsIgnoreCase(type)){
+						if(monthdt.get("ACTUAL_COST") != null && plancost.get(type)!= null){
+							Double paycost = Double.parseDouble(monthdt.get("ACTUAL_COST").toString());
+							Double plancostByType = Double.parseDouble(plancost.get(type).toString());
+							double RATIO = (paycost/plancostByType);
+							tempPd1.put("RATIO"+"_"+type+"_"+month, RATIO);
+						}						
+						tempPd1.put("ACTUAL_COST"+"_"+type+"_"+month, monthdt.get("ACTUAL_COST"));
+						tempPd1.put("PAY_COST"+"_"+type+"_"+month, monthdt.get("PAY_COST"));						
+					}	
+				}
+				pd.put("TYPE", entry.getKey());
+				PageData yearListByType = rcmonthProgressService.findSumByType(pd);	//汇总
+				if(yearListByType != null){
+					tempPd1.put("SUM_ACTUAL_COST"+"_"+entry.getKey(), yearListByType.get("SUM_ACTUAL_COST"));
+					tempPd1.put("SUM_PAY_COST"+"_"+entry.getKey(), yearListByType.get("SUM_PAY_COST"));
+				}
+				monthVarList.add(tempPd1);
+			}
+			yearRoadList = rcmonthProgressService.findSumByCompanyAndRoad(pd);		
+		}
+		//设置查询oa_department的动态表名
+		pd.put("table", "oa_department_"+pd.getString("YEAR").toString());
+		List<PageData> companyRoadList = monthProgressService.getCompanyRoadList(pd);
+		Map<String,List<String>> companyRoad = new HashMap<String,List<String>>();
+		List<String> companyList = new ArrayList<String>();
+		for(PageData tpd : companyRoadList){
+			if(tpd.get("PARENT_ID").equals("0")){
+				companyList.add(tpd.get("NAME").toString());
+				List<String> roadList = new ArrayList<String>();
+				for(PageData tempPd : companyRoadList){					
+					if(tempPd.get("PARENT_ID").equals(tpd.get("DEPARTMENT_ID"))){
+						roadList.add(tempPd.get("NAME").toString());						
+					}
+				}
+				companyRoad.put(tpd.get("NAME").toString(), roadList);
+			}
+		}
+		List<String> troadList = new ArrayList<String>();
+		troadList=companyRoad.get(pd.get("COMPANY"));
+		mv.addObject("companyList", companyList);
+		mv.addObject("companyRoad", JSONArray.fromObject(companyRoad));
+		mv.addObject("roadList", troadList);
+		mv.addObject("company", pd.get("COMPANY"));
+		mv.addObject("road", pd.get("ROAD"));
+		mv.setViewName("information/monthProgress/monthSumTable/dailyCompletion_list");
+		mv.addObject("monthVarList", monthVarList);
+		mv.addObject("plancost", plancost);
+		mv.addObject("yearRoadList", JSONArray.fromObject(yearRoadList));
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**
+	 * 保存
+	 * @throws Exception
+	 */
+	@RequestMapping(value = "/saveData")
+	@ResponseBody
+	public Object saveData(String data,String TABLETYPE) throws Exception{
+        //ModelAndView mv = this.getModelAndView();
+        PageData pd = new PageData();
+        pd = this.getPageData();
+        JSONArray jsonarray = JSONArray.fromObject(data);
+        Map<String,Object> map = dealWithData(pd,jsonarray);
+        return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**
+     * 处理新增编辑数据
+     */
+    @ResponseBody
+    public Map<String,Object> dealWithData(PageData pd,JSONArray jsonarray) throws Exception{
+        for (Object object : jsonarray) {
+            JSONObject arrMap = JSONObject.fromObject(object);
+            pd.put("YEAR", arrMap.get("YEAR"));
+            pd.put("COMPANY", arrMap.get("COMPANY"));
+            pd.put("COMPANY_ID", arrMap.get("COMPANY_ID"));
+            pd.put("ROAD", arrMap.get("ROAD"));
+            pd.put("ROAD_ID", arrMap.get("ROAD_ID"));
+            pd.put("TYPE", arrMap.get("TYPE"));
+            String type = arrMap.get("TYPE").toString() + "_";
+            rcmonthProgressService.deleteMonthRecord(pd);
+            for (int i = 1; i < 13; i++) {
+                pd.put("MONTH",i);
+                if ((!arrMap.get("ACTUAL_COST_"+type+i).equals(""))||(!arrMap.get("PAY_COST_"+type+i).equals(""))) {
+                    pd.put("ACTUAL_COST", arrMap.get("ACTUAL_COST_"+type+i).equals("")?null:arrMap.get("ACTUAL_COST_"+type+i));
+                    pd.put("PAY_COST", arrMap.get("PAY_COST_"+type+i).equals("")?null:arrMap.get("PAY_COST_"+type+i));
+                    pd.put("RATIO", arrMap.get("RATIO_"+type+i).equals("")?null:arrMap.get("RATIO_"+type+i));
+                    rcmonthProgressService.insertMonthRecord(pd);
+                }
+            }
+        }
+        Map<String,Object> map = new HashMap<String,Object>();
+        map.put("msg","success");
+        return map;
+    }
+	
+	/**删除月度报告
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delMonthlyReport")
+	@ResponseBody
+	public Object delMonthlyReport()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		rcmonthProgressService.delMonthlyReport(pd);	//删除月度报告
+		rcmonthProgressService.delMonthlyCompletion(pd);	//删除对应月度完成情况
+		map.put("result", "success");
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+    @RequestMapping("/excelExport")
+    public String excelExport(HttpServletRequest request,HttpServletResponse response) throws Exception{
+        String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
+        ModelAndView mv = this.getModelAndView();
+        PageData pd = new PageData();
+        pd = this.getPageData();
+        List<String> result = new ArrayList<String>();
+        PageData data = new PageData();
+            data.put("keyStr", "TYPE,PLAN_COST,MAKER"
+                    + ",ACTUAL_COST_1,PAY_COST_1,RATIO_1,ACTUAL_COST_2,PAY_COST_2,RATIO_2,ACTUAL_COST_3,PAY_COST_3,RATIO_3"
+                    + ",ACTUAL_COST_4,PAY_COST_4,RATIO_4,ACTUAL_COST_5,PAY_COST_5,RATIO_5,ACTUAL_COST_6,PAY_COST_6,RATIO_6"
+                    + ",ACTUAL_COST_7,PAY_COST_7,RATIO_7,ACTUAL_COST_8,PAY_COST_8,RATIO_8,ACTUAL_COST_9,PAY_COST_9,RATIO_9"
+                    + ",ACTUAL_COST_10,PAY_COST_10,RATIO_10,ACTUAL_COST_11,PAY_COST_11,RATIO_11,ACTUAL_COST_12,PAY_COST_12,RATIO_12"
+                    + ",ACTUAL_COST,PAY_COST,RATIO");
+        String[][] funcArry = {
+        		{"percent","RATIO_1","IF(ISERROR((F#row#/C#row#)),\"\",(F#row#/C#row#))"}
+                ,{"percent","RATIO_2","IF(ISERROR((I#row#/C#row#)),\"\",(I#row#/C#row#))"}
+                ,{"percent","RATIO_3","IF(ISERROR((L#row#/C#row#)),\"\",(L#row#/C#row#))"}
+                ,{"percent","RATIO_4","IF(ISERROR((O#row#/C#row#)),\"\",(O#row#/C#row#))"}
+                ,{"percent","RATIO_5","IF(ISERROR((R#row#/C#row#)),\"\",(R#row#/C#row#))"}
+                ,{"percent","RATIO_6","IF(ISERROR((U#row#/C#row#)),\"\",(U#row#/C#row#))"}
+                ,{"percent","RATIO_7","IF(ISERROR((X#row#/C#row#)),\"\",(X#row#/C#row#))"}
+                ,{"percent","RATIO_8","IF(ISERROR((AA#row#/C#row#)),\"\",(AA#row#/C#row#))"}
+                ,{"percent","RATIO_9","IF(ISERROR((AD#row#/C#row#)),\"\",(AD#row#/C#row#))"}
+                ,{"percent","RATIO_10","IF(ISERROR((AG#row#/C#row#)),\"\",(AG#row#/C#row#))"}
+                ,{"percent","RATIO_11","IF(ISERROR((AJ#row#/C#row#)),\"\",(AJ#row#/C#row#))"}
+                ,{"percent","RATIO_12","IF(ISERROR((AM#row#/C#row#)),\"\",(AM#row#/C#row#))"}
+            ,{"sum","ACTUAL_COST","SUM(E#row#,H#row#,K#row#,N#row#,Q#row#,T#row#,W#row#,Z#row#,AC#row#,AF#row#,AI#row#,AL#row#)"}
+            ,{"sum","PAY_COST","SUM(F#row#,I#row#,L#row#,O#row#,R#row#,U#row#,X#row#,AA#row#,AD#row#,AG#row#,AJ#row#,AM#row#)"}
+            ,{"percent","RATIO","IF(ISERROR((AP#row#/C#row#)),\"\",(AP#row#/C#row#))"}
+        };
+        data.put("funcArry", funcArry);
+        data.put("tabletype", 0);
+        data.put("totalRange", 1);
+        data.put("startRowIndex", 3);
+    	List<PageData> exceldata = setExcelData(pd);
+        MultExcelUtils ex = new MultExcelUtils();
+        String excelpath = ex.exportDailyExcel(pd.getString("exportname")+".xlsx",path,response,exceldata,data);
+        result.add(excelpath);
+
+        //zip压缩下载
+        DownloadZip.downloadZip(response,request,result,path);
+        return null;
+    }
+    
+    public List<PageData> setExcelData(PageData param) throws Exception {
+        List<PageData> result = new ArrayList<PageData>();
+        List<PageData> plancostList = rcmonthProgressService.listPlanByRoads(param);	//按路段查询计划费用        
+        for(PageData plancost : plancostList){
+        	param.put("ROAD_ID", plancost.get("ROAD_ID"));
+        	List<PageData> list = rcmonthProgressService.listAll(param);	//列出道路月度信息
+        	plancost.put("monthInfo", list);
+        }
+        
+        result = plancostList;
+        return result;
+    }
+
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/SbdxMonthProgressController.class


+ 273 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/SbdxMonthProgressController.java

@@ -0,0 +1,273 @@
+package com.zhcs.dt.controller.information.monthProgress;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.information.annualPlan.DownloadZip;
+import com.zhcs.dt.service.information.annualPlan.MultExcelUtils;
+import com.zhcs.dt.service.information.monthProgress.MonthProgressManager;
+import com.zhcs.dt.service.information.monthProgress.SbdxMonthProgressManager;
+import com.zhcs.dt.service.information.monthProgress.SyjcMonthProgressManager;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.Tools;
+
+/**
+ * @author yuanfei
+ * @date 2019年2月22日
+ * @desc 预防养护
+ */
+
+@Controller
+@RequestMapping(value="/equipment")
+public class SbdxMonthProgressController extends BaseController{
+	
+	@Resource(name="sbdxmonthProgressService")
+	private SbdxMonthProgressManager sbdxmonthProgressService;
+	
+	@Resource(name="monthProgressService")
+	private MonthProgressManager monthProgressService;
+	
+	@Resource(name="syjcmonthProgressService")
+	private SyjcMonthProgressManager syjcmonthProgressService;
+	
+	/**月度列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"应急养护月度报告");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		PageData userInfo = monthProgressService.getCompanyAndRoad(Jurisdiction.getUsername().toString());	//通过username获取公司和路段
+		//通过ROLE_ID获取角色
+		String roleName = monthProgressService.getRoleName(userInfo.get("ROLE_ID").toString());
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");				//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		if(userInfo.get("COMPANY") != null){
+			pd.put("COMPANY", userInfo.get("COMPANY"));
+		}
+		//page.setPd(pd);
+		List<PageData>	varList = sbdxmonthProgressService.getReportlist(pd);	//列出月度报告
+		mv.setViewName("information/monthProgress/sbdx/monthProgress_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("userInfo", userInfo);
+		mv.addObject("roleName", roleName);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**去新增页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goAdd")
+	public ModelAndView goAdd()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String company = pd.get("COMPANY").toString();
+		mv.setViewName("information/monthProgress/sbdx/monthProgress_add");
+		mv.addObject("company", company);
+		mv.addObject("msg", "save");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**新增报告
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/saveNewReport")
+	public ModelAndView saveNewReport() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"新增预防养护月报");
+		//List<PageData> reportList = new ArrayList<PageData>();		
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String planID = this.get32UUID();
+		String companyid = monthProgressService.getCompanyid(pd.get("COMPANY"));
+		pd.put("COMPANY_ID", companyid);
+		pd.put("ID", planID);//主键
+		pd.put("NAME", pd.get("YEAR")+"年"+pd.get("COMPANY")+"月度养护报告");
+		pd.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+		pd.put("MTIME", Tools.date2Str(new Date()));	//修改时间
+		pd.put("STATUS", "新建");	//创建时间
+		sbdxmonthProgressService.addMonthlyReport(pd);   //新建月度养护报告
+		mv.addObject("pd", pd);
+		mv.addObject("msg","success");
+	    mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showTable")
+	public ModelAndView showTable() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"月度预防养护");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)		
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		PageData userInfo = monthProgressService.getCompanyAndRoad(Jurisdiction.getUsername().toString());	//通过username获取公司和路段
+		//通过ROLE_ID获取角色
+		String roleName = monthProgressService.getRoleName(userInfo.get("ROLE_ID").toString());
+		if("路段管理员".equalsIgnoreCase(roleName)){
+			pd.put("ROADS", userInfo.get("ROAD").toString().split(","));
+		}
+		List<PageData> varList = syjcmonthProgressService.getReportInfo(pd);	//获取月报相应数据
+		mv.setViewName("information/monthProgress/sbdx/equipmentCompletion_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());
+		return mv;
+	}
+	
+	/**
+	 * 保存
+	 * @throws Exception
+	 */
+	@RequestMapping(value = "/saveData")
+	@ResponseBody
+	public Object saveData(String data) throws Exception{
+        ModelAndView mv = this.getModelAndView();
+        PageData pd = new PageData();
+        pd = this.getPageData();
+//        JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
+        JSONArray jsonarray = JSONArray.fromObject(data);
+        Map<String,Object> map = dealWithData(pd,jsonarray);
+        return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**
+     * 处理新增编辑数据
+     */
+    @ResponseBody
+    public Map<String,Object> dealWithData(PageData pd,JSONArray jsonarray) throws Exception{
+        for (Object object : jsonarray) {
+            JSONObject arrMap = JSONObject.fromObject(object);
+            pd.put("YEAR", arrMap.get("YEAR"));
+            pd.put("COMPANY", arrMap.get("COMPANY"));
+            pd.put("COMPANY_ID", arrMap.get("COMPANY_ID"));
+            pd.put("ROAD", arrMap.get("ROAD"));
+            pd.put("ROAD_ID", arrMap.get("ROAD_ID"));
+            pd.put("PROJECT_NAME", arrMap.get("PROJECT_NAME"));
+            syjcmonthProgressService.deleteMonthRecord(pd);
+            for (int i = 1; i < 13; i++) {
+                pd.put("MONTH",i);
+                if ((!arrMap.get("ACTUAL_COST_"+i).equals(""))||(!arrMap.get("PAY_COST_"+i).equals(""))) {
+                    pd.put("ACTUAL_COST", arrMap.get("ACTUAL_COST_"+i).equals("")?null:arrMap.get("ACTUAL_COST_"+i));
+                    pd.put("PAY_COST", arrMap.get("PAY_COST_"+i).equals("")?null:arrMap.get("PAY_COST_"+i));
+                    pd.put("RATIO", arrMap.get("RATIO_"+i).equals("")?null:arrMap.get("RATIO_"+i));
+                    syjcmonthProgressService.insertMonthRecord(pd);
+                }
+            }
+        }
+        Map<String,Object> map = new HashMap<String,Object>();
+        map.put("msg","success");
+        return map;
+    }
+	
+	/**删除月度报告
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delMonthlyReport")
+	@ResponseBody
+	public Object delMonthlyReport()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		sbdxmonthProgressService.delMonthlyReport(pd);	//删除月度报告
+		sbdxmonthProgressService.delMonthlyCompletion(pd);	//删除对应月度完成情况
+		map.put("result", "success");
+		return AppUtil.returnObject(new PageData(), map);
+	}
+	
+    @RequestMapping("/excelExport")
+    public String excelExport(HttpServletRequest request,HttpServletResponse response) throws Exception{
+        String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
+        ModelAndView mv = this.getModelAndView();
+        PageData pd = new PageData();
+        pd = this.getPageData();
+        List<String> paths = new ArrayList<String>();
+        List<String> result = new ArrayList<String>();
+        List<PageData> exceldata = setExcelData(pd);
+        MultExcelUtils ex = new MultExcelUtils();
+        String excelpath = ex.exportExcel(pd.getString("exportname")+".xlsx",path,response,exceldata);
+        result.add(excelpath);
+        //zip压缩下载
+        DownloadZip.downloadZip(response,request,result,path);
+        return null;
+    }
+    
+    public List<PageData> setExcelData(PageData param) throws Exception {
+        List<PageData> result = new ArrayList<PageData>();
+        PageData data = new PageData();
+        if (param.get("TABLETYPE").equals("monthly_equipment_overhaul_completion")) {
+            param.put("subtable", "highway_equipment_overhaul_project_dettable");
+            data.put("modelName", "设备大修项目月度完成情况");
+            data.put("keyStr", "num,PROJECT_NAME,CATEGORY,CONTENT,PROJECT_COST,AUDIT_FEE,AUDIT_MAKER"
+                    + ",ACTUAL_COST_1,PAY_COST_1,RATIO_1,ACTUAL_COST_2,PAY_COST_2,RATIO_2,ACTUAL_COST_3,PAY_COST_3,RATIO_3"
+                    + ",ACTUAL_COST_4,PAY_COST_4,RATIO_4,ACTUAL_COST_5,PAY_COST_5,RATIO_5,ACTUAL_COST_6,PAY_COST_6,RATIO_6"
+                    + ",ACTUAL_COST_7,PAY_COST_7,RATIO_7,ACTUAL_COST_8,PAY_COST_8,RATIO_8,ACTUAL_COST_9,PAY_COST_9,RATIO_9"
+                    + ",ACTUAL_COST_10,PAY_COST_10,RATIO_10,ACTUAL_COST_11,PAY_COST_11,RATIO_11,ACTUAL_COST_12,PAY_COST_12,RATIO_12"
+                    + ",ACTUAL_COST,PAY_COST,RATIO");
+            String[][] funcArry = {
+                {"percent","RATIO_1","IF(ISERROR((J#row#/G#row#)),\"\",(J#row#/G#row#))"}
+                ,{"percent","RATIO_2","IF(ISERROR((M#row#/G#row#)),\"\",(M#row#/G#row#))"}
+                ,{"percent","RATIO_3","IF(ISERROR((P#row#/G#row#)),\"\",(P#row#/G#row#))"}
+                ,{"percent","RATIO_4","IF(ISERROR((S#row#/G#row#)),\"\",(S#row#/G#row#))"}
+                ,{"percent","RATIO_5","IF(ISERROR((V#row#/G#row#)),\"\",(V#row#/G#row#))"}
+                ,{"percent","RATIO_6","IF(ISERROR((Y#row#/G#row#)),\"\",(Y#row#/G#row#))"}
+                ,{"percent","RATIO_7","IF(ISERROR((AB#row#/G#row#)),\"\",(AB#row#/G#row#))"}
+                ,{"percent","RATIO_8","IF(ISERROR((AE#row#/G#row#)),\"\",(AE#row#/G#row#))"}
+                ,{"percent","RATIO_9","IF(ISERROR((AH#row#/G#row#)),\"\",(AH#row#/G#row#))"}
+                ,{"percent","RATIO_10","IF(ISERROR((AK#row#/G#row#)),\"\",(AK#row#/G#row#))"}
+                ,{"percent","RATIO_11","IF(ISERROR((AN#row#/G#row#)),\"\",(AN#row#/G#row#))"}
+                ,{"percent","RATIO_12","IF(ISERROR((AQ#row#/G#row#)),\"\",(AQ#row#/G#row#))"}
+                ,{"sum","ACTUAL_COST","SUM(I#row#,L#row#,O#row#,R#row#,U#row#,X#row#,AA#row#,AD#row#,AG#row#,AJ#row#,AM#row#,AP#row#)"}
+                ,{"sum","PAY_COST","SUM(J#row#,M#row#,P#row#,S#row#,V#row#,Y#row#,AB#row#,AE#row#,AH#row#,AK#row#,AN#row#,AQ#row#)"}
+                ,{"percent","RATIO","IF(ISERROR((AT#row#/G#row#)),\"\",(AT#row#/G#row#))"}
+            };
+            data.put("funcArry", funcArry);
+            data.put("tabletype", 3);
+            data.put("totalRange", 4);
+            
+            data.put("startRowIndex", 3);
+        }
+        List<PageData> list = syjcmonthProgressService.getReportInfo(param);
+        data.put("list", list);
+        result.add(data);
+        return result;
+    }
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/SyjcMonthProgressController.class


+ 281 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/SyjcMonthProgressController.java

@@ -0,0 +1,281 @@
+package com.zhcs.dt.controller.information.monthProgress;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.information.annualPlan.DownloadZip;
+import com.zhcs.dt.service.information.annualPlan.MultExcelUtils;
+import com.zhcs.dt.service.information.monthProgress.MonthProgressManager;
+import com.zhcs.dt.service.information.monthProgress.SyjcMonthProgressManager;
+import com.zhcs.dt.service.information.monthProgress.YjMonthProgressManager;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.Tools;
+
+/**
+ * @author yuanfei
+ * @date 2019年2月22日
+ * @desc 预防养护
+ */
+
+@Controller
+@RequestMapping(value="/test")
+public class SyjcMonthProgressController extends BaseController{
+	
+	@Resource(name="syjcmonthProgressService")
+	private SyjcMonthProgressManager syjcmonthProgressService;
+	
+	@Resource(name="monthProgressService")
+	private MonthProgressManager monthProgressService;
+	
+	
+	/**月度列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"应急养护月度报告");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		PageData userInfo = monthProgressService.getCompanyAndRoad(Jurisdiction.getUsername().toString());	//通过username获取公司和路段
+		//通过ROLE_ID获取角色
+		String roleName = monthProgressService.getRoleName(userInfo.get("ROLE_ID").toString());
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");				//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		if(userInfo.get("COMPANY") != null){
+			pd.put("COMPANY", userInfo.get("COMPANY"));
+		}
+		//page.setPd(pd);
+		List<PageData>	varList = syjcmonthProgressService.getReportlist(pd);	//列出月度报告
+		mv.setViewName("information/monthProgress/syjc/monthProgress_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("userInfo", userInfo);
+		mv.addObject("roleName", roleName);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**去新增页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goAdd")
+	public ModelAndView goAdd()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String company = pd.get("COMPANY").toString();
+		mv.setViewName("information/monthProgress/syjc/monthProgress_add");
+		mv.addObject("company", company);
+		mv.addObject("msg", "save");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**新增报告
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/saveNewReport")
+	public ModelAndView saveNewReport() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"新增预防养护月报");
+		//List<PageData> reportList = new ArrayList<PageData>();		
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String planID = this.get32UUID();
+		String companyid = monthProgressService.getCompanyid(pd.get("COMPANY"));
+		pd.put("COMPANY_ID", companyid);
+		pd.put("ID", planID);//主键
+		pd.put("NAME", pd.get("YEAR")+"年"+pd.get("COMPANY")+"月度养护报告");
+		pd.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+		pd.put("MTIME", Tools.date2Str(new Date()));	//修改时间
+		pd.put("STATUS", "新建");	//创建时间
+		syjcmonthProgressService.addMonthlyReport(pd);   //新建月度养护报告
+		mv.addObject("pd", pd);
+		mv.addObject("msg","success");
+	    mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showTable")
+	public ModelAndView showTable() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"月度预防养护");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)		
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		PageData userInfo = monthProgressService.getCompanyAndRoad(Jurisdiction.getUsername().toString());	//通过username获取公司和路段
+		//通过ROLE_ID获取角色
+		String roleName = monthProgressService.getRoleName(userInfo.get("ROLE_ID").toString());
+		if("路段管理员".equalsIgnoreCase(roleName)){
+			pd.put("ROADS", userInfo.get("ROAD").toString().split(","));
+		}
+		List<PageData> varList = syjcmonthProgressService.getReportInfo(pd);	//获取月报相应数据
+		mv.setViewName("information/monthProgress/syjc/testCompletion_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("QX",Jurisdiction.getHC());
+		return mv;
+	}
+	
+	/**
+	 * 保存
+	 * @throws Exception
+	 */
+	@RequestMapping(value = "/saveData")
+	@ResponseBody
+	public Object saveData(String data) throws Exception{
+        ModelAndView mv = this.getModelAndView();
+        PageData pd = new PageData();
+        pd = this.getPageData();
+//        JSONArray jsonarray = JSONArray.fromObject(pd.get("data"));
+        JSONArray jsonarray = JSONArray.fromObject(data);
+        Map<String,Object> map = dealWithData(pd,jsonarray);
+        return AppUtil.returnObject(new PageData(), map);
+	}
+	
+	/**
+     * 处理新增编辑数据
+     */
+    @ResponseBody
+    public Map<String,Object> dealWithData(PageData pd,JSONArray jsonarray) throws Exception{
+        for (Object object : jsonarray) {
+            JSONObject arrMap = JSONObject.fromObject(object);
+            pd.put("YEAR", arrMap.get("YEAR"));
+            pd.put("COMPANY", arrMap.get("COMPANY"));
+            pd.put("COMPANY_ID", arrMap.get("COMPANY_ID"));
+            pd.put("ROAD", arrMap.get("ROAD"));
+            pd.put("ROAD_ID", arrMap.get("ROAD_ID"));
+            pd.put("PROJECT_NAME", arrMap.get("PROJECT_NAME"));
+            pd.put("SJWCGCL", arrMap.get("SJWCGCL"));
+            String type = pd.get("TABLETYPE").toString();
+            if("monthly_test_project_completion".equalsIgnoreCase(type)){
+            	pd.put("TABLE_NAME", "highway_test_project_dettable");
+            }
+            else if("monthly_equipment_overhaul_completion".equalsIgnoreCase(type)){
+            	pd.put("TABLE_NAME", "highway_equipment_overhaul_project_dettable");
+            }
+            syjcmonthProgressService.updateWCQKRecord(pd);
+            syjcmonthProgressService.deleteMonthRecord(pd);
+            for (int i = 1; i < 13; i++) {
+                pd.put("MONTH",i);
+                if ((!arrMap.get("ACTUAL_COST_"+i).equals(""))||(!arrMap.get("PAY_COST_"+i).equals(""))
+                		||(!arrMap.get("ACTUAL_QUANTITIES_"+i).equals(""))) {
+                	pd.put("ACTUAL_QUANTITIES", arrMap.get("ACTUAL_QUANTITIES_"+i).equals("")?null:arrMap.get("ACTUAL_QUANTITIES_"+i));
+                    pd.put("ACTUAL_COST", arrMap.get("ACTUAL_COST_"+i).equals("")?null:arrMap.get("ACTUAL_COST_"+i));
+                    pd.put("PAY_COST", arrMap.get("PAY_COST_"+i).equals("")?null:arrMap.get("PAY_COST_"+i));
+                    pd.put("RATIO", arrMap.get("RATIO_"+i).equals("")?null:arrMap.get("RATIO_"+i));
+                    syjcmonthProgressService.insertMonthRecord(pd);
+                }
+            }
+        }
+        Map<String,Object> map = new HashMap<String,Object>();
+        map.put("msg","success");
+        return map;
+    }
+	
+	/**删除月度报告
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delMonthlyReport")
+	@ResponseBody
+	public Object delMonthlyReport()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		syjcmonthProgressService.delMonthlyReport(pd);	//删除月度报告
+		syjcmonthProgressService.delMonthlyCompletion(pd);	//删除对应月度完成情况
+		map.put("result", "success");
+		return AppUtil.returnObject(new PageData(), map);
+	}
+
+    @RequestMapping("/excelExport")
+    public String excelExport(HttpServletRequest request,HttpServletResponse response) throws Exception{
+        String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file");
+        ModelAndView mv = this.getModelAndView();
+        PageData pd = new PageData();
+        pd = this.getPageData();
+        List<String> paths = new ArrayList<String>();
+        List<String> result = new ArrayList<String>();
+        List<PageData> exceldata = setExcelData(pd);
+        MultExcelUtils ex = new MultExcelUtils();
+        String excelpath = ex.exportExcel(pd.getString("exportname")+".xlsx",path,response,exceldata);
+        result.add(excelpath);
+        //zip压缩下载
+        DownloadZip.downloadZip(response,request,result,path);
+        return null;
+    }
+    
+    public List<PageData> setExcelData(PageData param) throws Exception {
+        List<PageData> result = new ArrayList<PageData>();
+        PageData data = new PageData();
+        if (param.get("TABLETYPE").equals("monthly_test_project_completion")) {
+            param.put("subtable", "highway_test_project_dettable");
+            data.put("modelName", "试验检测项目月度完成情况");
+            data.put("keyStr", "num,PROJECT_NAME,CATEGORY,CONTENT,PROJECT_COST,AUDIT_FEE,AUDIT_MAKER"
+                    + ",ACTUAL_COST_1,PAY_COST_1,RATIO_1,ACTUAL_COST_2,PAY_COST_2,RATIO_2,ACTUAL_COST_3,PAY_COST_3,RATIO_3"
+                    + ",ACTUAL_COST_4,PAY_COST_4,RATIO_4,ACTUAL_COST_5,PAY_COST_5,RATIO_5,ACTUAL_COST_6,PAY_COST_6,RATIO_6"
+                    + ",ACTUAL_COST_7,PAY_COST_7,RATIO_7,ACTUAL_COST_8,PAY_COST_8,RATIO_8,ACTUAL_COST_9,PAY_COST_9,RATIO_9"
+                    + ",ACTUAL_COST_10,PAY_COST_10,RATIO_10,ACTUAL_COST_11,PAY_COST_11,RATIO_11,ACTUAL_COST_12,PAY_COST_12,RATIO_12"
+                    + ",ACTUAL_COST,PAY_COST,RATIO");
+            String[][] funcArry = {
+                {"percent","RATIO_1","IF(ISERROR((J#row#/G#row#)),\"\",(J#row#/G#row#))"}
+                ,{"percent","RATIO_2","IF(ISERROR((M#row#/G#row#)),\"\",(M#row#/G#row#))"}
+                ,{"percent","RATIO_3","IF(ISERROR((P#row#/G#row#)),\"\",(P#row#/G#row#))"}
+                ,{"percent","RATIO_4","IF(ISERROR((S#row#/G#row#)),\"\",(S#row#/G#row#))"}
+                ,{"percent","RATIO_5","IF(ISERROR((V#row#/G#row#)),\"\",(V#row#/G#row#))"}
+                ,{"percent","RATIO_6","IF(ISERROR((Y#row#/G#row#)),\"\",(Y#row#/G#row#))"}
+                ,{"percent","RATIO_7","IF(ISERROR((AB#row#/G#row#)),\"\",(AB#row#/G#row#))"}
+                ,{"percent","RATIO_8","IF(ISERROR((AE#row#/G#row#)),\"\",(AE#row#/G#row#))"}
+                ,{"percent","RATIO_9","IF(ISERROR((AH#row#/G#row#)),\"\",(AH#row#/G#row#))"}
+                ,{"percent","RATIO_10","IF(ISERROR((AK#row#/G#row#)),\"\",(AK#row#/G#row#))"}
+                ,{"percent","RATIO_11","IF(ISERROR((AN#row#/G#row#)),\"\",(AN#row#/G#row#))"}
+                ,{"percent","RATIO_12","IF(ISERROR((AQ#row#/G#row#)),\"\",(AQ#row#/G#row#))"}
+                ,{"sum","ACTUAL_COST","SUM(I#row#,L#row#,O#row#,R#row#,U#row#,X#row#,AA#row#,AD#row#,AG#row#,AJ#row#,AM#row#,AP#row#)"}
+                ,{"sum","PAY_COST","SUM(J#row#,M#row#,P#row#,S#row#,V#row#,Y#row#,AB#row#,AE#row#,AH#row#,AK#row#,AN#row#,AQ#row#)"}
+                ,{"percent","RATIO","IF(ISERROR((AT#row#/G#row#)),\"\",(AT#row#/G#row#))"}
+            };
+            data.put("funcArry", funcArry);
+            data.put("tabletype", 3);
+            data.put("totalRange", 4);
+            data.put("startRowIndex", 3);
+        }
+        List<PageData> list = syjcmonthProgressService.getReportInfo(param);
+        data.put("list", list);
+        result.add(data);
+        return result;
+    }
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/XfMonthProgressController.class


+ 176 - 0
WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/XfMonthProgressController.java

@@ -0,0 +1,176 @@
+package com.zhcs.dt.controller.information.monthProgress;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import net.sf.json.JSONArray;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.zhcs.dt.controller.base.BaseController;
+import com.zhcs.dt.entity.Page;
+import com.zhcs.dt.service.information.monthProgress.MonthProgressManager;
+import com.zhcs.dt.service.information.monthProgress.XfMonthProgressManager;
+import com.zhcs.dt.service.information.monthProgress.YjMonthProgressManager;
+import com.zhcs.dt.util.AppUtil;
+import com.zhcs.dt.util.Jurisdiction;
+import com.zhcs.dt.util.PageData;
+import com.zhcs.dt.util.Tools;
+
+/**
+ * @author yuanfei
+ * @date 2019年2月22日
+ * @desc 预防养护
+ */
+
+@Controller
+@RequestMapping(value="/repair")
+public class XfMonthProgressController extends BaseController{
+	
+	@Resource(name="xfmonthProgressService")
+	private XfMonthProgressManager xfmonthProgressService;
+	
+	@Resource(name="monthProgressService")
+	private MonthProgressManager monthProgressService;
+	
+	@Resource(name="yjmonthProgressService")
+    private YjMonthProgressManager yjmonthProgressService;
+	
+	/**月度列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/list")
+	public ModelAndView list(Page page) throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"应急养护月度报告");
+		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		PageData userInfo = monthProgressService.getCompanyAndRoad(Jurisdiction.getUsername().toString());	//通过username获取公司和路段
+		//通过ROLE_ID获取角色
+		String roleName = monthProgressService.getRoleName(userInfo.get("ROLE_ID").toString());
+		pd = this.getPageData();
+		String keywords = pd.getString("keywords");				//关键词检索条件
+		if(null != keywords && !"".equals(keywords)){
+			pd.put("keywords", keywords.trim());
+		}
+		if(userInfo.get("COMPANY") != null){
+			pd.put("COMPANY", userInfo.get("COMPANY"));
+		}
+		//page.setPd(pd);
+		List<PageData>	varList = xfmonthProgressService.getReportlist(pd);	//列出月度报告
+		mv.setViewName("information/monthProgress/xf/monthProgress_list");
+		mv.addObject("varList", varList);
+		mv.addObject("pd", pd);
+		mv.addObject("userInfo", userInfo);
+		mv.addObject("roleName", roleName);
+		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
+		return mv;
+	}
+	
+	/**去新增页面
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/goAdd")
+	public ModelAndView goAdd()throws Exception{
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String company = pd.get("COMPANY").toString();
+		mv.setViewName("information/monthProgress/xf/monthProgress_add");
+		mv.addObject("company", company);
+		mv.addObject("msg", "save");
+		mv.addObject("pd", pd);
+		return mv;
+	}
+	
+	/**新增报告
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/saveNewReport")
+	public ModelAndView saveNewReport() throws Exception{
+		logBefore(logger, Jurisdiction.getUsername()+"新增预防养护月报");
+		//List<PageData> reportList = new ArrayList<PageData>();		
+		ModelAndView mv = this.getModelAndView();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		String planID = this.get32UUID();
+		String companyid = monthProgressService.getCompanyid(pd.get("COMPANY"));
+		pd.put("COMPANY_ID", companyid);
+		pd.put("ID", planID);//主键
+		pd.put("NAME", pd.get("YEAR")+"年"+pd.get("COMPANY")+"月度养护报告");
+		pd.put("CTIME", Tools.date2Str(new Date()));	//创建时间
+		pd.put("MTIME", Tools.date2Str(new Date()));	//修改时间
+		pd.put("STATUS", "新建");	//创建时间
+		xfmonthProgressService.addMonthlyReport(pd);   //新建月度养护报告
+		mv.addObject("pd", pd);
+		mv.addObject("msg","success");
+	    mv.setViewName("save_result");
+		return mv;
+	}
+	
+	/**列表
+	 * @param page
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/showTable")
+    public ModelAndView showTable()throws Exception{
+        ModelAndView mv = this.getModelAndView();
+        PageData pd = new PageData();
+        pd = this.getPageData();
+        List<PageData> varList = yjmonthProgressService.getReportInfo(pd);  //获取月报相应数据
+        mv.setViewName("information/monthProgress/xf/repairCompletion_list");
+        mv.addObject("varList", varList);
+        mv.addObject("pd", pd);
+        mv.addObject("QX",Jurisdiction.getHC());
+        return mv;
+    }
+	
+	/**
+	 * 保存
+	 * @throws Exception
+	 */
+	@RequestMapping(value = "/save",method=RequestMethod.POST)
+	@ResponseBody
+	public Object save(@RequestBody List<PageData> pd){
+		Map<String, Object> result = new HashMap<String, Object>();
+		try {
+			xfmonthProgressService.save(pd);
+			result.put("msg", "ok");
+		} catch (Exception e) {
+			result.put("msg", "error");
+			result.put("data", "操作异常");
+			e.printStackTrace();
+		}
+		return result;
+	}
+	
+	/**删除月度报告
+	 * @param
+	 * @throws Exception
+	 */
+	@RequestMapping(value="/delMonthlyReport")
+	@ResponseBody
+	public Object delMonthlyReport()throws Exception{
+		Map<String,String> map = new HashMap<String,String>();
+		PageData pd = new PageData();
+		pd = this.getPageData();
+		xfmonthProgressService.delMonthlyReport(pd);	//删除月度报告
+		xfmonthProgressService.delMonthlyCompletion(pd);	//删除对应月度完成情况
+		map.put("result", "success");
+		return AppUtil.returnObject(new PageData(), map);
+	}
+
+}

BIN
WEB-INF/classes/com/zhcs/dt/controller/information/monthProgress/YbfController.class


Some files were not shown because too many files changed in this diff