瀏覽代碼

synyi-service frist

wangyuesongtao 7 年之前
當前提交
5a033e689b
共有 100 個文件被更改,包括 17238 次插入0 次删除
  1. 32 0
      org.zsl.hnust Maven Webapp/.classpath
  2. 33 0
      org.zsl.hnust Maven Webapp/.myeclipse/profiler/Test.xml
  3. 2 0
      org.zsl.hnust Maven Webapp/.myumldata
  4. 52 0
      org.zsl.hnust Maven Webapp/.project
  5. 12 0
      org.zsl.hnust Maven Webapp/.settings/.jsdtscope
  6. 2 0
      org.zsl.hnust Maven Webapp/.settings/com.genuitec.eclipse.j2eedt.core.prefs
  7. 7 0
      org.zsl.hnust Maven Webapp/.settings/org.eclipse.core.resources.prefs
  8. 8 0
      org.zsl.hnust Maven Webapp/.settings/org.eclipse.jdt.core.prefs
  9. 4 0
      org.zsl.hnust Maven Webapp/.settings/org.eclipse.m2e.core.prefs
  10. 11 0
      org.zsl.hnust Maven Webapp/.settings/org.eclipse.wst.common.component
  11. 7 0
      org.zsl.hnust Maven Webapp/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
  12. 10 0
      org.zsl.hnust Maven Webapp/.settings/org.eclipse.wst.common.project.facet.core.xml
  13. 1 0
      org.zsl.hnust Maven Webapp/.settings/org.eclipse.wst.jsdt.ui.superType.container
  14. 1 0
      org.zsl.hnust Maven Webapp/.settings/org.eclipse.wst.jsdt.ui.superType.name
  15. 2 0
      org.zsl.hnust Maven Webapp/.settings/org.eclipse.wst.validation.prefs
  16. 1 0
      org.zsl.hnust Maven Webapp/.svn/entries
  17. 1 0
      org.zsl.hnust Maven Webapp/.svn/format
  18. 12 0
      org.zsl.hnust Maven Webapp/.svn/pristine/03/03b465837fab0a2e739c5521ae6eefc35616dbc8.svn-base
  19. 113 0
      org.zsl.hnust Maven Webapp/.svn/pristine/0a/0a3cea53896229977bef1f1eb916a45d9fcfe682.svn-base
  20. 89 0
      org.zsl.hnust Maven Webapp/.svn/pristine/0b/0b54d57801017584d17c4a277191f875421f95ab.svn-base
  21. 21 0
      org.zsl.hnust Maven Webapp/.svn/pristine/0c/0cc22dc5c0da169c7e00cf8478e26343daa2ab45.svn-base
  22. 587 0
      org.zsl.hnust Maven Webapp/.svn/pristine/0f/0f54b0fdb5d37e83731df48c6f376bbd97ff1b1b.svn-base
  23. 61 0
      org.zsl.hnust Maven Webapp/.svn/pristine/13/13dabb693206d5f9332d3fb421f49deee0d00d4b.svn-base
  24. 14 0
      org.zsl.hnust Maven Webapp/.svn/pristine/1c/1c7f99ed273a6d10ccf189fb7b286d0082fe94aa.svn-base
  25. 2 0
      org.zsl.hnust Maven Webapp/.svn/pristine/1d/1db27de96315af9ea481a0dfc3972c8b79103722.svn-base
  26. 10 0
      org.zsl.hnust Maven Webapp/.svn/pristine/1e/1e59675aee8dc721e6f150ad1ee27d6a189305ca.svn-base
  27. 388 0
      org.zsl.hnust Maven Webapp/.svn/pristine/1e/1e9870924835e3c1f6defc3c4da8c9fa46036733.svn-base
  28. 82 0
      org.zsl.hnust Maven Webapp/.svn/pristine/1f/1f836837f764adf9041a739ed02b295d0dde5e82.svn-base
  29. 32 0
      org.zsl.hnust Maven Webapp/.svn/pristine/21/21dabbcb071ecaf32e269c6892e39e04fc16a9d8.svn-base
  30. 14 0
      org.zsl.hnust Maven Webapp/.svn/pristine/23/2326230bd0bdd62cfbe170693d383d8ab66e21b9.svn-base
  31. 330 0
      org.zsl.hnust Maven Webapp/.svn/pristine/28/28a576ed56427c7cb0ed62a7eadf0b1958440644.svn-base
  32. 8 0
      org.zsl.hnust Maven Webapp/.svn/pristine/2e/2e33bdfe461d1ce3592ed6ef8cea668098195916.svn-base
  33. 10 0
      org.zsl.hnust Maven Webapp/.svn/pristine/32/32ca2cd4fdd8b8dddaa033dc55db087eb8e4a414.svn-base
  34. 48 0
      org.zsl.hnust Maven Webapp/.svn/pristine/34/3467aaddcac7a7848ea1aa9b92646128a8479171.svn-base
  35. 37 0
      org.zsl.hnust Maven Webapp/.svn/pristine/36/36a904d0571bd9488d62ce8b9788714b57d34220.svn-base
  36. 5 0
      org.zsl.hnust Maven Webapp/.svn/pristine/38/384841634f5430db4cf550b6719d2c3d0b8a1028.svn-base
  37. 94 0
      org.zsl.hnust Maven Webapp/.svn/pristine/39/394a71f8ef8be746b97ee8ba63df25abd57901ff.svn-base
  38. 10 0
      org.zsl.hnust Maven Webapp/.svn/pristine/39/39699c7342c00e60f6256fe93fc1006a1baed8a2.svn-base
  39. 14 0
      org.zsl.hnust Maven Webapp/.svn/pristine/3b/3b2f179bd8d0e6f9b0dbf2ab8cf461023c3a99b2.svn-base
  40. 52 0
      org.zsl.hnust Maven Webapp/.svn/pristine/40/403796bebed16f9f330529c40ac963360237ceea.svn-base
  41. 1 0
      org.zsl.hnust Maven Webapp/.svn/pristine/41/41dfc0a6c92707948578891c51d98c6443be63cc.svn-base
  42. 162 0
      org.zsl.hnust Maven Webapp/.svn/pristine/45/458bb6ab73a92dc1aca2352ba3d5688116a892c9.svn-base
  43. 6 0
      org.zsl.hnust Maven Webapp/.svn/pristine/46/46c980d2ec7e313d8d408eb7300f7d0365cf1f6a.svn-base
  44. 478 0
      org.zsl.hnust Maven Webapp/.svn/pristine/4a/4a19929eab6d5988cf32028a77688b802de18927.svn-base
  45. 二進制
      org.zsl.hnust Maven Webapp/.svn/pristine/4d/4d86ae5084026b4e93dd14ac0af55de58d57a5f2.svn-base
  46. 29 0
      org.zsl.hnust Maven Webapp/.svn/pristine/4f/4f10c02b20beeabbca1408783b58d0ca66024058.svn-base
  47. 32 0
      org.zsl.hnust Maven Webapp/.svn/pristine/50/5065752e4e3f9d9050ec826f15aa1cf794e20e99.svn-base
  48. 13 0
      org.zsl.hnust Maven Webapp/.svn/pristine/50/509ce56e0ef9bdc4a943d7e4003681e81263ab5b.svn-base
  49. 32 0
      org.zsl.hnust Maven Webapp/.svn/pristine/55/55b16ea56c26f17a558df7112342376f6541a269.svn-base
  50. 11 0
      org.zsl.hnust Maven Webapp/.svn/pristine/57/578e74a37c8676b22d5b76afa2fbd895b2add2e2.svn-base
  51. 49 0
      org.zsl.hnust Maven Webapp/.svn/pristine/5a/5acd43123e2aa762f84b4228d5878f82b5d791e7.svn-base
  52. 54 0
      org.zsl.hnust Maven Webapp/.svn/pristine/5b/5bf3d80d145aadd79d1a8be0208e98592a5cea47.svn-base
  53. 40 0
      org.zsl.hnust Maven Webapp/.svn/pristine/5c/5cf43ba1f88101ec475d06c6983ca3937d28213f.svn-base
  54. 12 0
      org.zsl.hnust Maven Webapp/.svn/pristine/62/6293dfff3f25a5fc5b109b7ba00419aa7df6f36d.svn-base
  55. 23 0
      org.zsl.hnust Maven Webapp/.svn/pristine/6c/6cd8a2555a1536a77c292bafa15a38ff8ddf99fb.svn-base
  56. 10 0
      org.zsl.hnust Maven Webapp/.svn/pristine/6d/6ddc3467f511d945363989807ae3fccda00fb694.svn-base
  57. 138 0
      org.zsl.hnust Maven Webapp/.svn/pristine/75/75a89c17311f615cbf0cba100c7f3ce8f58dee31.svn-base
  58. 26 0
      org.zsl.hnust Maven Webapp/.svn/pristine/7a/7a5bd07ee332989dbceb75e957ccf5f83feca350.svn-base
  59. 5 0
      org.zsl.hnust Maven Webapp/.svn/pristine/7d/7d78759d70534cdecac7303b6e755d59926d2b08.svn-base
  60. 8 0
      org.zsl.hnust Maven Webapp/.svn/pristine/7f/7f913504cbd070c939c170bd92ddb5dc7eb2c405.svn-base
  61. 52 0
      org.zsl.hnust Maven Webapp/.svn/pristine/85/85d16f277415057618a39c2fde4773f3f019f71c.svn-base
  62. 1 0
      org.zsl.hnust Maven Webapp/.svn/pristine/87/87ab9531e1222351568346cf9057a0cae36112b8.svn-base
  63. 22 0
      org.zsl.hnust Maven Webapp/.svn/pristine/87/87c3366fb16b9a152256885465df27df424b945d.svn-base
  64. 197 0
      org.zsl.hnust Maven Webapp/.svn/pristine/95/95de3de1f4cbc349b8c1f76d6719ddc041499e44.svn-base
  65. 7 0
      org.zsl.hnust Maven Webapp/.svn/pristine/96/96034be0eb5a0127f8218d90f1575fc47a627655.svn-base
  66. 10351 0
      org.zsl.hnust Maven Webapp/.svn/pristine/96/96c73f3774471cc8378c77a64ecf09b7f625d8b7.svn-base
  67. 32 0
      org.zsl.hnust Maven Webapp/.svn/pristine/9b/9b50a1db8822572dda8035716cadeac527c6d435.svn-base
  68. 39 0
      org.zsl.hnust Maven Webapp/.svn/pristine/9d/9d67cab29f9aeb9bda3eb4b2ce16d8691a3e9bf0.svn-base
  69. 33 0
      org.zsl.hnust Maven Webapp/.svn/pristine/9e/9e70507fc40d3f225b623f93fb3de61ead7ba6b5.svn-base
  70. 4 0
      org.zsl.hnust Maven Webapp/.svn/pristine/a1/a112be21c325d37ebc17baafd40c0386b5d09df1.svn-base
  71. 30 0
      org.zsl.hnust Maven Webapp/.svn/pristine/a3/a32831eabaa634682490c2c28a24fd63cadf9178.svn-base
  72. 2 0
      org.zsl.hnust Maven Webapp/.svn/pristine/a5/a554d96e42f97db4812bcdcc0328378613610b2f.svn-base
  73. 43 0
      org.zsl.hnust Maven Webapp/.svn/pristine/a5/a56b4e139e51229af148bc26f24f52f8dad41744.svn-base
  74. 17 0
      org.zsl.hnust Maven Webapp/.svn/pristine/a9/a9678c243a3b3831164462c6997e47b70a1e0612.svn-base
  75. 141 0
      org.zsl.hnust Maven Webapp/.svn/pristine/ab/abf822fbaba8ef6ff29d6ef309f688d17702fef4.svn-base
  76. 69 0
      org.zsl.hnust Maven Webapp/.svn/pristine/ac/acf8c0b2610eb9a2f38fa58ef20bc6f59b886a0d.svn-base
  77. 246 0
      org.zsl.hnust Maven Webapp/.svn/pristine/af/af02437a9fde449a36cb289d6e6a4d60e3f3ad67.svn-base
  78. 322 0
      org.zsl.hnust Maven Webapp/.svn/pristine/af/af3f1b949c679e85dd730846370e6209a140e331.svn-base
  79. 80 0
      org.zsl.hnust Maven Webapp/.svn/pristine/b2/b2126fa83b0abcfbf83eee1b9fcf209cba9cf147.svn-base
  80. 440 0
      org.zsl.hnust Maven Webapp/.svn/pristine/b2/b26f35c9c9746b110c9465b4d5ee37119b4f9965.svn-base
  81. 215 0
      org.zsl.hnust Maven Webapp/.svn/pristine/b5/b58465df429ed2cc0d53a40455bcb5334abdaf53.svn-base
  82. 41 0
      org.zsl.hnust Maven Webapp/.svn/pristine/b5/b588ef21ad26320c0cbc3969fcd234aedb7dd37c.svn-base
  83. 7 0
      org.zsl.hnust Maven Webapp/.svn/pristine/b6/b6da8769df93e7d91571d636adc13132d4ee5e27.svn-base
  84. 21 0
      org.zsl.hnust Maven Webapp/.svn/pristine/b9/b980a9950f1360d548258814b50af0257668e45f.svn-base
  85. 52 0
      org.zsl.hnust Maven Webapp/.svn/pristine/bb/bb3e7d07fc6c91b95fc192976621c1791458896b.svn-base
  86. 82 0
      org.zsl.hnust Maven Webapp/.svn/pristine/be/be0943c7b4f5182cdfe97dbfac20232e9e4ed765.svn-base
  87. 587 0
      org.zsl.hnust Maven Webapp/.svn/pristine/bf/bfac73649594cb267445467a2992b557557e791b.svn-base
  88. 12 0
      org.zsl.hnust Maven Webapp/.svn/pristine/c0/c073c6b116c10f6c702eeda59a07b9ab0b762372.svn-base
  89. 二進制
      org.zsl.hnust Maven Webapp/.svn/pristine/c0/c0f35aea302386049005f2d4711846560ae35815.svn-base
  90. 84 0
      org.zsl.hnust Maven Webapp/.svn/pristine/c3/c3efd6183ac426c61c42e413492c57ac51b680f9.svn-base
  91. 66 0
      org.zsl.hnust Maven Webapp/.svn/pristine/c4/c4be9ee3e23fc63153a903ab8541f1ff66143198.svn-base
  92. 14 0
      org.zsl.hnust Maven Webapp/.svn/pristine/c5/c5746b15f9038b3e8a6dbc67c46d6f231b9e3c72.svn-base
  93. 11 0
      org.zsl.hnust Maven Webapp/.svn/pristine/c9/c9515c63adab717413ab13866031011518acff02.svn-base
  94. 454 0
      org.zsl.hnust Maven Webapp/.svn/pristine/ce/ce1c8d07c69e44d4a3fe67f656716935b71046fc.svn-base
  95. 19 0
      org.zsl.hnust Maven Webapp/.svn/pristine/cf/cfdf153fb60d6b9c57e78e050865be14ea6e4ad2.svn-base
  96. 2 0
      org.zsl.hnust Maven Webapp/.svn/pristine/d4/d484a833555f187f2c607a59d136f423ef3a0af4.svn-base
  97. 9 0
      org.zsl.hnust Maven Webapp/.svn/pristine/d7/d7a8c1eb6fdce48c5b2edd1a6e00f25564d8d062.svn-base
  98. 72 0
      org.zsl.hnust Maven Webapp/.svn/pristine/db/dbdcfa7cf38ad21e7e8fdf02911cf8c8bb555e9a.svn-base
  99. 14 0
      org.zsl.hnust Maven Webapp/.svn/pristine/df/dfc042295d2bd256d1fde44906d0148a2905a04a.svn-base
  100. 0 0
      org.zsl.hnust Maven Webapp/.svn/pristine/e1/e1c98c9a5a3f63c953793af95c212ca2189a60aa.svn-base

+ 32 - 0
org.zsl.hnust Maven Webapp/.classpath

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.7.0_17">
+		<attributes>
+			<attribute name="owner.project.facets" value="java"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

+ 33 - 0
org.zsl.hnust Maven Webapp/.myeclipse/profiler/Test.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+<entry key="app_preset_prof_preset_name">Test Launch Configuration</entry>
+<entry key="app_preset_prof_preset_filter_s"/>
+<entry key="app_preset_prof_preset_filter_p">com.synyi.edc.controller.*,
+com.synyi.edc.dao.*,
+com.synyi.edc.pojo.*,
+com.synyi.edc.service.*,
+com.synyi.edc.util.*,
+org.zsl.testmybatis.*</entry>
+<entry key="app_preset_prof_preset_alloc_p">10</entry>
+<entry key="app_preset_"/>
+<entry key="app_preset_prof_preset_samplingRefreshRate_s">1000</entry>
+<entry key="app_preset_prof_preset_stacks_p">false</entry>
+<entry key="app_preset_prof_preset_roots_p">com.synyi.edc.controller.**
+com.synyi.edc.dao.**
+com.synyi.edc.pojo.**
+com.synyi.edc.service.**
+com.synyi.edc.util.**
+org.zsl.testmybatis.**
+</entry>
+<entry key="profiler.settings.instrument.empty.methods">false</entry>
+<entry key="myeclipse.profiling.mode">0</entry>
+<entry key="profiler.settings.istrument.getter.setter.methods">false</entry>
+<entry key="app_preset_prof_preset_samplingRate_s">100</entry>
+<entry key="app_preset_prof_preset_filterMode_s">true</entry>
+<entry key="app_preset_prof_preset_selector"/>
+<entry key="app_preset_prof_preset_refreshRate_s">1000</entry>
+<entry key="app_preset_prof_preset_runnables_p">true</entry>
+<entry key="app_preset_prof_preset_filterMode_p">false</entry>
+<entry key="app_preset_prof_preset_memoryMode_p">true</entry>
+</properties>

+ 2 - 0
org.zsl.hnust Maven Webapp/.myumldata

@@ -0,0 +1,2 @@
+#Fri Jul 18 08:56:57 CST 2014
+CodeGenContainer=java.util.Vector

+ 52 - 0
org.zsl.hnust Maven Webapp/.project

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>synyi-service</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.m2e.core.maven2Builder</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.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
+	</natures>
+</projectDescription>

+ 12 - 0
org.zsl.hnust Maven Webapp/.settings/.jsdtscope

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/main/webapp"/>
+	<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>

文件差異過大導致無法顯示
+ 2 - 0
org.zsl.hnust Maven Webapp/.settings/com.genuitec.eclipse.j2eedt.core.prefs


+ 7 - 0
org.zsl.hnust Maven Webapp/.settings/org.eclipse.core.resources.prefs

@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+encoding//src/main/resources/jdbc.properties=UTF-8
+encoding//src/main/resources/log4j.properties=UTF-8
+encoding//src/main/resources/synyi.properties=UTF-8
+encoding//src/main/resources/\u63A5\u53E3\u5217\u8868.txt=UTF-8
+encoding//src/main/webapp/WEB-INF/jsp/index.jsp=UTF-8
+encoding/<project>=UTF-8

+ 8 - 0
org.zsl.hnust Maven Webapp/.settings/org.eclipse.jdt.core.prefs

@@ -0,0 +1,8 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.7

+ 4 - 0
org.zsl.hnust Maven Webapp/.settings/org.eclipse.m2e.core.prefs

@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1

+ 11 - 0
org.zsl.hnust Maven Webapp/.settings/org.eclipse.wst.common.component

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
+    <wb-module deploy-name="synyi-service">
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
+        <wb-resource deploy-path="/" source-path="/target/m2e-jee/web-resources"/>
+        <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/java"/>
+        <property name="java-output-path" value="/synyi-service/target/classes"/>
+        <property name="context-root" value="/synyi-service"/>
+    </wb-module>
+</project-modules>

+ 7 - 0
org.zsl.hnust Maven Webapp/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml

@@ -0,0 +1,7 @@
+<root>
+  <facet id="jst.jaxrs">
+    <node name="libprov">
+      <attribute name="provider-id" value="maven-lib-provider"/>
+    </node>
+  </facet>
+</root>

+ 10 - 0
org.zsl.hnust Maven Webapp/.settings/org.eclipse.wst.common.project.facet.core.xml

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

+ 1 - 0
org.zsl.hnust Maven Webapp/.settings/org.eclipse.wst.jsdt.ui.superType.container

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

+ 1 - 0
org.zsl.hnust Maven Webapp/.settings/org.eclipse.wst.jsdt.ui.superType.name

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

+ 2 - 0
org.zsl.hnust Maven Webapp/.settings/org.eclipse.wst.validation.prefs

@@ -0,0 +1,2 @@
+disabled=06target
+eclipse.preferences.version=1

+ 1 - 0
org.zsl.hnust Maven Webapp/.svn/entries

@@ -0,0 +1 @@
+12

+ 1 - 0
org.zsl.hnust Maven Webapp/.svn/format

@@ -0,0 +1 @@
+12

+ 12 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/03/03b465837fab0a2e739c5521ae6eefc35616dbc8.svn-base

@@ -0,0 +1,12 @@
+var langList = 
+[
+	{name:'en',	charset:'UTF-8'},
+	{name:'zh-cn',	charset:'UTF-8'},
+	{name:'zh-tw',	charset:'UTF-8'}
+];
+
+var skinList = 
+[
+	{name:'default',	charset:'UTF-8'},
+	{name:'whyGreen',	charset:'UTF-8'}
+];

+ 113 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/0a/0a3cea53896229977bef1f1eb916a45d9fcfe682.svn-base

@@ -0,0 +1,113 @@
+package com.synyi.edc.controller;
+
+import java.io.IOException;
+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.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import com.alibaba.fastjson.JSONObject;
+import com.synyi.edc.pojo.Parameter;
+import com.synyi.edc.pojo.User;
+import com.synyi.edc.service.IUserService;
+import com.synyi.edc.util.XmlUtils;
+
+@Controller
+@RequestMapping("/user")
+public class UserController {
+	@Resource
+	private IUserService userService;
+	
+	@RequestMapping("/showUser")
+	public String toIndex(HttpServletRequest request,Model model){
+		int userId = Integer.parseInt(request.getParameter("id"));
+		User user = this.userService.getUserById(userId);
+		model.addAttribute("user", user);
+		System.out.println(XmlUtils.getMapString("orgCode.oneOrg"));
+		return "showUser";
+	}
+	
+	@RequestMapping("/toIndex")
+	public String toJ(HttpServletRequest request,Model model){
+		int userId = Integer.parseInt(request.getParameter("id"));
+		User user = this.userService.getUserById(userId);
+		model.addAttribute("user", user);
+		return "index";
+	}
+	
+	@RequestMapping("/getAllOrg")
+	public String getAllOrg(HttpServletRequest request,Model model,HttpServletResponse res){
+		
+		Map map1 = new HashMap();
+		
+		map1.put("id", "488099744");
+		map1.put("name", "福州一院");
+		
+		Map map2 = new HashMap();
+		
+		map2.put("id", "48809974x");
+		map2.put("name", "福州儿院");
+		
+		Map map3 = new HashMap();
+		
+		map3.put("id", "488099743");
+		map3.put("name", "福州中医院");
+		
+		Map map4 = new HashMap();
+		
+		map4.put("id", "488099757");
+		map4.put("name", "福州传染病医院");
+		
+		List list = new ArrayList();
+		list.add(map1);
+		list.add(map2);
+		list.add(map3);
+		list.add(map4);
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		 res.setContentType("text/plain");
+		 res.setCharacterEncoding("utf-8");
+		 System.out.println(res);
+		 PrintWriter pw = null;
+		try {
+			pw = res.getWriter();
+			 pw.write(jsonString);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}finally{
+			 pw.flush();
+			 pw.close();
+		}
+		return null;
+	}
+	
+ 
+	
+	public void printJson(HttpServletResponse res,List list){
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		 res.setContentType("text/plain");
+		 res.setCharacterEncoding("utf-8");
+		 System.out.println(res);
+		 PrintWriter pw = null;
+		try {
+			pw = res.getWriter();
+			 pw.write(jsonString);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}finally{
+			 pw.flush();
+			 pw.close();
+		}
+	}
+}

+ 89 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/0b/0b54d57801017584d17c4a277191f875421f95ab.svn-base

@@ -0,0 +1,89 @@
+package com.synyi.edc.pojo;
+/**
+ * 参数传递和返回对象pojo
+ * @author wy
+ *
+ */
+public class Parameter {
+	
+	private static final long serialVersionUID = 1L;
+//	private String type; //条件类型
+//	private String beginDate;
+//	private String endDate;
+//	private String orgArray;
+//	private String orgType; //三种类型   1  全部医院 2 部分医院 3 某家医院
+	private String labName; //检验名称
+	
+	private String queryType; 
+	
+	private String eventData;
+	private String groupData;
+	
+	private String orgName;//医院名称
+	
+	private String itemId; //检查id
+	private String itemName; //检查名称
+	
+	
+	
+	public String getItemId() {
+		return itemId;
+	}
+	public void setItemId(String itemId) {
+		this.itemId = itemId;
+	}
+	public String getItemName() {
+		return itemName;
+	}
+	public void setItemName(String itemName) {
+		this.itemName = itemName;
+	}
+	public String getLabName() {
+		return labName;
+	}
+	public void setLabName(String labName) {
+		this.labName = labName;
+	}
+	public String getOrgName() {
+		return orgName;
+	}
+	public void setOrgName(String orgName) {
+		this.orgName = orgName;
+	}
+	public String getOrgCode() {
+		return orgCode;
+	}
+	public void setOrgCode(String orgCode) {
+		this.orgCode = orgCode;
+	}
+	private String orgCode;
+	
+	
+	public String getQueryType() {
+		return queryType;
+	}
+	public void setQueryType(String queryType) {
+		this.queryType = queryType;
+	}
+	public String getEventData() {
+		return eventData;
+	}
+	public void setEventData(String eventData) {
+		this.eventData = eventData;
+	}
+	public String getGroupData() {
+		return groupData;
+	}
+	public void setGroupData(String groupData) {
+		this.groupData = groupData;
+	}
+	@Override
+	public String toString() {
+		return "Parameter [queryType=" + queryType + ", eventData=" + eventData
+				+ ", groupData=" + groupData + "]";
+	}
+	
+ 
+ 
+
+}

+ 21 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/0c/0cc22dc5c0da169c7e00cf8478e26343daa2ab45.svn-base

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.synyi.edc.dao.ISqlbuilderDao" >
+  <resultMap id="BaseResultMap" type="com.synyi.edc.pojo.Parameter" >
+    <result column="org_code" property="orgCode" jdbcType="VARCHAR" />
+    <result column="org_name" property="orgName" jdbcType="VARCHAR" />
+    <result column="item_id" property="itemId" jdbcType="VARCHAR" />
+    <result column="item_name" property="itemName" jdbcType="VARCHAR" />
+  </resultMap>
+  <select id="getAllOrgInfo" resultMap="BaseResultMap"  >
+    select 
+    org_code,org_name from mdm.organization
+  </select>
+  <select id="getAllLabInfo" resultMap="BaseResultMap"  parameterType="com.synyi.edc.pojo.Parameter">
+    select item_id,item_name from mdm.lis_item where code_sys_id =197 
+   	<if test="labName != null and labName != ''">
+   		and item_name like '%${labName}%'  
+   	</if>
+  </select>
+  
+</mapper>

+ 587 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/0f/0f54b0fdb5d37e83731df48c6f376bbd97ff1b1b.svn-base

@@ -0,0 +1,587 @@
+package com.synyi.edc.util;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.util.CollectionUtils;
+
+import com.alibaba.fastjson.JSON;
+
+public class SqlBuilderUtils {
+
+	/**
+	 * sql生成分组方法
+	 * @param jsonStr
+	 * @param stepStr
+	 * @return
+	 */
+	public static String genGroupSql(String jsonStr,String stepStr){
+		Map<String,Map> temp1 = null;  //入排条件1
+		Map temp2 = null;  //入排条件2
+		List<Map> lis = (List)JSON.parse(jsonStr);
+		if(!CollectionUtils.isEmpty(lis)){
+			temp1 = lis.get(0);
+			if(lis.size()>1){
+				temp2 = lis.get(1);
+			}
+		}
+		
+		System.out.println(stepStr);
+		Map stepMap = (Map)JSON.parse(stepStr);;
+		
+		int maxValue = 0;
+		int minValue = 0;
+		int interval = 0;
+		
+		try{
+			if(StringUtils.isNotBlank((String)stepMap.get("maxValue"))){
+				maxValue = Integer.parseInt((String)stepMap.get("maxValue"));
+			}
+			if(StringUtils.isNotBlank((String)stepMap.get("minValue"))){
+				minValue = Integer.parseInt((String)stepMap.get("minValue"));
+			}
+			if(StringUtils.isNotBlank((String)stepMap.get("interval"))){
+				interval = Integer.parseInt((String)stepMap.get("interval"));
+			}
+		}catch(Exception e){}
+		
+		String groupType = stepMap.get("groupType")==null?"":(String)stepMap.get("groupType");
+		String event1 = (String)temp1.get("事件").get("event_type");
+		String event2 = temp2!=null?(String)((Map)temp2.get("事件")).get("event_type"):"";
+		
+		String returnSql = "";
+		switch(event1){
+			case "diagnosis":returnSql = "with temp1 as ("+event_diagnose(temp1,stepMap)+")";break;
+			case "laboratoryExamination":returnSql = "with temp1 as ("+event_lab(temp1,stepMap)+")";break;
+			case "drugUse":returnSql = "with temp1 as ("+event_drug(temp1,stepMap)+")";break;
+			case "operation":returnSql = "with temp1 as ("+event_lab(temp1,stepMap)+")";break;
+		}
+		
+		
+		if(!CollectionUtils.isEmpty(temp2)){
+			switch(event2){
+				case "diagnosis":returnSql += ", <br/> temp2 as ("+event_diagnose(temp2,stepMap)+")";break;
+				case "laboratoryExamination":returnSql += ", <br/> temp2 as ("+event_lab(temp2,stepMap)+")";break;
+				case "drugUse":returnSql += ", <br/> temp2 as ("+event_drug(temp2,stepMap)+")";break;
+				case "operation":returnSql += ", <br/> temp2 as ("+event_lab(temp2,stepMap)+")";break;
+			}
+			
+			String rel = (String)temp2.get("关系");
+			if("or".equals(rel)){
+				returnSql += " <br/> select ";
+				
+				if(StringUtils.isNotBlank(groupType)){
+					switch((String)stepMap.get("groupType")){
+						case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval)+" 年龄段,";break;
+						case "年份":returnSql += "to_char(event_time,'yyyy') 年份,";break;
+						case "医院":returnSql += "t.org_code,org.org_name,";break;
+						case "就诊类型":returnSql += "visit_type,";break;
+						case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end 性别,";break;
+					}
+				}
+				
+				if("patientsNumber".equals((String)stepMap.get("queryType"))){
+					returnSql += "count(distinct t.patient_id) 人数";
+				}else{
+					returnSql += "count(t.patient_id) 人次";
+				}
+				returnSql += " <br/> from (select * from temp1 union all  select * from temp2 )t ";
+				if("性别".equals((String)stepMap.get("groupType"))||"年龄段".equals((String)stepMap.get("groupType"))){
+					returnSql += " join patient.patient_master_info c on t.patient_id=c.patient_id <br/>";
+				}
+				if("医院".equals((String)stepMap.get("groupType"))){
+					returnSql += " join mdm.organization org on t.org_code=org.org_code  <br/>";
+				}
+				if(StringUtils.isNotBlank(groupType)){
+					returnSql += " group by ";
+					switch((String)stepMap.get("groupType")){
+						case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval);break;
+						case "年份":returnSql += "to_char(event_time,'yyyy') ";break;
+						case "医院":returnSql += "t.org_code,org.org_name";break;
+						case "就诊类型":returnSql += "visit_type";break;
+						case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end";break;
+					}
+				}
+			}else if("and".equals(rel)){
+				returnSql += "select count(1) 人数 from (select distinct temp1.patient_id from temp1)a join (select distinct temp2.patient_id from temp2 ) b on a.patient_id=b.patient_id";
+			}
+		}else{//只有temp1的情况
+			
+			returnSql += "<br/> select ";
+			if(StringUtils.isNotBlank(groupType)){
+				switch((String)stepMap.get("groupType")){
+					case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval)+" 年龄段,";break;
+					case "年份":returnSql += "to_char(diag_time,'yyyy') 年份,";break;
+					case "医院":returnSql += "temp1.org_code,org.org_name,";break;
+					case "就诊类型":returnSql += "visit_type,";break;
+					case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end 性别,<br/>";break;
+				}
+			}
+			if("patientsNumber".equals((String)stepMap.get("queryType"))){
+				returnSql += "count(distinct temp1.patient_id) 人数";
+			}else{  //visitsNumber 人次
+				returnSql += "count(temp1.patient_id) 人次";
+			}
+			returnSql += " from temp1 ";
+			
+			if("性别".equals((String)stepMap.get("groupType"))||"年龄段".equals((String)stepMap.get("groupType"))){
+				returnSql += " join patient.patient_master_info c on temp1.patient_id=c.patient_id <br/> ";
+			}
+			if("医院".equals((String)stepMap.get("groupType"))){
+				returnSql += " join mdm.organization org on temp1.org_code=org.org_code  <br/>";
+			}
+			
+			if(StringUtils.isNotBlank(groupType)){
+				returnSql += "group by ";
+				
+				switch((String)stepMap.get("groupType")){
+					case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval);break;
+					case "年份":returnSql += "to_char(diag_time,'yyyy') ";break;
+					case "医院":returnSql += "temp1.org_code,org.org_name";break;
+					case "就诊类型":returnSql += "visit_type";break;
+					case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end";break;
+				}
+			}
+		}
+		return returnSql;
+	}
+	/**
+	 * 按照年龄段分组方法
+	 * @param min  最小年龄
+	 * @param max  最大年龄
+	 * @param interval  年龄间隔
+	 * @return
+	 */
+	  public static String generateAgePart(int min,int max,int interval){
+	    	String str = " case";
+	    	
+	    	int temp = min;
+	    	for(int i=min;i<max;i+=interval){
+	    		if(i>min){
+	    			//System.out.println(temp+":"+i);
+	    			if(temp==min){
+	    				str += " when extract(year from age(diag_time,c.birth_date))  >="+temp +" and extract(year from age(diag_time,c.birth_date)) <"+i+" then '"+temp+"到"+i+"'<br/>";
+//	    			
+	    				}else if(i==max){
+//	    				str += " when extract(year from age(temp1.diag_time,c.birth_date)) <="+max+" then '"+temp+"到"+max+"' end  ";
+	    			}else{
+	    				str += " when extract(year from age(diag_time,c.birth_date)) <"+i+" then '"+temp+"到"+i+"'<br/>";
+	    			}	
+	    			temp = i;
+	    		}
+	    	}
+	    	str += " when extract(year from age(diag_time,c.birth_date)) <="+max+" then '"+temp+"到"+max+"' end <br/> ";
+	    //	System.out.println(str);
+	    	return str;
+	    }
+	/**
+	 * 按照事件  为  诊断 的sql语句生成方法
+	 * @param temp1
+	 * @param groupMap
+	 * @return
+	 */
+	  public static String event_diagnose(Map<String,Map> temp1,Map groupMap){
+	    	/*{"事件":{"diag_standard":"I21,I22,I23","event_type":"诊断"},"医院":{"org_code":"9983838x,111999441,2224589985,112445580"},
+			 * "就诊类型":{"visit_type":"门诊"},"时间":{"time_from":"绝对时间:2017-01-01","time_to":"绝对时间:2017-01-10"}}
+			 * 
+			 * {\"事件\":{\"diag_standard\":[\"I220\",\"I230\"],\"diag_primitive\":[\"I220\",\"I230\"],\"event_type\":\"diagnosis\"},
+			 * \"医院\":{\"org_code\":[\"111111\",\"222222\"]},\"就诊类型\":{\"visit_type\":\"hospitalization\"},\"时间\":{\"time_from\":\"2018-7-2\",\"time_to\":\"2018-8-12\"},
+			 * \"关系\":\"or\"}
+			 * 
+			 * */
+			String resultSql = "";
+			String condition = "";
+			//String eventType = "";
+			
+			for(String str:temp1.keySet()){
+				if("事件".equals(str)){  //"事件":{"diag_standard":"I21,I22,I23","event_type":"诊断"}
+					Map temp = temp1.get(str);
+					//if(temp.get("event_type").equals("diagnosis")){
+						//eventType = (String)temp.get("event_type");
+						//,diag_time,org_code,case when visit_type='O' then '门诊' when visit_type='I' then '住院' when is_emergency=true then '急诊' else '未知' end visit_type
+						resultSql += " select * from(select a.patient_id";
+								String groupType = groupMap.get("groupType")==null?"":(String)groupMap.get("groupType");
+								if(StringUtils.isNotBlank(groupType)){//"{\"groupType\":\"医院\",\"interval\":\"\",\"maxValue\":\"\",\"minValue\":\"\"}";
+									switch(groupType){
+										case "年龄段":resultSql += ",coalesce(a.diag_time,b.visit_time) diag_time";break;
+										case "年份":resultSql += ",coalesce(a.diag_time,b.visit_time) diag_time";break;
+										case "医院":resultSql += ",a.org_code";break;
+										case "就诊类型":resultSql += ",case when b.visit_type='O' then '门诊' when b.visit_type='I' then '住院' when is_emergency=true then '急诊' else '未知' end visit_type";break;
+										case "性别":resultSql += "";break;
+									}
+								}
+								
+								resultSql += ",jsonb_array_elements(diag_sycode_set) "+
+										"as sycode  <br/> from diag.patient_diagnose a ";
+								
+								String time_from = temp1.get("时间")==null?"":(String)temp1.get("时间").get("time_from");
+								String visit_type =  temp1.get("就诊类型")==null?"":(String)temp1.get("就诊类型").get("visit_type");
+								if(StringUtils.isNotBlank(time_from)||StringUtils.isNotBlank(visit_type)){
+									resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";
+								}else{
+									if(StringUtils.isNotBlank(groupType)){
+										switch((String)groupMap.get("groupType")){
+											case "年龄段":resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";break;
+											case "年份":resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";break;
+											case "就诊类型":resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";break;
+											//case "性别":resultSql += "";break;
+										}
+									}
+								}									
+								resultSql += "where 1=1 $condition$ ) t1  <br/> ";
+						
+						List<String> diag_list = (List)temp.get("diag_standard");
+						List<String> diag_primitive = (List)temp.get("diag_primitive");
+						if(diag_list!=null&&diag_list.size()>0){
+							resultSql += " join (select diag_code,diag_code2,diag_name from mdm.diagnose a where a.code_sys_id=30 <br/> ";
+							
+							if(diag_list.size()>1){
+								for(int i = 0;i<diag_list.size();i++){
+									String diag_c = diag_list.get(i);
+									if(i==0){
+										resultSql += " and ( diag_code2 like '"+diag_c+"%'";
+									}else if(i==diag_list.size()-1){
+										resultSql += " or diag_code2 like '"+diag_c+"%')";
+									}else{
+										resultSql += " or diag_code2 like '"+diag_c+"%'";
+									}
+								}
+							}else{
+								resultSql += " and diag_code2 like '"+diag_list.get(0)+"%'";
+							}
+							resultSql += " <br/> )t2 on replace(t1.sycode::varchar(50),'\"','')  =t2.diag_code";
+						}else if(diag_primitive!=null&&diag_primitive.size()>0){
+							
+							resultSql += " join (select diag_code,diag_code2,diag_name from mdm.diagnose a where a.code_sys_id=30 <br/> ";
+							
+							if(diag_primitive.size()>1){
+								for(int i = 0;i<diag_primitive.size();i++){
+									String diag_c = diag_primitive.get(i);
+									if(i==0){
+										resultSql += " and ( diag_name like '%"+diag_c+"%'";
+									}else if(i==diag_primitive.size()-1){
+										resultSql += " or diag_name like '%"+diag_c+"%')";
+									}else{
+										resultSql += " or diag_name like '%"+diag_c+"%'";
+									}
+								}
+							}else{
+								resultSql += " and diag_name like '%"+diag_primitive.get(0)+"%'";
+							}
+							resultSql += " <br/> )t2 on replace(t1.sycode::varchar(50),'\"','')  =t2.diag_code";
+						}
+					//}
+				}else if("医院".equals(str)){ //"医院":{"org_code":"9983838x,111999441,2224589985,112445580"}
+					Map temp = temp1.get(str);
+					try{
+						List<String> org_list = (List)temp.get("org_code");
+						if(!CollectionUtils.isEmpty(org_list)){
+							if(org_list.size()>1){
+								for(int i = 0;i<org_list.size();i++){
+									String org_code = org_list.get(i);
+									if(i==0){
+										condition += " and  a.org_code in ('"+org_code+"',";
+									}else if(i==org_list.size()-1){
+										condition += "'"+org_code+"')";
+									}else{
+										condition += "'"+org_code+"',";
+									}
+								}
+							}else{
+								condition += " and a.org_code = '"+org_list.get(0)+"'";
+							}
+						}
+					}catch(java.lang.ClassCastException e){}
+					
+				}else if("时间".equals(str)){//"时间":{"time_from":"绝对时间:2017-01-01","time_to":"绝对时间:2017-01-10","time_type":"诊断时间"}
+					Map temp = temp1.get(str);
+					String time_from = (String)temp.get("time_from");
+					String time_to = (String)temp.get("time_to"); 
+					condition += " <br/> ";
+					if(StringUtils.isNoneBlank(time_from)&&StringUtils.isNoneBlank(time_to)){
+						condition += " and coalesce(a.diag_time,b.visit_time) between '"+time_from +"' and '"+time_to+"'";
+					}
+					
+//					switch(eventType){
+//						case "诊断":condition+= "and coalesce(a.diag_time,b.visit_time) ";break;
+//						case "检验时间":condition+= "and report_time ";break;
+//						case "用药时间":condition+= "and drug_time ";break;
+//						case "手术时间":condition+= "and oper_time ";break;
+//					}
+				}else if("就诊类型".equals(str)){//"就诊类型":{"visit_type":"门诊"}
+					Map temp = temp1.get(str);
+					String visit_type = (String)temp.get("visit_type");
+					condition += " <br/> ";
+					switch(visit_type){
+						case "outpat":condition+= " and b.visit_type='O' ";break;
+						case "inpat":condition+= " and b.visit_type='I' ";break;
+						case "emergency":condition+= " and b.is_emergency=true ";break;
+					}
+				}
+			}
+			
+			resultSql = resultSql.replace("$condition$", condition);
+			return resultSql;
+	    }
+	  public static String event_lab(Map<String,Map> temp1,Map groupMap){
+	    	/*{"事件":{"diag_standard":"I21,I22,I23","event_type":"诊断"},"医院":{"org_code":"9983838x,111999441,2224589985,112445580"},
+			 * "就诊类型":{"visit_type":"门诊"},"时间":{"time_from":"绝对时间:2017-01-01","time_to":"绝对时间:2017-01-10"}}
+			 * 
+			 * {\"事件\":{\"diag_standard\":[\"I220\",\"I230\"],\"diag_primitive\":[\"I220\",\"I230\"],\"event_type\":\"diagnosis\"},
+			 * \"医院\":{\"org_code\":[\"111111\",\"222222\"]},\"就诊类型\":{\"visit_type\":\"hospitalization\"},\"时间\":{\"time_from\":\"2018-7-2\",\"time_to\":\"2018-8-12\"},
+			 * \"关系\":\"or\"}
+			 * 
+			 * */
+			String resultSql = "";
+			String condition = "";
+			//String eventType = "";
+			
+			for(String str:temp1.keySet()){
+				if("事件".equals(str)){  //"事件":{"diag_standard":"I21,I22,I23","event_type":"诊断"}
+					Map temp = temp1.get(str);
+					//if(temp.get("event_type").equals("diagnosis")){
+						//eventType = (String)temp.get("event_type");
+						//,diag_time,org_code,case when visit_type='O' then '门诊' when visit_type='I' then '住院' when is_emergency=true then '急诊' else '未知' end visit_type
+						resultSql += " select d.patient_id";
+								String groupType = groupMap.get("groupType")==null?"":(String)groupMap.get("groupType");
+								if(StringUtils.isNotBlank(groupType)){//"{\"groupType\":\"医院\",\"interval\":\"\",\"maxValue\":\"\",\"minValue\":\"\"}";
+									switch(groupType){
+										case "年龄段":resultSql += ",d.report_time event_time";break;
+										case "年份":resultSql += ",d.report_time event_time";break;
+										case "医院":resultSql += ",d.org_code";break;
+										case "就诊类型":resultSql += ",case when e.visit_type='O' then '门诊' when e.visit_type='I' then '住院' when is_emergency=true then '急诊' else '未知' end visit_type";break;
+										case "性别":resultSql += "";break;
+									}
+								}
+								
+								resultSql += " from lab.lab_report_result a join  mdm.mdm_map b on a.test_item_id=b.source_id"+
+												" <br/> join mdm.lis_item c on  b.map_id=c.item_id"+ 
+												" join lab.lab_report d on a.report_id=d.report_id ";
+								
+								String visit_type =  temp1.get("就诊类型")==null?"":(String)temp1.get("就诊类型").get("visit_type");
+								if(StringUtils.isNotBlank(visit_type)){
+									resultSql += " left join visit.visit_record e  <br/> on d.visit_id = e.visit_id ";
+								}								
+								resultSql += " where b.md_type = 'lis_item' and c.code_sys_id =197  $condition$  ";
+						
+			//{\"lab_standard\":[\"220\",\"230\"],\"character_result\":[\"偏高\",\"异常\"],\"exception_symbol\":[\"1\",\"2\"],\"number_result\":[\">=1\"],\"event_type\":\"lab\"}
+						List<String> lab_list = (List)temp.get("lab_standard");
+						List<String> character_result = (List)temp.get("character_result");
+						List<String> exception_symbol = (List)temp.get("exception_symbol");
+						List<String> number_result = (List)temp.get("number_result");
+						if(lab_list!=null&&lab_list.size()>0){
+							resultSql += " and c.item_id in (";
+							String tempLab = "";
+							for(String lab:lab_list){
+								tempLab += "'"+lab+"',";
+							}
+							resultSql += tempLab.substring(0,tempLab.length()-1)+")";
+							
+						}
+						if(character_result!=null&&character_result.size()>0){
+							resultSql += " and a.text_value in (";
+							String tempLab = "";
+							for(String lab:character_result){
+								tempLab += "'"+lab+"',";
+							}
+							resultSql += tempLab.substring(0,tempLab.length()-1)+")";
+						}
+						if(exception_symbol!=null&&exception_symbol.size()>0){
+							resultSql += " and a.abnormal_flag_name in (";
+							String tempLab = "";
+							for(String lab:exception_symbol){
+								tempLab += "'"+lab+"',";
+							}
+							resultSql += tempLab.substring(0,tempLab.length()-1)+")";
+						}
+						if(number_result!=null&&number_result.size()>0){
+							resultSql += " and a.numerical_value "+number_result.get(0);
+						}
+					//}
+				}else if("医院".equals(str)){ //"医院":{"org_code":"9983838x,111999441,2224589985,112445580"}
+					Map temp = temp1.get(str);
+					try{
+						List<String> org_list = (List)temp.get("org_code");
+						if(!CollectionUtils.isEmpty(org_list)){
+							if(org_list.size()>1){
+								for(int i = 0;i<org_list.size();i++){
+									String org_code = org_list.get(i);
+									if(i==0){
+										condition += " and  d.org_code in ('"+org_code+"',";
+									}else if(i==org_list.size()-1){
+										condition += "'"+org_code+"')";
+									}else{
+										condition += "'"+org_code+"',";
+									}
+								}
+							}else{
+								condition += " and d.org_code = '"+org_list.get(0)+"'";
+							}
+						}
+					}catch(java.lang.ClassCastException e){}
+					
+				}else if("时间".equals(str)){//"时间":{"time_from":"绝对时间:2017-01-01","time_to":"绝对时间:2017-01-10","time_type":"诊断时间"}
+					Map temp = temp1.get(str);
+					String time_from = (String)temp.get("time_from");
+					String time_to = (String)temp.get("time_to");
+					condition += " <br/> ";
+					if(StringUtils.isNoneBlank(time_from)&&StringUtils.isNoneBlank(time_to)){
+						condition += " and d.report_time between '"+time_from +"' and '"+time_to+"'";
+					}
+					
+//					switch(eventType){
+//						case "诊断":condition+= "and coalesce(a.diag_time,b.visit_time) ";break;
+//						case "检验时间":condition+= "and report_time ";break;
+//						case "用药时间":condition+= "and drug_time ";break;
+//						case "手术时间":condition+= "and oper_time ";break;
+//					}
+				}else if("就诊类型".equals(str)){//"就诊类型":{"visit_type":"门诊"}
+					Map temp = temp1.get(str);
+					String visit_type = (String)temp.get("visit_type");
+					condition += " <br/> ";
+					switch(visit_type){
+						case "outpat":condition+= " and e.visit_type='O' ";break;
+						case "inpat":condition+= " and e.visit_type='I' ";break;
+						case "emergency":condition+= " and e.is_emergency=true ";break;
+					}
+				}
+			}
+			
+			resultSql = resultSql.replace("$condition$", condition);
+			return resultSql;
+	    }
+	  
+	  public static String event_drug(Map<String,Map> temp1,Map groupMap){
+	    	/*{\"事件\":{\"drug_standard\":[\"220\",\"230\"],\"drug_category\":[\"330\",\"543\"],\"event_type\":\"drug\"},\"医院\":{\"org_code\":[\"111111\",\"222222\"]},
+	    	 * \"就诊类型\":{\"visit_type\":\"inpat\"},\"时间\":{\"time_from\":\"2018-7-2\",\"time_to\":\"2018-8-12\"},\"关系\":\"or\"},
+			 * 
+			 * */
+			String resultSql1 = "";
+			String resultSql2 = "";
+			String condition1 = "";
+			String condition2 = "";
+			//String eventType = "";
+			
+			for(String str:temp1.keySet()){
+				if("事件".equals(str)){  //"事件":{"diag_standard":"I21,I22,I23","event_type":"诊断"}
+					Map temp = temp1.get(str);
+					//if(temp.get("event_type").equals("diagnosis")){
+						//eventType = (String)temp.get("event_type");
+						//,diag_time,org_code,case when visit_type='O' then '门诊' when visit_type='I' then '住院' when is_emergency=true then '急诊' else '未知' end visit_type
+						resultSql1 += " select t1.patient_id";
+						resultSql2 += " select t1.patient_id";
+								String groupType = groupMap.get("groupType")==null?"":(String)groupMap.get("groupType");
+								if(StringUtils.isNotBlank(groupType)){//"{\"groupType\":\"医院\",\"interval\":\"\",\"maxValue\":\"\",\"minValue\":\"\"}";
+									switch(groupType){
+										case "年龄段":resultSql1 += ",t1.begin_time event_time";resultSql2 += " , t4.recipe_time event_time";break;
+										case "年份":resultSql1 += ",t1.begin_time event_time";resultSql2 += ",t4.recipe_time event_time";break;
+										case "医院":resultSql1 += ",t1.org_code";resultSql2 += ",t1.org_code";break;
+										case "就诊类型":resultSql1 += ",'住院' visit_type";resultSql2 += ",'门诊' visit_type";break;
+										case "性别":resultSql1 += "";break;
+									}
+								}
+								
+								List<String> drug_category = (List)temp.get("drug_category");
+								
+								resultSql1 += " FROM orders.inpat_drug_order t1  join mdm.mdm_map t2 on t1.drug_id=t2.source_id "+
+												" <br/> join mdm.drug t3 on t2.map_id=t3.drug_id";
+								
+								resultSql2 += " FROM orders.outpat_recipe_detail t1 join mdm.mdm_map t2 on t1.drug_id=t2.source_id  "+
+										" <br/> join mdm.drug t3 on t2.map_id=t3.drug_id join orders.outpat_recipe t4 on t1.recipe_id=t4.recipe_id ";
+								
+								if(drug_category!=null&&drug_category.size()>0){
+									
+									String tempLab = " in (";
+									for(String cat:drug_category){
+										tempLab += "'"+cat+"',";
+									}
+									tempLab = tempLab.substring(0,tempLab.length()-1)+")";
+									
+									resultSql1 +=" join ( <br/> with RECURSIVE  temp1 as (  select id from drug_new where id "+tempLab+" union ALL "+
+											" select d.id from drug_new d ,temp1 where d.parent=temp1.id )select * from temp1) ca <br/> on  t3.drug_code=ca.id";
+									resultSql2 +=" join ( <br/> with RECURSIVE  temp1 as (  select id from drug_new where id "+tempLab+" union ALL "+
+											" select d.id from drug_new d ,temp1 where d.parent=temp1.id )select * from temp1) ca <br/> on  t3.drug_code=ca.id";
+								}
+								
+								resultSql1 += " where t2.md_type='drug' and t3.code_sys_id = 51  $condition$  <br/> ";
+								resultSql2 += " where t2.md_type='drug' and t3.code_sys_id = 51  $condition$  <br/> ";
+						
+			//{\"lab_standard\":[\"220\",\"230\"],\"character_result\":[\"偏高\",\"异常\"],\"exception_symbol\":[\"1\",\"2\"],\"number_result\":[\">=1\"],\"event_type\":\"lab\"}
+						List<String> lab_list = (List)temp.get("drug_standard");
+						
+						if(lab_list!=null&&lab_list.size()>0){
+							resultSql1 += " and t3.drug_id in (";
+							resultSql2 += " and t3.drug_id in (";
+							String tempLab = "";
+							for(String lab:lab_list){
+								tempLab += "'"+lab+"',";
+							}
+							resultSql1 += tempLab.substring(0,tempLab.length()-1)+")";
+							resultSql2 += tempLab.substring(0,tempLab.length()-1)+")";
+						}
+						
+						
+					//}
+				}else if("医院".equals(str)){ //"医院":{"org_code":"9983838x,111999441,2224589985,112445580"}
+					Map temp = temp1.get(str);
+					try{
+						List<String> org_list = (List)temp.get("org_code");
+						if(!CollectionUtils.isEmpty(org_list)){
+							if(org_list.size()>1){
+								for(int i = 0;i<org_list.size();i++){
+									String org_code = org_list.get(i);
+									if(i==0){
+										condition1 += " and  t1.org_code in ('"+org_code+"',";
+										condition2 += " and  t1.org_code in ('"+org_code+"',";
+									}else if(i==org_list.size()-1){
+										condition1 += "'"+org_code+"')";
+										condition2 += "'"+org_code+"')";
+									}else{
+										condition1 += "'"+org_code+"',";
+										condition2 += "'"+org_code+"',";
+									}
+								}
+							}else{
+								condition1 += " and t1.org_code = '"+org_list.get(0)+"'";
+								condition2 += " and t1.org_code = '"+org_list.get(0)+"'";
+							}
+						}
+					}catch(java.lang.ClassCastException e){}
+					
+				}else if("时间".equals(str)){//"时间":{"time_from":"绝对时间:2017-01-01","time_to":"绝对时间:2017-01-10","time_type":"诊断时间"}
+					Map temp = temp1.get(str);
+					String time_from = (String)temp.get("time_from");
+					String time_to = (String)temp.get("time_to");
+					if(StringUtils.isNoneBlank(time_from)&&StringUtils.isNoneBlank(time_to)){
+						condition1 += " and t1.begin_time between '"+time_from +"' and '"+time_to+"'";
+						condition2 += " and t4.recipe_time between '"+time_from +"' and '"+time_to+"'";
+					}
+					
+//					switch(eventType){
+//						case "诊断":condition+= "and coalesce(a.diag_time,b.visit_time) ";break;
+//						case "检验时间":condition+= "and report_time ";break;
+//						case "用药时间":condition+= "and drug_time ";break;
+//						case "手术时间":condition+= "and oper_time ";break;
+//					}
+				}
+			}
+			
+			resultSql1 = resultSql1.replace("$condition$", condition1);
+			resultSql2 = resultSql2.replace("$condition$", condition2);
+			
+			String returnSql = "";
+			Map temp = temp1.get("就诊类型");
+			String visit_type = (String)temp.get("visit_type");
+			if("inpat".equals(visit_type)){
+				returnSql = resultSql1;
+			}else if("outpat".equals(visit_type)){
+				returnSql+= resultSql2;
+			}else{
+				returnSql+= resultSql1 +" union all "+ resultSql2;
+			}
+			
+			
+			return returnSql;
+	    }
+}

+ 61 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/13/13dabb693206d5f9332d3fb421f49deee0d00d4b.svn-base

@@ -0,0 +1,61 @@
+package com.synyi.edc.service;
+
+import java.util.List;
+
+import com.synyi.edc.pojo.Parameter;
+/**
+ * 查询数据库接口
+ * @author wy
+ *
+ */
+public interface ISqlbuilderService {
+	/**
+	 * 获取所有的医院列表
+	 */
+	public List<Parameter> getAllOrgInfo();
+	/**
+	 * 获取检验名称
+	 */
+	public List<Parameter> getAllLabInfo(Parameter labname);
+	/**
+     * 获取检验结果,文本结果和数字结果等suggestion列表
+     * @param par
+     * @return
+     */
+    public List<Parameter> getSuggestionList(Parameter par);
+    /**
+     * 根据药品名称 模糊穷举所有药品名称
+     * @param par 参数传递为 labName
+     * @return
+     */
+    public List<Parameter> getAllDrugInfo(Parameter par);
+    /**
+     * 获取所有的药品大类名称
+     * @return
+     */
+	public List<Parameter> getAllDrugCategory();
+	/**
+	 * 根据药品名称获取模糊匹配的suggestion
+	 * @param param
+	 * @return
+	 */
+	public List<Parameter> getSuggestionByDrug(Parameter param);
+	/**
+	 * 根据药品父节点名称获取子节点药品名称
+	 * @param param
+	 * @return
+	 */
+	public List<Parameter> getChildDrug(Parameter param);
+	/**
+	 * 递归通过子类别将所有父类药品列出来
+	 * @param param
+	 * @return
+	 */
+	public List<Parameter> getParentPath(Parameter param);
+	/**
+	 * 递归通过子类别将所有父类药品列出来并且所有父类的同类列出来
+	 * @param param
+	 * @return
+	 */
+	public List<Parameter> getAllDrugPathInfo(Parameter param);
+}

+ 14 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/1c/1c7f99ed273a6d10ccf189fb7b286d0082fe94aa.svn-base

@@ -0,0 +1,14 @@
+sql语句生成接口
+http://192.168.1.211:8080/synyi-service/api/sqlbuilder/generate?eventData=&groupData=&queryType=
+
+获取所有医院列表接口  
+http://192.168.1.211:8080/synyi-service/sqlbuilder/getAllOrg
+
+查询检验名称接口 返回穷举模糊匹配检验名称   POST 形式
+http://192.168.1.211:8080/synyi-service/sqlbuilder/getAlllabInfo?labName=
+
+获取检验结果,文本结果和数字结果等suggestion列表   POST 形式
+http://192.168.1.211:8080/synyi-service/sqlbuilder/getSuggestionList?itemId='1','2','3','4'
+
+查询药品名称接口 返回穷举模糊匹配药品名称   POST 形式
+http://192.168.1.211:8080/synyi-service/sqlbuilder/getAllDrugInfo?drugName=c

文件差異過大導致無法顯示
+ 2 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/1d/1db27de96315af9ea481a0dfc3972c8b79103722.svn-base


+ 10 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/1e/1e59675aee8dc721e6f150ad1ee27d6a189305ca.svn-base

@@ -0,0 +1,10 @@
+.Wdate{
+	border:#999 1px solid;
+	height:20px;
+	background:#fff url(datePicker.gif) no-repeat right;
+}
+
+.WdateFmtErr{
+	font-weight:bold;
+	color:red;
+}

+ 388 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/1e/1e9870924835e3c1f6defc3c4da8c9fa46036733.svn-base

@@ -0,0 +1,388 @@
+package com.synyi.edc.controller;
+
+import java.io.IOException;
+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.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.synyi.edc.pojo.Parameter;
+import com.synyi.edc.service.IUserService;
+
+@Controller
+@RequestMapping("/sqlbuilder")
+public class SqlbuilderController {
+	@Resource
+	private IUserService userService;
+	
+	@RequestMapping("/toIndex")
+	public String toJ(HttpServletRequest request,Model model){
+//		int userId = Integer.parseInt(request.getParameter("id"));
+//		User user = this.userService.getUserById(userId);
+//		model.addAttribute("user", user);
+		return "index";
+	}
+	
+	@RequestMapping("/generate")
+	public String toIndex(HttpServletRequest request,Model model,Parameter param,HttpServletResponse res){
+		System.out.println(param);
+		System.out.println();
+		String jsonStr = param.getEventData();
+    	String stepStr = param.getGroupData();
+    	
+    	String returnSql = genGroupSql(jsonStr,stepStr);
+		
+		System.out.println(returnSql);
+		
+		 printJson(res,returnSql);
+		 return null;
+	}
+	
+	public static String genGroupSql(String jsonStr,String stepStr){
+		Map<String,Map> temp1 = null;  //入排条件1
+		Map temp2 = null;  //入排条件2
+		List<Map> lis = (List)JSON.parse(jsonStr);
+		if(!CollectionUtils.isEmpty(lis)){
+			temp1 = lis.get(0);
+			if(lis.size()>1){
+				temp2 = lis.get(1);
+			}
+		}
+		
+		System.out.println(stepStr);
+		Map stepMap = (Map)JSON.parse(stepStr);;
+		
+		int maxValue = 0;
+		int minValue = 0;
+		int interval = 0;
+		
+		try{
+			if(StringUtils.isNotBlank((String)stepMap.get("maxValue"))){
+				maxValue = Integer.parseInt((String)stepMap.get("maxValue"));
+			}
+			if(StringUtils.isNotBlank((String)stepMap.get("minValue"))){
+				minValue = Integer.parseInt((String)stepMap.get("minValue"));
+			}
+			if(StringUtils.isNotBlank((String)stepMap.get("interval"))){
+				interval = Integer.parseInt((String)stepMap.get("interval"));
+			}
+		}catch(Exception e){}
+		
+		String groupType = stepMap.get("groupType")==null?"":(String)stepMap.get("groupType");
+		
+		String returnSql = "with temp1 as ("+event_diagnose(temp1,stepMap)+")";
+		if(!CollectionUtils.isEmpty(temp2)){
+			returnSql += ", \r\n temp2 as ("+event_diagnose(temp2,stepMap)+")";
+			
+			String rel = (String)temp2.get("关系");
+			if("or".equals(rel)){
+				returnSql += " \r\n select ";
+				
+				if(StringUtils.isNotBlank(groupType)){
+					switch((String)stepMap.get("groupType")){
+						case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval)+" 年龄段,";break;
+						case "年份":returnSql += "to_char(diag_time,'yyyy') 年份,";break;
+						case "医院":returnSql += "t.org_code,org.org_name,";break;
+						case "就诊类型":returnSql += "visit_type,";break;
+						case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end 性别,";break;
+					}
+				}
+				
+				if("patientsNumber".equals((String)stepMap.get("queryType"))){
+					returnSql += "count(distinct t.patient_id) 人数";
+				}else{
+					returnSql += "count(t.patient_id) 人次";
+				}
+				returnSql += " \r\n from (select * from temp1 union all  select * from temp2 )t ";
+				if("性别".equals((String)stepMap.get("groupType"))||"年龄段".equals((String)stepMap.get("groupType"))){
+					returnSql += " join patient.patient_master_info c on t.patient_id=c.patient_id \r\n";
+				}
+				if("医院".equals((String)stepMap.get("groupType"))){
+					returnSql += " join mdm.organization org on t.org_code=org.org_code  \r\n";
+				}
+				if(StringUtils.isNotBlank(groupType)){
+					returnSql += " group by ";
+					switch((String)stepMap.get("groupType")){
+						case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval);break;
+						case "年份":returnSql += "to_char(diag_time,'yyyy') ";break;
+						case "医院":returnSql += "t.org_code,org.org_name";break;
+						case "就诊类型":returnSql += "visit_type";break;
+						case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end";break;
+					}
+				}
+			}else if("and".equals(rel)){
+				returnSql += "select count(1) 人数 from (select distinct temp1.patient_id from temp1)a join (select distinct temp2.patient_id from temp2 ) b on a.patient_id=b.patient_id";
+			}
+		}else{//只有temp1的情况
+			
+			returnSql += "\r\n select ";
+			if(StringUtils.isNotBlank(groupType)){
+				switch((String)stepMap.get("groupType")){
+					case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval)+" 年龄段,";break;
+					case "年份":returnSql += "to_char(diag_time,'yyyy') 年份,";break;
+					case "医院":returnSql += "temp1.org_code,org.org_name,";break;
+					case "就诊类型":returnSql += "visit_type,";break;
+					case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end 性别,\r\n";break;
+				}
+			}
+			if("patientsNumber".equals((String)stepMap.get("queryType"))){
+				returnSql += "count(distinct temp1.patient_id) 人数";
+			}else{  //visitsNumber 人次
+				returnSql += "count(temp1.patient_id) 人次";
+			}
+			returnSql += " from temp1 ";
+			
+			if("性别".equals((String)stepMap.get("groupType"))||"年龄段".equals((String)stepMap.get("groupType"))){
+				returnSql += " join patient.patient_master_info c on temp1.patient_id=c.patient_id \r\n ";
+			}
+			if("医院".equals((String)stepMap.get("groupType"))){
+				returnSql += " join mdm.organization org on temp1.org_code=org.org_code  \r\n";
+			}
+			
+			if(StringUtils.isNotBlank(groupType)){
+				returnSql += "group by ";
+				
+				switch((String)stepMap.get("groupType")){
+					case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval);break;
+					case "年份":returnSql += "to_char(diag_time,'yyyy') ";break;
+					case "医院":returnSql += "temp1.org_code,org.org_name";break;
+					case "就诊类型":returnSql += "visit_type";break;
+					case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end";break;
+				}
+			}
+		}
+		return returnSql;
+	}
+	
+	  public static String generateAgePart(int min,int max,int interval){
+	    	String str = " case";
+	    	
+	    	int temp = min;
+	    	for(int i=min;i<max;i+=interval){
+	    		if(i>min){
+	    			//System.out.println(temp+":"+i);
+	    			if(temp==min){
+	    				str += " when extract(year from age(diag_time,c.birth_date))  >="+temp +" and extract(year from age(diag_time,c.birth_date)) <"+i+" then '"+temp+"到"+i+"'\r\n";
+//	    			
+	    				}else if(i==max){
+//	    				str += " when extract(year from age(temp1.diag_time,c.birth_date)) <="+max+" then '"+temp+"到"+max+"' end  ";
+	    			}else{
+	    				str += " when extract(year from age(diag_time,c.birth_date)) <"+i+" then '"+temp+"到"+i+"'\r\n";
+	    			}	
+	    			temp = i;
+	    		}
+	    	}
+	    	str += " when extract(year from age(diag_time,c.birth_date)) <="+max+" then '"+temp+"到"+max+"' end \r\n ";
+	    //	System.out.println(str);
+	    	return str;
+	    }
+	
+	public static String event_diagnose(Map<String,Map> temp1,Map groupMap){
+    	/*{"事件":{"diag_standard":"I21,I22,I23","event_type":"诊断"},"医院":{"org_code":"9983838x,111999441,2224589985,112445580"},
+		 * "就诊类型":{"visit_type":"门诊"},"时间":{"time_from":"绝对时间:2017-01-01","time_to":"绝对时间:2017-01-10"}}
+		 * 
+		 * {\"事件\":{\"diag_standard\":[\"I220\",\"I230\"],\"diag_primitive\":[\"I220\",\"I230\"],\"event_type\":\"diagnosis\"},
+		 * \"医院\":{\"org_code\":[\"111111\",\"222222\"]},\"就诊类型\":{\"visit_type\":\"hospitalization\"},\"时间\":{\"time_from\":\"2018-7-2\",\"time_to\":\"2018-8-12\"},
+		 * \"关系\":\"or\"}
+		 * 
+		 * */
+		String resultSql = "";
+		String condition = "";
+		//String eventType = "";
+		
+		for(String str:temp1.keySet()){
+			if("事件".equals(str)){  //"事件":{"diag_standard":"I21,I22,I23","event_type":"诊断"}
+				Map temp = temp1.get(str);
+				//if(temp.get("event_type").equals("diagnosis")){
+					//eventType = (String)temp.get("event_type");
+					//,diag_time,org_code,case when visit_type='O' then '门诊' when visit_type='I' then '住院' when is_emergency=true then '急诊' else '未知' end visit_type
+					resultSql += " select * from(select a.patient_id";
+							String groupType = groupMap.get("groupType")==null?"":(String)groupMap.get("groupType");
+							if(StringUtils.isNotBlank(groupType)){//"{\"groupType\":\"医院\",\"interval\":\"\",\"maxValue\":\"\",\"minValue\":\"\"}";
+								switch(groupType){
+									case "年龄段":resultSql += ",coalesce(a.diag_time,b.visit_time) diag_time";break;
+									case "年份":resultSql += ",coalesce(a.diag_time,b.visit_time) diag_time";break;
+									case "医院":resultSql += ",a.org_code";break;
+									case "就诊类型":resultSql += ",case when b.visit_type='O' then '门诊' when b.visit_type='I' then '住院' when is_emergency=true then '急诊' else '未知' end visit_type";break;
+									case "性别":resultSql += "";break;
+								}
+							}
+							
+							resultSql += ",jsonb_array_elements(diag_sycode_set) "+
+									"as sycode  \r\n from diag.patient_diagnose a ";
+							
+							String time_from = temp1.get("时间")==null?"":(String)temp1.get("时间").get("time_from");
+							String visit_type =  temp1.get("就诊类型")==null?"":(String)temp1.get("就诊类型").get("visit_type");
+							if(StringUtils.isNotBlank(time_from)||StringUtils.isNotBlank(visit_type)){
+								resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";
+							}else{
+								if(StringUtils.isNotBlank(groupType)){
+									switch((String)groupMap.get("groupType")){
+										case "年龄段":resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";break;
+										case "年份":resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";break;
+										case "就诊类型":resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";break;
+										//case "性别":resultSql += "";break;
+									}
+								}
+							}									
+							resultSql += "where 1=1 $condition$ ) t1  \r\n ";
+					
+					List<String> diag_list = (List)temp.get("diag_standard");
+					if(!CollectionUtils.isEmpty(diag_list)){
+						
+						resultSql += " join (select diag_code,diag_code2,diag_name from mdm.diagnose a where a.code_sys_id=30 \r\n ";
+						
+						if(diag_list.size()>1){
+							for(int i = 0;i<diag_list.size();i++){
+								String diag_c = diag_list.get(i);
+								if(i==0){
+									resultSql += " and ( diag_code2 like '"+diag_c+"%'";
+								}else if(i==diag_list.size()-1){
+									resultSql += " or diag_code2 like '"+diag_c+"%')";
+								}else{
+									resultSql += " or diag_code2 like '"+diag_c+"%'";
+								}
+							}
+						}else{
+							resultSql += " and diag_code2 like '"+diag_list.get(0)+"%'";
+						}
+						resultSql += " \r\n )t2 on replace(t1.sycode::varchar(50),'\"','')  =t2.diag_code";
+					}
+				//}
+			}else if("医院".equals(str)){ //"医院":{"org_code":"9983838x,111999441,2224589985,112445580"}
+				Map temp = temp1.get(str);
+				try{
+					List<String> org_list = (List)temp.get("org_code");
+					if(!CollectionUtils.isEmpty(org_list)){
+						if(org_list.size()>1){
+							for(int i = 0;i<org_list.size();i++){
+								String org_code = org_list.get(i);
+								if(i==0){
+									condition += " and  a.org_code in ('"+org_code+"',";
+								}else if(i==org_list.size()-1){
+									condition += "'"+org_code+"')";
+								}else{
+									condition += "'"+org_code+"',";
+								}
+							}
+						}else{
+							condition += " and a.org_code = '"+org_list.get(0)+"'";
+						}
+					}
+				}catch(java.lang.ClassCastException e){}
+				
+			}else if("时间".equals(str)){//"时间":{"time_from":"绝对时间:2017-01-01","time_to":"绝对时间:2017-01-10","time_type":"诊断时间"}
+				Map temp = temp1.get(str);
+				String time_from = (String)temp.get("time_from");
+				String time_to = (String)temp.get("time_to");
+				condition += " \r\n ";
+				if(StringUtils.isNoneBlank(time_from)&&StringUtils.isNoneBlank(time_to)){
+					condition += " and coalesce(a.diag_time,b.visit_time) between '"+time_from +"' and '"+time_to+"'";
+				}
+				
+//				switch(eventType){
+//					case "诊断":condition+= "and coalesce(a.diag_time,b.visit_time) ";break;
+//					case "检验时间":condition+= "and report_time ";break;
+//					case "用药时间":condition+= "and drug_time ";break;
+//					case "手术时间":condition+= "and oper_time ";break;
+//				}
+			}else if("就诊类型".equals(str)){//"就诊类型":{"visit_type":"门诊"}
+				Map temp = temp1.get(str);
+				String visit_type = (String)temp.get("visit_type");
+				condition += " \r\n ";
+				switch(visit_type){
+					case "outpat":condition+= " and b.visit_type='O' ";break;
+					case "inpat":condition+= " and b.visit_type='I' ";break;
+					case "emergency":condition+= " and b.is_emergency=true ";break;
+				}
+			}
+		}
+		
+		resultSql = resultSql.replace("$condition$", condition);
+		return resultSql;
+    }
+	
+	public void printJson(HttpServletResponse res,String str){
+		
+		res.setContentType("text/plain");
+		 res.setCharacterEncoding("utf-8");
+		 res.setHeader("Access-Control-Allow-Origin", "*");  
+		 res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");  
+		 res.setHeader("Access-Control-Max-Age", "3600");  
+		 res.setHeader("Access-Control-Allow-Headers", "x-requested-with");  
+		 PrintWriter pw = null;
+		try {
+			pw = res.getWriter();
+			 pw.write(str);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}finally{
+			 pw.flush();
+			 pw.close();
+		}
+	}
+	
+	@RequestMapping("/getAllOrg")
+	public String getAllOrg(HttpServletRequest request,Model model,HttpServletResponse res){
+		
+		Map map1 = new HashMap();
+		
+		map1.put("value", "488099744");
+		map1.put("label", "福州一院");
+		
+		Map map2 = new HashMap();
+		
+		map2.put("value", "48809974x");
+		map2.put("label", "福州儿院");
+		
+		Map map3 = new HashMap();
+		
+		map3.put("value", "488099743");
+		map3.put("label", "福州中医院");
+		
+		Map map4 = new HashMap();
+		
+		map4.put("value", "488099757");
+		map4.put("label", "福州传染病医院");
+		
+		List list = new ArrayList();
+		list.add(map1);
+		list.add(map2);
+		list.add(map3);
+		list.add(map4);
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		 res.setContentType("text/plain");
+		 res.setCharacterEncoding("utf-8");
+		 res.setHeader("Access-Control-Allow-Origin", "*");  
+		 res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");  
+		 res.setHeader("Access-Control-Max-Age", "3600");  
+		 res.setHeader("Access-Control-Allow-Headers", "x-requested-with");  
+
+		 System.out.println(res);
+		 PrintWriter pw = null;
+		try {
+			pw = res.getWriter();
+			 pw.write(jsonString);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}finally{
+			 pw.flush();
+			 pw.close();
+		}
+		return null;
+	}
+}

+ 82 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/1f/1f836837f764adf9041a739ed02b295d0dde5e82.svn-base

@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.synyi.edc.dao.IUserDao" >
+  <resultMap id="BaseResultMap" type="com.synyi.edc.pojo.User" >
+    <id column="id" property="id" jdbcType="INTEGER" />
+    <result column="user_name" property="userName" jdbcType="VARCHAR" />
+    <result column="password" property="password" jdbcType="VARCHAR" />
+    <result column="age" property="age" jdbcType="INTEGER" />
+  </resultMap>
+  <sql id="Base_Column_List" >
+    id, user_name, password, age
+  </sql>
+  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
+    select 
+    <include refid="Base_Column_List" />
+    from user_t
+    where id = #{id,jdbcType=INTEGER}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+    delete from user_t
+    where id = #{id,jdbcType=INTEGER}
+  </delete>
+  <insert id="insert" parameterType="com.synyi.edc.pojo.User" >
+    insert into user_t (id, user_name, password, 
+      age)
+    values (#{id,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, 
+      #{age,jdbcType=INTEGER})
+  </insert>
+  <insert id="insertSelective" parameterType="com.synyi.edc.pojo.User" >
+    insert into user_t
+    <trim prefix="(" suffix=")" suffixOverrides="," >
+      <if test="id != null" >
+        id,
+      </if>
+      <if test="userName != null" >
+        user_name,
+      </if>
+      <if test="password != null" >
+        password,
+      </if>
+      <if test="age != null" >
+        age,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides="," >
+      <if test="id != null" >
+        #{id,jdbcType=INTEGER},
+      </if>
+      <if test="userName != null" >
+        #{userName,jdbcType=VARCHAR},
+      </if>
+      <if test="password != null" >
+        #{password,jdbcType=VARCHAR},
+      </if>
+      <if test="age != null" >
+        #{age,jdbcType=INTEGER},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.synyi.edc.pojo.User" >
+    update user_t
+    <set >
+      <if test="userName != null" >
+        user_name = #{userName,jdbcType=VARCHAR},
+      </if>
+      <if test="password != null" >
+        password = #{password,jdbcType=VARCHAR},
+      </if>
+      <if test="age != null" >
+        age = #{age,jdbcType=INTEGER},
+      </if>
+    </set>
+    where id = #{id,jdbcType=INTEGER}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.synyi.edc.pojo.User" >
+    update user_t
+    set user_name = #{userName,jdbcType=VARCHAR},
+      password = #{password,jdbcType=VARCHAR},
+      age = #{age,jdbcType=INTEGER}
+    where id = #{id,jdbcType=INTEGER}
+  </update>
+</mapper>

+ 32 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/21/21dabbcb071ecaf32e269c6892e39e04fc16a9d8.svn-base

@@ -0,0 +1,32 @@
+package com.synyi.edc.service;
+
+import java.util.List;
+
+import com.synyi.edc.pojo.Parameter;
+/**
+ * 查询数据库接口
+ * @author wy
+ *
+ */
+public interface ISqlbuilderService {
+	/**
+	 * 获取所有的医院列表
+	 */
+	public List<Parameter> getAllOrgInfo();
+	/**
+	 * 获取检验名称
+	 */
+	public List<Parameter> getAllLabInfo(Parameter labname);
+	/**
+     * 获取检验结果,文本结果和数字结果等suggestion列表
+     * @param par
+     * @return
+     */
+    public List<Parameter> getSuggestionList(Parameter par);
+    /**
+     * 根据药品名称 模糊穷举所有药品名称
+     * @param par 参数传递为 labName
+     * @return
+     */
+    public List<Parameter> getAllDrugInfo(Parameter par);
+}

+ 14 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/23/2326230bd0bdd62cfbe170693d383d8ab66e21b9.svn-base

@@ -0,0 +1,14 @@
+driver=org.postgresql.Driver
+url=jdbc:postgresql://172.16.0.217:5432/bank
+username=postgres
+password=synyirocks
+#定义初始连接数
+initialSize=0
+#定义最大连接数
+maxActive=20
+#定义最大空闲
+maxIdle=20
+#定义最小空闲
+minIdle=1
+#定义最长等待时间
+maxWait=60000

+ 330 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/28/28a576ed56427c7cb0ed62a7eadf0b1958440644.svn-base

@@ -0,0 +1,330 @@
+package com.synyi.edc.controller;
+
+import java.io.IOException;
+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.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.log4j.Logger;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.synyi.edc.pojo.Parameter;
+import com.synyi.edc.service.ISqlbuilderService;
+import com.synyi.edc.service.IUserService;
+import com.synyi.edc.util.SqlBuilderUtils;
+/**
+ * sql语句生成主要contorller
+ * @author wy
+ *
+ */
+@Controller
+@RequestMapping("/sqlbuilder")
+public class SqlbuilderController {
+	private Logger log = Logger.getLogger(SqlbuilderController.class);
+	
+	@Resource
+	private IUserService userService;
+	
+	@Resource
+	private ISqlbuilderService sqlbuilderService;
+	
+	
+	@RequestMapping("/toIndex")
+	public String toJ(HttpServletRequest request,Model model){
+//		int userId = Integer.parseInt(request.getParameter("id"));
+//		User user = this.userService.getUserById(userId);
+//		model.addAttribute("user", user);
+		return "index";
+	}
+	/**
+	 * sql生成方法
+	 * @param request
+	 * @param model
+	 * @param param
+	 * @param res
+	 * @return
+	 */
+	@RequestMapping("/generate")
+	public String generate(HttpServletRequest request,Model model,Parameter param,HttpServletResponse res){
+		log.info("参数传递:"+param);
+		String jsonStr = param.getEventData();
+    	String stepStr = param.getGroupData();
+    	
+    	String returnSql = SqlBuilderUtils.genGroupSql(jsonStr,stepStr);
+		log.info("生成sql:"+returnSql);
+		
+		printJson(res,returnSql);
+		 return null;
+	}
+	
+	/**
+	 * 打印返回参数
+	 * @param res
+	 * @param str
+	 */
+	public void printJson(HttpServletResponse res,String str){
+		
+		res.setContentType("text/plain");
+		 res.setCharacterEncoding("utf-8");
+		 res.setHeader("Access-Control-Allow-Origin", "*");  
+		 res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");  
+		 res.setHeader("Access-Control-Max-Age", "3600");  
+		 res.setHeader("Access-Control-Allow-Headers", "x-requested-with");  
+		 PrintWriter pw = null;
+		try {
+			pw = res.getWriter();
+			 pw.write(str);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}finally{
+			 pw.flush();
+			 pw.close();
+		}
+	}
+	/**
+	 * 获取所有的医院列表
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @return
+	 */
+	@RequestMapping("/getAllOrg")
+	public String getAllOrg(HttpServletRequest request,Model model,HttpServletResponse res){
+		
+		List<Parameter> par = sqlbuilderService.getAllOrgInfo();
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getOrgCode());
+			map1.put("label", p.getOrgName());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	/**
+	 * 模糊匹配获取所有的检查名称
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getAlllabInfo")
+	public String getAllLabInfo(HttpServletRequest request,Model model,HttpServletResponse res,Parameter param){
+		
+		List<Parameter> par = sqlbuilderService.getAllLabInfo(param);
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getItemId());
+			map1.put("label", p.getItemName());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	
+	/**
+	 * 获取检验结果,文本结果和数字结果等suggestion列表
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getSuggestionList")
+	public String getSuggestionList(HttpServletRequest request,Model model,HttpServletResponse res,Parameter param){
+		
+		List<Parameter> par = sqlbuilderService.getSuggestionList(param);
+		List list = new ArrayList();
+		for(Parameter p:par){
+			//c.item_name,text_value,numerical_value,reference_range,abnormal_flag_name
+			Map map1 = new HashMap();
+			map1.put("itemName", p.getItemName());
+			map1.put("textValue", p.getTextValue());
+			map1.put("numericalValue", p.getNumericalValue());
+			map1.put("referenceRange", p.getReferenceRange());
+			map1.put("abnormalFlagName", p.getAbnormalFlagName());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	
+	/**
+	 * 模糊匹配获取所有的药品名称
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getAllDrugInfo")
+	public String getAllDrugInfo(HttpServletRequest request,Model model,HttpServletResponse res,Parameter param){
+		
+		List<Parameter> par = sqlbuilderService.getAllDrugInfo(param);
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getDrugId());
+			map1.put("label", p.getDrugName());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	/**
+	 * 获取所有的药品大类名称
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getAllDrugCategory")
+	public String getAllDrugCategory(HttpServletRequest request,Model model,HttpServletResponse res){
+		
+		List<Parameter> par = sqlbuilderService.getAllDrugCategory();
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getDrugId());
+			map1.put("label", p.getDrugName());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	/**
+	 * 根据药品名称获取模糊匹配的suggestion
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getSuggestionByDrug")
+	public String getSuggestionByDrug(HttpServletRequest request,Model model,HttpServletResponse res,Parameter param){
+		
+		List<Parameter> par = sqlbuilderService.getSuggestionByDrug(param);
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getDrugId());
+			map1.put("label", p.getDrugName());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	/**
+	 * 根据药品父节点名称获取子节点药品名称
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getChildDrug")
+	public String getChildDrug(HttpServletRequest request,Model model,HttpServletResponse res,Parameter param){
+		
+		List<Parameter> par = sqlbuilderService.getChildDrug(param);
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getDrugId());
+			map1.put("label", p.getDrugName());
+			map1.put("parent", p.getParent());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	
+	/**
+	 * 递归通过子类别将所有父类药品列出来
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getParentPath")
+	public String getParentPath(HttpServletRequest request,Model model,HttpServletResponse res,Parameter param){
+		
+		List<Parameter> par = sqlbuilderService.getParentPath(param);
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getDrugId());
+			map1.put("label", p.getDrugName());
+			map1.put("parent", p.getParent());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	
+	/**
+	 * 递归通过子类别将所有父类药品列出来并且所有父类的同类列出来
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getAllDrugPathInfo")
+	public String getAllDrugPathInfo(HttpServletRequest request,Model model,HttpServletResponse res,Parameter param){
+		
+		List<Parameter> par = sqlbuilderService.getParentPath(param);
+		List<String> strList = new ArrayList();
+		for(Parameter p:par){
+			strList.add(p.getDrugId());
+		}
+		param.setStrList(strList);
+		param.setStrSize(strList.size());
+		List<Parameter> pathInfo = sqlbuilderService.getAllDrugPathInfo(param);
+		List list = new ArrayList();
+		for(Parameter p:pathInfo){
+			Map map1 = new HashMap();
+			map1.put("value", p.getDrugId());
+			map1.put("label", p.getDrugName());
+			map1.put("parent", p.getParent());
+			list.add(map1);
+		}
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	
+}

+ 8 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/2e/2e33bdfe461d1ce3592ed6ef8cea668098195916.svn-base

@@ -0,0 +1,8 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.7

+ 10 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/32/32ca2cd4fdd8b8dddaa033dc55db087eb8e4a414.svn-base

@@ -0,0 +1,10 @@
+package com.synyi.edc.dao;
+
+import java.util.List;
+
+import com.synyi.edc.pojo.Parameter;
+
+public interface ISqlbuilderDao {
+    List<Parameter> getAllOrgInfo();
+    List<Parameter> getAllLabInfo(Parameter par);
+}

+ 48 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/34/3467aaddcac7a7848ea1aa9b92646128a8479171.svn-base

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.synyi.edc.dao.ISqlbuilderDao" >
+  <resultMap id="BaseResultMap" type="com.synyi.edc.pojo.Parameter" >
+    <result column="org_code" property="orgCode" jdbcType="VARCHAR" />
+    <result column="org_name" property="orgName" jdbcType="VARCHAR" />
+    <result column="item_id" property="itemId" jdbcType="VARCHAR" />
+    <result column="item_name" property="itemName" jdbcType="VARCHAR" />
+    
+    <result column="test_item_name" property="testItemName" jdbcType="VARCHAR" />
+    <result column="text_value" property="textValue" jdbcType="VARCHAR" />
+    <result column="numerical_value" property="numericalValue" jdbcType="VARCHAR" />
+    <result column="reference_range" property="referenceRange" jdbcType="VARCHAR" />
+    <result column="abnormal_flag_name" property="abnormalFlagName" jdbcType="VARCHAR" />
+    
+    <result column="drug_id" property="drugId" jdbcType="VARCHAR" />
+    <result column="drug_name" property="drugName" jdbcType="VARCHAR" />
+    
+  </resultMap>
+  <select id="getAllOrgInfo" resultMap="BaseResultMap"  >
+    select 
+    org_code,org_name from mdm.organization
+  </select>
+  <select id="getAllLabInfo" resultMap="BaseResultMap"  parameterType="com.synyi.edc.pojo.Parameter">
+    select item_id,item_name from mdm.lis_item where code_sys_id =197 
+   	<if test="labName != null and labName != ''">
+   		and item_name like '%${labName}%'  
+   	</if>
+  </select>
+  
+  <select id="getSuggestionList" resultMap="BaseResultMap"  parameterType="com.synyi.edc.pojo.Parameter">
+    select distinct c.item_name,text_value,numerical_value,reference_range,abnormal_flag_name from  
+								lab.lab_report_result a join  mdm.mdm_map b on a.test_item_id=b.source_id 
+											 join mdm.lis_item c on  b.map_id=c.item_id 
+		where b.md_type = 'lis_item' and c.code_sys_id =197 
+   	<if test="itemId != null and itemId != ''">
+   		and c.item_id in (${itemId})
+   	</if>
+  </select>
+  
+  <select id="getAllDrugInfo" resultMap="BaseResultMap"  parameterType="com.synyi.edc.pojo.Parameter">
+    select drug_id,case when regular_name is null then trade_name else regular_name end drug_name
+  from mdm.drug t where t.code_sys_id = 51  
+   	<if test="drugName != null and drugName != ''">
+   		and (regular_name like '%${drugName}%'  or trade_name like '%${drugName}%')
+   	</if>
+  </select>
+</mapper>

+ 37 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/36/36a904d0571bd9488d62ce8b9788714b57d34220.svn-base

@@ -0,0 +1,37 @@
+package com.synyi.edc.dao;
+
+import java.util.List;
+
+import com.synyi.edc.pojo.Parameter;
+/**
+ * sqlbuilder 语句生成dao
+ * @author wy
+ *
+ */
+public interface ISqlbuilderDao {
+	/**
+	 * 获取所有的医院列表
+	 * @return
+	 */
+    List<Parameter> getAllOrgInfo();
+    /**
+     * 根据检查名称 模糊穷举所有检查名称
+     * @param par 参数传递为 labName
+     * @return
+     */
+    List<Parameter> getAllLabInfo(Parameter par);
+    /**
+     * 获取检验结果,文本结果和数字结果等suggestion列表
+     * @param par
+     * @return
+     */
+    List<Parameter> getSuggestionList(Parameter par);
+    
+    /**
+     * 根据药品名称 模糊穷举所有药品名称
+     * @param par 参数传递为 labName
+     * @return
+     */
+    List<Parameter> getAllDrugInfo(Parameter par);
+    
+}

文件差異過大導致無法顯示
+ 5 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/38/384841634f5430db4cf550b6719d2c3d0b8a1028.svn-base


+ 94 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/39/394a71f8ef8be746b97ee8ba63df25abd57901ff.svn-base

@@ -0,0 +1,94 @@
+package com.synyi.edc.service.impl;
+
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+
+import com.synyi.edc.dao.ISqlbuilderDao;
+import com.synyi.edc.pojo.Parameter;
+import com.synyi.edc.service.ISqlbuilderService;
+/**
+ * 连接数据库查询service
+ * @author wy
+ *
+ */
+@Service("sqlbuilderService")
+public class SqlbuilderServiceImpl implements ISqlbuilderService {
+	@Resource
+	private ISqlbuilderDao dao;
+	/**
+	 * 获取所有的医院列表
+	 */
+	@Override
+	public List<Parameter> getAllOrgInfo() {
+		// TODO Auto-generated method stub
+		return this.dao.getAllOrgInfo();
+	}
+	/**
+	 * 获取检验名称
+	 */
+	@Override
+	public List<Parameter> getAllLabInfo(Parameter labname) {
+		// TODO Auto-generated method stub
+		return this.dao.getAllLabInfo( labname);
+	}
+
+	/**
+     * 获取检验结果,文本结果和数字结果等suggestion列表
+     * @param par
+     * @return
+     */
+    public List<Parameter> getSuggestionList(Parameter par){
+    	return this.dao.getSuggestionList(par);
+    }
+    /**
+     * 根据药品名称 模糊穷举所有药品名称
+     * @param par 参数传递为 labName
+     * @return
+     */
+    public List<Parameter> getAllDrugInfo(Parameter par){
+    	return this.dao.getAllDrugInfo(par);
+    }
+    
+    /**
+     * 获取所有的药品大类名称
+     * @return
+     */
+	public List<Parameter> getAllDrugCategory(){
+		return this.dao.getAllDrugCategory();
+	}
+	/**
+	 * 根据药品名称获取模糊匹配的suggestion
+	 * @param param
+	 * @return
+	 */
+	public List<Parameter> getSuggestionByDrug(Parameter param){
+		return this.dao.getSuggestionByDrug(param);
+	}
+	/**
+	 * 根据药品父节点名称获取子节点药品名称
+	 * @param param
+	 * @return
+	 */
+	public List<Parameter> getChildDrug(Parameter param){
+		return this.dao.getChildDrug(param);
+	}
+	/**
+	 * 递归通过子类别将所有父类药品列出来
+	 * @param param
+	 * @return
+	 */
+	public List<Parameter> getParentPath(Parameter param){
+		return this.dao.getParentPath(param);
+	}
+	/**
+	 * 递归通过子类别将所有父类药品列出来并且所有父类的同类列出来
+	 * @param param
+	 * @return
+	 */
+	public List<Parameter> getAllDrugPathInfo(Parameter param){
+		return this.dao.getAllDrugPathInfo(param);
+	}
+}

+ 10 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/39/39699c7342c00e60f6256fe93fc1006a1baed8a2.svn-base

@@ -0,0 +1,10 @@
+package com.synyi.edc.service;
+
+import java.util.List;
+
+import com.synyi.edc.pojo.Parameter;
+
+public interface ISqlbuilderService {
+	public List<Parameter> getAllOrgInfo();
+	public List<Parameter> getAllLabInfo(Parameter labname);
+}

+ 14 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/3b/3b2f179bd8d0e6f9b0dbf2ab8cf461023c3a99b2.svn-base

@@ -0,0 +1,14 @@
+var $lang={
+errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u7BC4\u570D,\u9700\u8981\u64A4\u92B7\u55CE?",
+aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"],
+aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"],
+aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"],
+aLongMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],
+clearStr: "\u6E05\u7A7A",
+todayStr: "\u4ECA\u5929",
+okStr: "\u78BA\u5B9A",
+updateStr: "\u78BA\u5B9A",
+timeStr: "\u6642\u9593",
+quickStr: "\u5FEB\u901F\u9078\u64C7",
+err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u65BC\u6700\u5927\u65E5\u671F!'
+}

+ 52 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/40/403796bebed16f9f330529c40ac963360237ceea.svn-base

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>synyi-service</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.m2e.core.maven2Builder</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.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
+	</natures>
+</projectDescription>

+ 1 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/41/41dfc0a6c92707948578891c51d98c6443be63cc.svn-base

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

+ 162 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/45/458bb6ab73a92dc1aca2352ba3d5688116a892c9.svn-base

@@ -0,0 +1,162 @@
+package com.synyi.edc.pojo;
+
+import java.util.List;
+
+/**
+ * 参数传递和返回对象pojo
+ * @author wy
+ *
+ */
+public class Parameter {
+	
+	private static final long serialVersionUID = 1L;
+//	private String type; //条件类型
+//	private String beginDate;
+//	private String endDate;
+//	private String orgArray;
+//	private String orgType; //三种类型   1  全部医院 2 部分医院 3 某家医院
+	private String labName; //检验名称
+	
+	private String queryType; 
+	
+	private String eventData;
+	private String groupData;
+	
+	private String orgName;//医院名称
+	
+	private String itemId; //检查id
+	private String itemName; //检查名称
+	
+	private String testItemName;
+	private String numericalValue;
+	private String referenceRange;
+	private String abnormalFlagName;
+	private String textValue;
+	private String drugName;
+	private String drugId;
+	private String parent;
+	private List<String> strList;
+	private int strSize;
+	
+	
+	public int getStrSize() {
+		return strSize;
+	}
+	public void setStrSize(int strSize) {
+		this.strSize = strSize;
+	}
+	public List<String> getStrList() {
+		return strList;
+	}
+	public void setStrList(List<String> strList) {
+		this.strList = strList;
+	}
+	public String getParent() {
+		return parent;
+	}
+	public void setParent(String parent) {
+		this.parent = parent;
+	}
+	public String getDrugId() {
+		return drugId;
+	}
+	public void setDrugId(String drugId) {
+		this.drugId = drugId;
+	}
+	public String getDrugName() {
+		return drugName;
+	}
+	public void setDrugName(String drugName) {
+		this.drugName = drugName;
+	}
+	public String getTestItemName() {
+		return testItemName;
+	}
+	public void setTestItemName(String testItemName) {
+		this.testItemName = testItemName;
+	}
+	public String getNumericalValue() {
+		return numericalValue;
+	}
+	public void setNumericalValue(String numericalValue) {
+		this.numericalValue = numericalValue;
+	}
+	public String getReferenceRange() {
+		return referenceRange;
+	}
+	public void setReferenceRange(String referenceRange) {
+		this.referenceRange = referenceRange;
+	}
+	public String getAbnormalFlagName() {
+		return abnormalFlagName;
+	}
+	public void setAbnormalFlagName(String abnormalFlagName) {
+		this.abnormalFlagName = abnormalFlagName;
+	}
+	public String getTextValue() {
+		return textValue;
+	}
+	public void setTextValue(String textValue) {
+		this.textValue = textValue;
+	}
+	public String getItemId() {
+		return itemId;
+	}
+	public void setItemId(String itemId) {
+		this.itemId = itemId;
+	}
+	public String getItemName() {
+		return itemName;
+	}
+	public void setItemName(String itemName) {
+		this.itemName = itemName;
+	}
+	public String getLabName() {
+		return labName;
+	}
+	public void setLabName(String labName) {
+		this.labName = labName;
+	}
+	public String getOrgName() {
+		return orgName;
+	}
+	public void setOrgName(String orgName) {
+		this.orgName = orgName;
+	}
+	public String getOrgCode() {
+		return orgCode;
+	}
+	public void setOrgCode(String orgCode) {
+		this.orgCode = orgCode;
+	}
+	private String orgCode;
+	
+	
+	public String getQueryType() {
+		return queryType;
+	}
+	public void setQueryType(String queryType) {
+		this.queryType = queryType;
+	}
+	public String getEventData() {
+		return eventData;
+	}
+	public void setEventData(String eventData) {
+		this.eventData = eventData;
+	}
+	public String getGroupData() {
+		return groupData;
+	}
+	public void setGroupData(String groupData) {
+		this.groupData = groupData;
+	}
+	@Override
+	public String toString() {
+		return "Parameter [queryType=" + queryType + ", eventData=" + eventData
+				+ ", groupData=" + groupData + "]";
+	}
+	
+ 
+ 
+
+}

+ 6 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/46/46c980d2ec7e313d8d408eb7300f7d0365cf1f6a.svn-base

@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+encoding//src/main/resources/jdbc.properties=UTF-8
+encoding//src/main/resources/log4j.properties=UTF-8
+encoding//src/main/resources/synyi.properties=UTF-8
+encoding//src/main/webapp/WEB-INF/jsp/index.jsp=UTF-8
+encoding/<project>=UTF-8

文件差異過大導致無法顯示
+ 478 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/4a/4a19929eab6d5988cf32028a77688b802de18927.svn-base


二進制
org.zsl.hnust Maven Webapp/.svn/pristine/4d/4d86ae5084026b4e93dd14ac0af55de58d57a5f2.svn-base


+ 29 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/4f/4f10c02b20beeabbca1408783b58d0ca66024058.svn-base

@@ -0,0 +1,29 @@
+sql语句生成接口
+http://172.16.0.217:8080/synyi-service/api/sqlbuilder/generate?eventData=&groupData=&queryType=
+
+获取所有医院列表接口  
+http://172.16.0.217:8080/synyi-service/sqlbuilder/getAllOrg
+
+查询检验名称接口 返回穷举模糊匹配检验名称   POST 形式
+http://172.16.0.217:8080/synyi-service/sqlbuilder/getAlllabInfo?labName=
+
+获取检验结果,文本结果和数字结果等suggestion列表   POST 形式
+http://172.16.0.217:8080/synyi-service/sqlbuilder/getSuggestionList?itemId='1','2','3','4'
+
+查询药品名称接口 返回穷举模糊匹配药品名称   POST 形式
+http://172.16.0.217:8080/synyi-service/sqlbuilder/getAllDrugInfo?drugName=c
+
+查询药品名称所有的大类   POST 形式
+http://172.16.0.217:8080/synyi-service/sqlbuilder/getAllDrugCategory
+
+查询药品名称接口 返回穷举模糊匹配药品名称   POST 形式
+http://172.16.0.217:8080/synyi-service/sqlbuilder/getSuggestionByDrug?drugName=v
+
+根据药品父节点名称获取子节点药品名称   POST 形式
+http://172.16.0.217:8080/synyi-service/sqlbuilder/getChildDrug?drugId=drg000001
+
+递归通过任一药品名称或药品种类将所有父类药品path列出来   POST 形式
+http://172.16.0.217:8080/synyi-service/sqlbuilder/getParentPath?drugId=drg013923
+
+递归通过子类别将所有父类药品列出来并且所有父类的同类列出来   POST 形式
+http://172.16.0.217:8080/synyi-service/sqlbuilder/getAllDrugPathInfo?drugId=drg013923

+ 32 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/50/5065752e4e3f9d9050ec826f15aa1cf794e20e99.svn-base

@@ -0,0 +1,32 @@
+package org.zsl.testmybatis;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.synyi.edc.util.XmlUtils;
+
+public class Test {
+
+	public static void main(String[] args) {
+		// TODO Auto-generated method stub
+		
+		
+    	
+    	Map<String,String> map = new HashMap();
+    	map.put("groupType", "年龄段");
+    	map.put("minValue", "0");
+    	map.put("maxValue", "100");
+    	map.put("interval", "10");
+//    	String str = JSONObject.toJSON(map).toString();
+//    	System.out.println(str);
+//		
+	System.out.println("121221".substring(0,"121221".length()-1));	
+		
+		
+	}
+
+}

+ 13 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/50/509ce56e0ef9bdc4a943d7e4003681e81263ab5b.svn-base

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.synyi.edc.dao.ISqlbuilderDao" >
+  <resultMap id="BaseResultMap" type="com.synyi.edc.pojo.Parameter" >
+    <result column="org_code" property="orgCode" jdbcType="VARCHAR" />
+    <result column="org_name" property="orgName" jdbcType="VARCHAR" />
+  </resultMap>
+  <select id="getAllOrgInfo" resultMap="BaseResultMap"  >
+    select 
+    org_code,org_name from mdm.organization
+  </select>
+  
+</mapper>

+ 32 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/55/55b16ea56c26f17a558df7112342376f6541a269.svn-base

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.7.0_17">
+		<attributes>
+			<attribute name="owner.project.facets" value="java"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

+ 11 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/57/578e74a37c8676b22d5b76afa2fbd895b2add2e2.svn-base

@@ -0,0 +1,11 @@
+<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+	<title>测试</title>
+  </head>
+  
+  <body>
+    ${user.userName}
+  </body>
+</html>

+ 49 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/5a/5acd43123e2aa762f84b4228d5878f82b5d791e7.svn-base

@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="content-type" content="text/xml; charset=utf-8" />
+<title>My97DatePicker</title>
+<script type="text/javascript" src="config.js"></script>
+<script>
+if(parent==window)
+	location.href = '';
+var $d, $dp, $pdp = parent.$dp, $dt, $tdt, $sdt, $IE=$pdp.ie, $FF = $pdp.ff,$OPERA=$pdp.opera, $ny, $cMark = false;
+if ($pdp.eCont) {
+	$dp = {};
+	for (var p in $pdp) {
+		$dp[p] = $pdp[p];
+	}
+}
+else
+	$dp = $pdp;
+	
+$dp.getLangIndex = function(name){
+	var arr = langList;
+	for (var i = 0; i < arr.length; i++) {
+		if (arr[i].name == name) {
+			return i;
+		}
+	}
+	return -1;
+}
+
+$dp.getLang = function(name){
+	var index = $dp.getLangIndex(name);
+	if (index == -1) {
+		index = 0;
+	}
+	return langList[index];
+}
+ 
+$dp.realLang = $dp.getLang($dp.lang);
+document.write("<script src='lang/" + $dp.realLang.name + ".js' charset='" + $dp.realLang.charset + "'><\/script>");
+
+for (var i = 0; i < skinList.length; i++) {
+    document.write('<link rel="stylesheet" type="text/css" href="skin/' + skinList[i].name + '/datepicker.css" title="' + skinList[i].name + '" charset="' + skinList[i].charset + '" disabled="true"/>');
+}
+</script>
+<script type="text/javascript" src="calendar.js"></script>
+</head>
+<body leftmargin="0" topmargin="0" onload="$c.autoSize()" tabindex=0>
+</body>
+</html>
+<script>new My97DP();</script>

+ 54 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/5b/5bf3d80d145aadd79d1a8be0208e98592a5cea47.svn-base

@@ -0,0 +1,54 @@
+package com.synyi.edc.service.impl;
+
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+
+import com.synyi.edc.dao.ISqlbuilderDao;
+import com.synyi.edc.pojo.Parameter;
+import com.synyi.edc.service.ISqlbuilderService;
+/**
+ * 连接数据库查询service
+ * @author wy
+ *
+ */
+@Service("sqlbuilderService")
+public class SqlbuilderServiceImpl implements ISqlbuilderService {
+	@Resource
+	private ISqlbuilderDao dao;
+	/**
+	 * 获取所有的医院列表
+	 */
+	@Override
+	public List<Parameter> getAllOrgInfo() {
+		// TODO Auto-generated method stub
+		return this.dao.getAllOrgInfo();
+	}
+	/**
+	 * 获取检验名称
+	 */
+	@Override
+	public List<Parameter> getAllLabInfo(Parameter labname) {
+		// TODO Auto-generated method stub
+		return this.dao.getAllLabInfo( labname);
+	}
+
+	/**
+     * 获取检验结果,文本结果和数字结果等suggestion列表
+     * @param par
+     * @return
+     */
+    public List<Parameter> getSuggestionList(Parameter par){
+    	return this.dao.getSuggestionList(par);
+    }
+    /**
+     * 根据药品名称 模糊穷举所有药品名称
+     * @param par 参数传递为 labName
+     * @return
+     */
+    public List<Parameter> getAllDrugInfo(Parameter par){
+    	return this.dao.getAllDrugInfo(par);
+    }
+}

+ 40 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/5c/5cf43ba1f88101ec475d06c6983ca3937d28213f.svn-base

@@ -0,0 +1,40 @@
+package com.synyi.edc.service.impl;
+
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+
+import com.synyi.edc.dao.ISqlbuilderDao;
+import com.synyi.edc.pojo.Parameter;
+import com.synyi.edc.service.ISqlbuilderService;
+/**
+ * 连接数据库查询service
+ * @author wy
+ *
+ */
+@Service("sqlbuilderService")
+public class SqlbuilderServiceImpl implements ISqlbuilderService {
+	@Resource
+	private ISqlbuilderDao dao;
+	/**
+	 * 获取所有的医院列表
+	 */
+	@Override
+	public List<Parameter> getAllOrgInfo() {
+		// TODO Auto-generated method stub
+		return this.dao.getAllOrgInfo();
+	}
+	/**
+	 * 获取检验名称
+	 */
+	@Override
+	public List<Parameter> getAllLabInfo(Parameter labname) {
+		// TODO Auto-generated method stub
+		return this.dao.getAllLabInfo( labname);
+	}
+
+	
+	
+}

+ 12 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/62/6293dfff3f25a5fc5b109b7ba00419aa7df6f36d.svn-base

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<synyi>
+	<orgCode.oneOrg remark="一家医院的条件">
+		 and org_code = ## 
+	</orgCode.oneOrg>
+	<orgCode.manyOrg remark="多家医院的条件">
+		 and org_code in (##) 
+	</orgCode.manyOrg>
+	<dateTime.fromTo>
+		 and #date# between #beginDate# and #endDate# 
+	</dateTime.fromTo>
+</synyi>

+ 23 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/6c/6cd8a2555a1536a77c292bafa15a38ff8ddf99fb.svn-base

@@ -0,0 +1,23 @@
+package com.synyi.edc.dao;
+
+import java.util.List;
+
+import com.synyi.edc.pojo.Parameter;
+/**
+ * sqlbuilder 语句生成dao
+ * @author wy
+ *
+ */
+public interface ISqlbuilderDao {
+	/**
+	 * 获取所有的医院列表
+	 * @return
+	 */
+    List<Parameter> getAllOrgInfo();
+    /**
+     * 根据检查名称 模糊穷举所有检查名称
+     * @param par 参数传递为 labName
+     * @return
+     */
+    List<Parameter> getAllLabInfo(Parameter par);
+}

+ 10 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/6d/6ddc3467f511d945363989807ae3fccda00fb694.svn-base

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

+ 138 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/75/75a89c17311f615cbf0cba100c7f3ce8f58dee31.svn-base

@@ -0,0 +1,138 @@
+package com.synyi.edc.pojo;
+/**
+ * 参数传递和返回对象pojo
+ * @author wy
+ *
+ */
+public class Parameter {
+	
+	private static final long serialVersionUID = 1L;
+//	private String type; //条件类型
+//	private String beginDate;
+//	private String endDate;
+//	private String orgArray;
+//	private String orgType; //三种类型   1  全部医院 2 部分医院 3 某家医院
+	private String labName; //检验名称
+	
+	private String queryType; 
+	
+	private String eventData;
+	private String groupData;
+	
+	private String orgName;//医院名称
+	
+	private String itemId; //检查id
+	private String itemName; //检查名称
+	
+	private String testItemName;
+	private String numericalValue;
+	private String referenceRange;
+	private String abnormalFlagName;
+	private String textValue;
+	private String drugName;
+	private String drugId;
+	
+	
+	public String getDrugId() {
+		return drugId;
+	}
+	public void setDrugId(String drugId) {
+		this.drugId = drugId;
+	}
+	public String getDrugName() {
+		return drugName;
+	}
+	public void setDrugName(String drugName) {
+		this.drugName = drugName;
+	}
+	public String getTestItemName() {
+		return testItemName;
+	}
+	public void setTestItemName(String testItemName) {
+		this.testItemName = testItemName;
+	}
+	public String getNumericalValue() {
+		return numericalValue;
+	}
+	public void setNumericalValue(String numericalValue) {
+		this.numericalValue = numericalValue;
+	}
+	public String getReferenceRange() {
+		return referenceRange;
+	}
+	public void setReferenceRange(String referenceRange) {
+		this.referenceRange = referenceRange;
+	}
+	public String getAbnormalFlagName() {
+		return abnormalFlagName;
+	}
+	public void setAbnormalFlagName(String abnormalFlagName) {
+		this.abnormalFlagName = abnormalFlagName;
+	}
+	public String getTextValue() {
+		return textValue;
+	}
+	public void setTextValue(String textValue) {
+		this.textValue = textValue;
+	}
+	public String getItemId() {
+		return itemId;
+	}
+	public void setItemId(String itemId) {
+		this.itemId = itemId;
+	}
+	public String getItemName() {
+		return itemName;
+	}
+	public void setItemName(String itemName) {
+		this.itemName = itemName;
+	}
+	public String getLabName() {
+		return labName;
+	}
+	public void setLabName(String labName) {
+		this.labName = labName;
+	}
+	public String getOrgName() {
+		return orgName;
+	}
+	public void setOrgName(String orgName) {
+		this.orgName = orgName;
+	}
+	public String getOrgCode() {
+		return orgCode;
+	}
+	public void setOrgCode(String orgCode) {
+		this.orgCode = orgCode;
+	}
+	private String orgCode;
+	
+	
+	public String getQueryType() {
+		return queryType;
+	}
+	public void setQueryType(String queryType) {
+		this.queryType = queryType;
+	}
+	public String getEventData() {
+		return eventData;
+	}
+	public void setEventData(String eventData) {
+		this.eventData = eventData;
+	}
+	public String getGroupData() {
+		return groupData;
+	}
+	public void setGroupData(String groupData) {
+		this.groupData = groupData;
+	}
+	@Override
+	public String toString() {
+		return "Parameter [queryType=" + queryType + ", eventData=" + eventData
+				+ ", groupData=" + groupData + "]";
+	}
+	
+ 
+ 
+
+}

+ 26 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/7a/7a5bd07ee332989dbceb75e957ccf5f83feca350.svn-base

@@ -0,0 +1,26 @@
+package org.zsl.testmybatis;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class Test {
+
+	public static void main(String[] args) {
+		// TODO Auto-generated method stub
+		
+		
+    	
+    	Map<String,String> map = new HashMap();
+    	map.put("groupType", "年龄段");
+    	map.put("minValue", "0");
+    	map.put("maxValue", "100");
+    	map.put("interval", "10");
+//    	String str = JSONObject.toJSON(map).toString();
+//    	System.out.println(str);
+//		
+	System.out.println("121221".substring(0,"121221".length()-1));	
+		
+		
+	}
+
+}

+ 5 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/7d/7d78759d70534cdecac7303b6e755d59926d2b08.svn-base

@@ -0,0 +1,5 @@
+获取所有医院列表接口  
+http://192.168.1.211:8080/synyi-service/sqlbuilder/getAllOrg
+
+查询检验名称接口 返回穷举模糊匹配检验名称   POST 形式
+http://192.168.1.211:8080/synyi-service/sqlbuilder/getAlllabInfo?lanName=

+ 8 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/7f/7f913504cbd070c939c170bd92ddb5dc7eb2c405.svn-base

@@ -0,0 +1,8 @@
+sql语句生成接口
+http://192.168.1.211:8080/synyi-service/api/sqlbuilder/generate?eventData=&groupData=&queryType=
+
+获取所有医院列表接口  
+http://192.168.1.211:8080/synyi-service/sqlbuilder/getAllOrg
+
+查询检验名称接口 返回穷举模糊匹配检验名称   POST 形式
+http://192.168.1.211:8080/synyi-service/sqlbuilder/getAlllabInfo?lanName=

+ 52 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/85/85d16f277415057618a39c2fde4773f3f019f71c.svn-base

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:mvc="http://www.springframework.org/schema/mvc"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans  
+                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
+                        http://www.springframework.org/schema/context  
+                        http://www.springframework.org/schema/context/spring-context-3.1.xsd  
+                        http://www.springframework.org/schema/mvc  
+                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
+	<!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
+	<context:component-scan base-package="com.synyi.edc.controller" />
+	
+		
+	<!--避免IE执行AJAX时,返回JSON出现下载文件 -->
+	<bean id="mappingJacksonHttpMessageConverter"
+		class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
+		<property name="supportedMediaTypes">
+			<list>
+				<value>text/html;charset=UTF-8</value>
+			</list>
+		</property>
+	</bean>
+	<!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
+	<bean
+		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
+		<property name="messageConverters">
+			<list>
+				<ref bean="mappingJacksonHttpMessageConverter" />	<!-- JSON转换器 -->
+			</list>
+		</property>
+	</bean>
+	<!-- 定义跳转的文件的前后缀 ,视图模式配置-->
+	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
+		<!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
+		<property name="prefix" value="/WEB-INF/jsp/" />
+		<property name="suffix" value=".jsp" />
+	</bean>
+	
+	<!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->
+	<bean id="multipartResolver"  
+        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
+        <!-- 默认编码 -->
+        <property name="defaultEncoding" value="utf-8" />  
+        <!-- 文件大小最大值 -->
+        <property name="maxUploadSize" value="10485760000" />  
+        <!-- 内存中的最大值 -->
+        <property name="maxInMemorySize" value="40960" />  
+    </bean> 
+
+</beans>

+ 1 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/87/87ab9531e1222351568346cf9057a0cae36112b8.svn-base

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

+ 22 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/87/87c3366fb16b9a152256885465df27df424b945d.svn-base

@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>MyHtml.html</title>
+	
+    <meta name="keywords" content="keyword1,keyword2,keyword3">
+    <meta name="description" content="this is my page">
+    <meta name="content-type" content="text/html; charset=UTF-8">
+    
+    <script>
+    alert(1);
+    
+    
+    </script>
+    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
+
+  </head>
+  
+  <body>
+    This is my HTML page. <br>
+  </body>
+</html>

+ 197 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/95/95de3de1f4cbc349b8c1f76d6719ddc041499e44.svn-base

@@ -0,0 +1,197 @@
+package com.synyi.edc.controller;
+
+import java.io.IOException;
+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.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.synyi.edc.pojo.Parameter;
+import com.synyi.edc.service.ISqlbuilderService;
+import com.synyi.edc.service.IUserService;
+import com.synyi.edc.util.SqlBuilderUtils;
+/**
+ * sql语句生成主要contorller
+ * @author wy
+ *
+ */
+@Controller
+@RequestMapping("/sqlbuilder")
+public class SqlbuilderController {
+	@Resource
+	private IUserService userService;
+	
+	@Resource
+	private ISqlbuilderService sqlbuilderService;
+	
+	
+	@RequestMapping("/toIndex")
+	public String toJ(HttpServletRequest request,Model model){
+//		int userId = Integer.parseInt(request.getParameter("id"));
+//		User user = this.userService.getUserById(userId);
+//		model.addAttribute("user", user);
+		return "index";
+	}
+	/**
+	 * sql生成方法
+	 * @param request
+	 * @param model
+	 * @param param
+	 * @param res
+	 * @return
+	 */
+	@RequestMapping("/generate")
+	public String generate(HttpServletRequest request,Model model,Parameter param,HttpServletResponse res){
+		System.out.println(param);
+		System.out.println();
+		String jsonStr = param.getEventData();
+    	String stepStr = param.getGroupData();
+    	
+    	String returnSql = SqlBuilderUtils.genGroupSql(jsonStr,stepStr);
+		
+		System.out.println(returnSql);
+		
+		 printJson(res,returnSql);
+		 return null;
+	}
+	
+	/**
+	 * 打印返回参数
+	 * @param res
+	 * @param str
+	 */
+	public void printJson(HttpServletResponse res,String str){
+		
+		res.setContentType("text/plain");
+		 res.setCharacterEncoding("utf-8");
+		 res.setHeader("Access-Control-Allow-Origin", "*");  
+		 res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");  
+		 res.setHeader("Access-Control-Max-Age", "3600");  
+		 res.setHeader("Access-Control-Allow-Headers", "x-requested-with");  
+		 PrintWriter pw = null;
+		try {
+			pw = res.getWriter();
+			 pw.write(str);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}finally{
+			 pw.flush();
+			 pw.close();
+		}
+	}
+	/**
+	 * 获取所有的医院列表
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @return
+	 */
+	@RequestMapping("/getAllOrg")
+	public String getAllOrg(HttpServletRequest request,Model model,HttpServletResponse res){
+		
+		List<Parameter> par = sqlbuilderService.getAllOrgInfo();
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getOrgCode());
+			map1.put("label", p.getOrgName());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	/**
+	 * 模糊匹配获取所有的检查名称
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getAlllabInfo")
+	public String getAllLabInfo(HttpServletRequest request,Model model,HttpServletResponse res,Parameter param){
+		
+		List<Parameter> par = sqlbuilderService.getAllLabInfo(param);
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getItemId());
+			map1.put("label", p.getItemName());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	
+	/**
+	 * 获取检验结果,文本结果和数字结果等suggestion列表
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getSuggestionList")
+	public String getSuggestionList(HttpServletRequest request,Model model,HttpServletResponse res,Parameter param){
+		
+		List<Parameter> par = sqlbuilderService.getSuggestionList(param);
+		List list = new ArrayList();
+		for(Parameter p:par){
+			//c.item_name,text_value,numerical_value,reference_range,abnormal_flag_name
+			Map map1 = new HashMap();
+			map1.put("itemName", p.getItemName());
+			map1.put("textValue", p.getTextValue());
+			map1.put("numericalValue", p.getNumericalValue());
+			map1.put("referenceRange", p.getReferenceRange());
+			map1.put("abnormalFlagName", p.getAbnormalFlagName());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	
+	/**
+	 * 模糊匹配获取所有的药品名称
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getAllDrugInfo")
+	public String getAllDrugInfo(HttpServletRequest request,Model model,HttpServletResponse res,Parameter param){
+		
+		List<Parameter> par = sqlbuilderService.getAllDrugInfo(param);
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getDrugId());
+			map1.put("label", p.getDrugName());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	
+}

+ 7 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/96/96034be0eb5a0127f8218d90f1575fc47a627655.svn-base

@@ -0,0 +1,7 @@
+<root>
+  <facet id="jst.jaxrs">
+    <node name="libprov">
+      <attribute name="provider-id" value="maven-lib-provider"/>
+    </node>
+  </facet>
+</root>

文件差異過大導致無法顯示
+ 10351 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/96/96c73f3774471cc8378c77a64ecf09b7f625d8b7.svn-base


+ 32 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/9b/9b50a1db8822572dda8035716cadeac527c6d435.svn-base

@@ -0,0 +1,32 @@
+package org.zsl.testmybatis;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.synyi.edc.util.XmlUtils;
+
+public class Test {
+
+	public static void main(String[] args) {
+		// TODO Auto-generated method stub
+		
+		
+    	
+    	Map<String,String> map = new HashMap();
+    	map.put("groupType", "年龄段");
+    	map.put("minValue", "0");
+    	map.put("maxValue", "100");
+    	map.put("interval", "10");
+    	String str = JSONObject.toJSON(map).toString();
+    	System.out.println(str);
+		
+		
+		
+		
+	}
+
+}

文件差異過大導致無法顯示
+ 39 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/9d/9d67cab29f9aeb9bda3eb4b2ce16d8691a3e9bf0.svn-base


+ 33 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/9e/9e70507fc40d3f225b623f93fb3de61ead7ba6b5.svn-base

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+<entry key="app_preset_prof_preset_name">Test Launch Configuration</entry>
+<entry key="app_preset_prof_preset_filter_s"/>
+<entry key="app_preset_prof_preset_filter_p">com.synyi.edc.controller.*,
+com.synyi.edc.dao.*,
+com.synyi.edc.pojo.*,
+com.synyi.edc.service.*,
+com.synyi.edc.util.*,
+org.zsl.testmybatis.*</entry>
+<entry key="app_preset_prof_preset_alloc_p">10</entry>
+<entry key="app_preset_"/>
+<entry key="app_preset_prof_preset_samplingRefreshRate_s">1000</entry>
+<entry key="app_preset_prof_preset_stacks_p">false</entry>
+<entry key="app_preset_prof_preset_roots_p">com.synyi.edc.controller.**
+com.synyi.edc.dao.**
+com.synyi.edc.pojo.**
+com.synyi.edc.service.**
+com.synyi.edc.util.**
+org.zsl.testmybatis.**
+</entry>
+<entry key="profiler.settings.instrument.empty.methods">false</entry>
+<entry key="myeclipse.profiling.mode">0</entry>
+<entry key="profiler.settings.istrument.getter.setter.methods">false</entry>
+<entry key="app_preset_prof_preset_samplingRate_s">100</entry>
+<entry key="app_preset_prof_preset_filterMode_s">true</entry>
+<entry key="app_preset_prof_preset_selector"/>
+<entry key="app_preset_prof_preset_refreshRate_s">1000</entry>
+<entry key="app_preset_prof_preset_runnables_p">true</entry>
+<entry key="app_preset_prof_preset_filterMode_p">false</entry>
+<entry key="app_preset_prof_preset_memoryMode_p">true</entry>
+</properties>

+ 4 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/a1/a112be21c325d37ebc17baafd40c0386b5d09df1.svn-base

@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1

+ 30 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/a3/a32831eabaa634682490c2c28a24fd63cadf9178.svn-base

@@ -0,0 +1,30 @@
+package com.synyi.edc.service.impl;
+
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+
+import com.synyi.edc.dao.ISqlbuilderDao;
+import com.synyi.edc.pojo.Parameter;
+import com.synyi.edc.service.ISqlbuilderService;
+
+@Service("sqlbuilderService")
+public class SqlbuilderServiceImpl implements ISqlbuilderService {
+	@Resource
+	private ISqlbuilderDao dao;
+	@Override
+	public List<Parameter> getAllOrgInfo() {
+		// TODO Auto-generated method stub
+		return this.dao.getAllOrgInfo();
+	}
+	@Override
+	public List<Parameter> getAllLabInfo(Parameter labname) {
+		// TODO Auto-generated method stub
+		return this.dao.getAllLabInfo( labname);
+	}
+
+	
+	
+}

+ 2 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/a5/a554d96e42f97db4812bcdcc0328378613610b2f.svn-base

@@ -0,0 +1,2 @@
+#Fri Jul 18 08:56:57 CST 2014
+CodeGenContainer=java.util.Vector

+ 43 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/a5/a56b4e139e51229af148bc26f24f52f8dad41744.svn-base

@@ -0,0 +1,43 @@
+package com.synyi.edc.pojo;
+
+public class User {
+    private Integer id;
+
+    private String userName;
+
+    private String password;
+
+    private Integer age;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName == null ? null : userName.trim();
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password == null ? null : password.trim();
+    }
+
+    public Integer getAge() {
+        return age;
+    }
+
+    public void setAge(Integer age) {
+        this.age = age;
+    }
+}

+ 17 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/a9/a9678c243a3b3831164462c6997e47b70a1e0612.svn-base

@@ -0,0 +1,17 @@
+package com.synyi.edc.dao;
+
+import com.synyi.edc.pojo.User;
+
+public interface IUserDao {
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(User record);
+
+    int insertSelective(User record);
+
+    User selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(User record);
+
+    int updateByPrimaryKey(User record);
+}

+ 141 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/ab/abf822fbaba8ef6ff29d6ef309f688d17702fef4.svn-base

@@ -0,0 +1,141 @@
+/*package com.synyi.edc.controller;
+
+import java.io.IOException;
+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.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import com.alibaba.fastjson.JSONObject;
+import com.synyi.edc.pojo.Parameter;
+import com.synyi.edc.pojo.User;
+import com.synyi.edc.service.IUserService;
+import com.synyi.edc.util.XmlUtils;
+
+@Controller
+@RequestMapping("/user")
+public class UserController {
+	@Resource
+	private IUserService userService;
+	
+	@RequestMapping("/showUser")
+	public String toIndex(HttpServletRequest request,Model model){
+		int userId = Integer.parseInt(request.getParameter("id"));
+		User user = this.userService.getUserById(userId);
+		model.addAttribute("user", user);
+		System.out.println(XmlUtils.getMapString("orgCode.oneOrg"));
+		return "showUser";
+	}
+	
+	@RequestMapping("/toIndex")
+	public String toJ(HttpServletRequest request,Model model){
+		int userId = Integer.parseInt(request.getParameter("id"));
+		User user = this.userService.getUserById(userId);
+		model.addAttribute("user", user);
+		return "index";
+	}
+	
+	@RequestMapping("/getAllOrg")
+	public String getAllOrg(HttpServletRequest request,Model model,HttpServletResponse res){
+		
+		Map map1 = new HashMap();
+		
+		map1.put("id", "488099744");
+		map1.put("name", "福州一院");
+		
+		Map map2 = new HashMap();
+		
+		map2.put("id", "48809974x");
+		map2.put("name", "福州儿院");
+		
+		Map map3 = new HashMap();
+		
+		map3.put("id", "488099743");
+		map3.put("name", "福州中医院");
+		
+		Map map4 = new HashMap();
+		
+		map4.put("id", "488099757");
+		map4.put("name", "福州传染病医院");
+		
+		List list = new ArrayList();
+		list.add(map1);
+		list.add(map2);
+		list.add(map3);
+		list.add(map4);
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		 res.setContentType("text/plain");
+		 res.setCharacterEncoding("utf-8");
+		 System.out.println(res);
+		 PrintWriter pw = null;
+		try {
+			pw = res.getWriter();
+			 pw.write(jsonString);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}finally{
+			 pw.flush();
+			 pw.close();
+		}
+		return null;
+	}
+	
+	@RequestMapping("/generateSql")
+	public String generateSql(HttpServletRequest request,Model model,Parameter param,HttpServletResponse res){
+		List list = new ArrayList();
+		if(StringUtils.isEmpty(param.getBeginDate())||StringUtils.isEmpty(param.getEndDate())||StringUtils.isEmpty(param.getOrgArray())){
+			Map map = new HashMap();
+			map.put("1", "请检查是否有为空的参数");
+			list.add(map);
+			printJson(res,list);
+		}else{
+			System.out.println(param);
+			Map map = new HashMap();
+			String resultSql = null ;
+			if("visit.in".equals(param.getType())){
+				resultSql = "select count(distinct patient_id) 人数,count(1) 人次  from visit.inpat_record where org_code in ("+param.getOrgArray()+") and is_valid=true"+ 
+							" and in_time between to_date('"+param.getBeginDate()+"','yyyy-mm-dd') and  to_date('"+param.getEndDate()+"','yyyy-mm-dd') ";
+			}else if("visit.out".equals(param.getType())){
+				resultSql = "select count(distinct patient_id) 人数,count(1) 人次  from visit.outpatient_record where org_code in ("+param.getOrgArray()+") and is_valid=true"+ 
+						" and reg_time between to_date('"+param.getBeginDate()+"','yyyy-mm-dd') and  to_date('"+param.getEndDate()+"','yyyy-mm-dd') ";
+			}else if("visit.visit".equals(param.getType())){
+				resultSql = "select count(distinct patient_id) 人数,count(1) 人次  from visit.visit_record where org_code in ("+param.getOrgArray()+") and is_valid=true"+ 
+						" and visit_time between to_date('"+param.getBeginDate()+"','yyyy-mm-dd') and  to_date('"+param.getEndDate()+"','yyyy-mm-dd') ";
+			}
+			map.put("sql", resultSql);
+			list.add(map);
+			printJson(res,list);
+		}
+		return null;
+	}
+	
+	public void printJson(HttpServletResponse res,List list){
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		 res.setContentType("text/plain");
+		 res.setCharacterEncoding("utf-8");
+		 System.out.println(res);
+		 PrintWriter pw = null;
+		try {
+			pw = res.getWriter();
+			 pw.write(jsonString);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}finally{
+			 pw.flush();
+			 pw.close();
+		}
+	}
+}
+*/

+ 69 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/ac/acf8c0b2610eb9a2f38fa58ef20bc6f59b886a0d.svn-base

@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
+  <display-name>Archetype Created Web Application</display-name>
+  <context-param>
+    <param-name>contextConfigLocation</param-name>
+    <param-value>classpath:spring-mybatis.xml</param-value>
+  </context-param>
+  <filter>
+    <filter-name>encodingFilter</filter-name>
+    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
+    <async-supported>true</async-supported>
+    <init-param>
+      <param-name>encoding</param-name>
+      <param-value>UTF-8</param-value>
+    </init-param>
+  </filter>
+  <filter-mapping>
+    <filter-name>encodingFilter</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+  <listener>
+    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+  </listener>
+  <listener>
+    <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
+  </listener>
+  <servlet>
+    <servlet-name>SpringMVC</servlet-name>
+    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+    <init-param>
+      <param-name>contextConfigLocation</param-name>
+      <param-value>classpath:spring-mvc.xml</param-value>
+    </init-param>
+    <load-on-startup>1</load-on-startup>
+    <async-supported>true</async-supported>
+  </servlet>
+ 
+  <servlet-mapping>
+    <servlet-name>SpringMVC</servlet-name>
+    <url-pattern>/</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+      <servlet-name >default </servlet-name >         
+         <url-pattern >*.js</url-pattern>      
+      </servlet-mapping >
+      <servlet-mapping >
+          <servlet-name >default </servlet-name >             
+          <url-pattern >*.css</url-pattern>        
+     </servlet-mapping >
+      <servlet-mapping >
+          <servlet-name >default </servlet-name >             
+          <url-pattern >*.html</url-pattern>        
+     </servlet-mapping >
+       <servlet-mapping >
+          <servlet-name >default </servlet-name >             
+          <url-pattern >*.htm</url-pattern>        
+     </servlet-mapping >
+      <servlet-mapping >
+          <servlet-name >default </servlet-name >             
+          <url-pattern >*.gif</url-pattern>        
+     </servlet-mapping >
+  
+  <welcome-file-list>
+    <welcome-file>/index.jsp</welcome-file>
+  </welcome-file-list>
+  <session-config>
+    <session-timeout>15</session-timeout>
+  </session-config>
+</web-app>

+ 246 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/af/af02437a9fde449a36cb289d6e6a4d60e3f3ad67.svn-base

@@ -0,0 +1,246 @@
+/* 
+ * My97 DatePicker 4.7
+ */
+
+.WdateDiv{
+	width:180px;
+	background-color:#FFFFFF;
+	border:#bbb 1px solid;
+	padding:2px;
+}
+
+.WdateDiv2{
+	width:360px;
+}
+.WdateDiv *{font-size:9pt;}
+
+.WdateDiv .NavImg a{
+	display:block;
+	cursor:pointer;
+	height:16px;
+	width:16px;
+}
+
+.WdateDiv .NavImgll a{
+	float:left;
+	background:transparent url(img.gif) no-repeat scroll 0 0;
+}
+.WdateDiv .NavImgl a{
+	float:left;
+	background:transparent url(img.gif) no-repeat scroll -16px 0;
+}
+.WdateDiv .NavImgr a{
+	float:right;
+	background:transparent url(img.gif) no-repeat scroll -32px 0;
+}
+.WdateDiv .NavImgrr a{
+	float:right;
+	background:transparent url(img.gif) no-repeat scroll -48px 0;
+}
+
+.WdateDiv #dpTitle{
+	height:24px;
+	margin-bottom:2px;
+	padding:1px;
+}
+
+.WdateDiv .yminput{
+	margin-top:2px;
+	text-align:center;
+	height:20px;
+	border:0px;
+	width:50px;
+	cursor:pointer;		
+}
+
+.WdateDiv .yminputfocus{
+	margin-top:2px;
+	text-align:center;
+	font-weight:bold;
+	height:20px;
+	color:blue;
+	border:#ccc 1px solid;
+	width:50px;
+}
+
+.WdateDiv .menuSel{
+	z-index:1;
+	position:absolute;
+	background-color:#FFFFFF;	
+	border:#ccc 1px solid;
+	display:none;
+}
+
+.WdateDiv .menu{
+	cursor:pointer;
+	background-color:#fff;
+}
+
+.WdateDiv .menuOn{
+	cursor:pointer;
+	background-color:#BEEBEE;
+}
+
+.WdateDiv .invalidMenu{
+	color:#aaa;
+}
+
+.WdateDiv .YMenu{
+	margin-top:20px;
+	
+}
+
+.WdateDiv .MMenu{
+	margin-top:20px;
+	*width:62px;
+}
+
+.WdateDiv .hhMenu{
+	margin-top:-90px; 
+	margin-left:26px;
+}
+
+.WdateDiv .mmMenu{
+	margin-top:-46px; 
+	margin-left:26px;
+}
+
+.WdateDiv .ssMenu{
+	margin-top:-24px; 
+	margin-left:26px;
+}
+
+ .WdateDiv .Wweek {
+ 	text-align:center;
+	background:#DAF3F5;
+	border-right:#BDEBEE 1px solid;
+ }
+
+.WdateDiv .MTitle{
+	background-color:#BDEBEE;
+}
+.WdateDiv .WdayTable2{
+	border-collapse:collapse;
+	border:#c5d9e8 1px solid;
+}
+.WdateDiv .WdayTable2 table{
+	border:0;
+}
+
+.WdateDiv .WdayTable{
+	line-height:20px;
+	border:#c5d9e8 1px solid;
+}
+.WdateDiv .WdayTable td{
+	text-align:center;
+}
+
+.WdateDiv .Wday{
+	cursor:pointer;
+}
+
+.WdateDiv .WdayOn{
+	cursor:pointer;
+	background-color:#C0EBEF;
+}
+
+.WdateDiv .Wwday{
+	cursor:pointer;
+	color:#FF2F2F;
+}
+
+.WdateDiv .WwdayOn{
+	cursor:pointer;
+	color:#000;
+	background-color:#C0EBEF;
+}
+.WdateDiv .Wtoday{
+	cursor:pointer;
+	color:blue;
+}
+.WdateDiv .Wselday{
+	background-color:#A9E4E9;
+}
+.WdateDiv .WspecialDay{
+	background-color:#66F4DF;
+}
+
+.WdateDiv .WotherDay{ 
+	cursor:pointer;
+	color:#6A6AFF;	
+}
+
+.WdateDiv .WotherDayOn{ 
+	cursor:pointer;
+	background-color:#C0EBEF;	
+}
+
+.WdateDiv .WinvalidDay{
+	color:#aaa;
+}
+
+.WdateDiv #dpTime{
+	float:left;
+	margin-top:3px;
+	margin-right:30px;
+}
+
+.WdateDiv #dpTime #dpTimeStr{
+	margin-left:1px;
+}
+
+.WdateDiv #dpTime input{
+	width:18px;
+	height:20px;
+	text-align:center;
+	border:#ccc 1px solid;	
+}
+
+.WdateDiv #dpTime .tB{
+	border-right:0px;
+}
+
+.WdateDiv #dpTime .tE{
+	border-left:0;
+	border-right:0;
+}
+
+.WdateDiv #dpTime .tm{
+	width:7px;
+	border-left:0;
+	border-right:0;
+}
+
+.WdateDiv #dpTime #dpTimeUp{
+	height:10px;
+	width:13px;
+	border:0px;
+	background:url(img.gif) no-repeat -32px -16px;
+}
+
+.WdateDiv #dpTime #dpTimeDown{
+	height:10px;
+	width:13px;
+	border:0px;
+    background:url(img.gif) no-repeat -48px -16px;
+}
+
+ .WdateDiv #dpQS {
+ 	float:left;
+	margin-right:3px;
+	margin-top:3px;
+	background:url(img.gif) no-repeat 0px -16px;
+	width:20px;
+	height:20px;
+	cursor:pointer;
+ }
+.WdateDiv #dpControl {
+	text-align:right;	
+}
+.WdateDiv .dpButton{ 
+	height:20px;
+	width:45px;
+	border:#ccc 1px solid;
+	margin-top:2px;
+	margin-right:1px;
+}

+ 322 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/af/af3f1b949c679e85dd730846370e6209a140e331.svn-base

@@ -0,0 +1,322 @@
+package com.synyi.edc.controller;
+
+import java.io.IOException;
+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.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.log4j.Logger;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import com.alibaba.fastjson.JSONObject;
+import com.synyi.edc.pojo.Parameter;
+import com.synyi.edc.service.ISqlbuilderService;
+import com.synyi.edc.util.SqlBuilderUtils;
+/**
+ * sql语句生成主要contorller
+ * @author wy
+ *
+ */
+@Controller
+@RequestMapping("/sqlbuilder")
+public class SqlbuilderController {
+	private Logger log = Logger.getLogger(SqlbuilderController.class);
+	
+	@Resource
+	private ISqlbuilderService sqlbuilderService;
+	
+	
+	@RequestMapping("/toIndex")
+	public String toJ(HttpServletRequest request,Model model){
+//		int userId = Integer.parseInt(request.getParameter("id"));
+//		User user = this.userService.getUserById(userId);
+//		model.addAttribute("user", user);
+		return "index";
+	}
+	/**
+	 * sql生成方法
+	 * @param request
+	 * @param model
+	 * @param param
+	 * @param res
+	 * @return
+	 */
+	@RequestMapping("/generate")
+	public String generate(HttpServletRequest request,Model model,Parameter param,HttpServletResponse res){
+		log.info("参数传递:"+param);
+		String jsonStr = param.getEventData();
+    	String stepStr = param.getGroupData();
+    	
+    	String returnSql = SqlBuilderUtils.genGroupSql(jsonStr,stepStr);
+		log.info("生成sql:"+returnSql);
+		
+		printJson(res,returnSql);
+		 return null;
+	}
+	
+	/**
+	 * 打印返回参数
+	 * @param res
+	 * @param str
+	 */
+	public void printJson(HttpServletResponse res,String str){
+		
+		res.setContentType("text/plain");
+		 res.setCharacterEncoding("utf-8");
+		 res.setHeader("Access-Control-Allow-Origin", "*");  
+		 res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");  
+		 res.setHeader("Access-Control-Max-Age", "3600");  
+		 res.setHeader("Access-Control-Allow-Headers", "x-requested-with");  
+		 PrintWriter pw = null;
+		try {
+			pw = res.getWriter();
+			 pw.write(str);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}finally{
+			 pw.flush();
+			 pw.close();
+		}
+	}
+	/**
+	 * 获取所有的医院列表
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @return
+	 */
+	@RequestMapping("/getAllOrg")
+	public String getAllOrg(HttpServletRequest request,Model model,HttpServletResponse res){
+		
+		List<Parameter> par = sqlbuilderService.getAllOrgInfo();
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getOrgCode());
+			map1.put("label", p.getOrgName());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	/**
+	 * 模糊匹配获取所有的检查名称
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getAlllabInfo")
+	public String getAllLabInfo(HttpServletRequest request,Model model,HttpServletResponse res,Parameter param){
+		
+		List<Parameter> par = sqlbuilderService.getAllLabInfo(param);
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getItemId());
+			map1.put("label", p.getItemName());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	
+	/**
+	 * 获取检验结果,文本结果和数字结果等suggestion列表
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getSuggestionList")
+	public String getSuggestionList(HttpServletRequest request,Model model,HttpServletResponse res,Parameter param){
+		
+		List<Parameter> par = sqlbuilderService.getSuggestionList(param);
+		List list = new ArrayList();
+		for(Parameter p:par){
+			//c.item_name,text_value,numerical_value,reference_range,abnormal_flag_name
+			Map map1 = new HashMap();
+			map1.put("itemName", p.getItemName());
+			map1.put("textValue", p.getTextValue());
+			map1.put("numericalValue", p.getNumericalValue());
+			map1.put("referenceRange", p.getReferenceRange());
+			map1.put("abnormalFlagName", p.getAbnormalFlagName());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	
+	/**
+	 * 模糊匹配获取所有的药品名称
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getAllDrugInfo")
+	public String getAllDrugInfo(HttpServletRequest request,Model model,HttpServletResponse res,Parameter param){
+		
+		List<Parameter> par = sqlbuilderService.getAllDrugInfo(param);
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getDrugId());
+			map1.put("label", p.getDrugName());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	/**
+	 * 获取所有的药品大类名称
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getAllDrugCategory")
+	public String getAllDrugCategory(HttpServletRequest request,Model model,HttpServletResponse res){
+		
+		List<Parameter> par = sqlbuilderService.getAllDrugCategory();
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getDrugId());
+			map1.put("label", p.getDrugName());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	/**
+	 * 根据药品名称获取模糊匹配的suggestion
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getSuggestionByDrug")
+	public String getSuggestionByDrug(HttpServletRequest request,Model model,HttpServletResponse res,Parameter param){
+		
+		List<Parameter> par = sqlbuilderService.getSuggestionByDrug(param);
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getDrugId());
+			map1.put("label", p.getDrugName());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	/**
+	 * 根据药品父节点名称获取子节点药品名称
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getChildDrug")
+	public String getChildDrug(HttpServletRequest request,Model model,HttpServletResponse res,Parameter param){
+		
+		List<Parameter> par = sqlbuilderService.getChildDrug(param);
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getDrugId());
+			map1.put("label", p.getDrugName());
+			map1.put("parent", p.getParent());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	
+	/**
+	 * 递归通过子类别将所有父类药品列出来
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getParentPath")
+	public String getParentPath(HttpServletRequest request,Model model,HttpServletResponse res,Parameter param){
+		
+		List<Parameter> par = sqlbuilderService.getParentPath(param);
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getDrugId());
+			map1.put("label", p.getDrugName());
+			map1.put("parent", p.getParent());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	
+	/**
+	 * 递归通过子类别将所有父类药品列出来并且所有父类的同类列出来
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getAllDrugPathInfo")
+	public String getAllDrugPathInfo(HttpServletRequest request,Model model,HttpServletResponse res,Parameter param){
+		
+		List<Parameter> par = sqlbuilderService.getParentPath(param);
+		List<String> strList = new ArrayList();
+		for(Parameter p:par){
+			strList.add(p.getDrugId());
+		}
+		param.setStrList(strList);
+		param.setStrSize(strList.size());
+		List<Parameter> pathInfo = sqlbuilderService.getAllDrugPathInfo(param);
+		List list = new ArrayList();
+		for(Parameter p:pathInfo){
+			Map map1 = new HashMap();
+			map1.put("value", p.getDrugId());
+			map1.put("label", p.getDrugName());
+			map1.put("parent", p.getParent());
+			list.add(map1);
+		}
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	
+}

+ 80 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/b2/b2126fa83b0abcfbf83eee1b9fcf209cba9cf147.svn-base

@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.synyi.edc.dao.ISqlbuilderDao" >
+  <resultMap id="BaseResultMap" type="com.synyi.edc.pojo.Parameter" >
+    <result column="org_code" property="orgCode" jdbcType="VARCHAR" />
+    <result column="org_name" property="orgName" jdbcType="VARCHAR" />
+    <result column="item_id" property="itemId" jdbcType="VARCHAR" />
+    <result column="item_name" property="itemName" jdbcType="VARCHAR" />
+    
+    <result column="test_item_name" property="testItemName" jdbcType="VARCHAR" />
+    <result column="text_value" property="textValue" jdbcType="VARCHAR" />
+    <result column="numerical_value" property="numericalValue" jdbcType="VARCHAR" />
+    <result column="reference_range" property="referenceRange" jdbcType="VARCHAR" />
+    <result column="abnormal_flag_name" property="abnormalFlagName" jdbcType="VARCHAR" />
+    
+    <result column="drug_id" property="drugId" jdbcType="VARCHAR" />
+    <result column="drug_name" property="drugName" jdbcType="VARCHAR" />
+    <result column="parent" property="parent" jdbcType="VARCHAR" />
+    
+  </resultMap>
+  <select id="getAllOrgInfo" resultMap="BaseResultMap"  >
+    select 
+    org_code,org_name from mdm.organization
+  </select>
+  <select id="getAllLabInfo" resultMap="BaseResultMap"  parameterType="com.synyi.edc.pojo.Parameter">
+    select item_id,item_name from mdm.lis_item where code_sys_id =197 
+   	<if test="labName != null and labName != ''">
+   		and item_name like '%${labName}%'  
+   	</if>
+  </select>
+  
+  <select id="getSuggestionList" resultMap="BaseResultMap"  parameterType="com.synyi.edc.pojo.Parameter">
+    select distinct c.item_name,text_value,numerical_value,reference_range,abnormal_flag_name from  
+								lab.lab_report_result a join  mdm.mdm_map b on a.test_item_id=b.source_id 
+											 join mdm.lis_item c on  b.map_id=c.item_id 
+		where b.md_type = 'lis_item' and c.code_sys_id =197 
+   	<if test="itemId != null and itemId != ''">
+   		and c.item_id in (${itemId})
+   	</if>
+  </select>
+  
+   <select id="getChildDrug" resultMap="BaseResultMap"  parameterType="com.synyi.edc.pojo.Parameter">
+    select id drug_id,parent, standard_ch drug_name from drug_new where parent = '${drugId}'
+  </select>
+  <select id="getAllDrugInfo" resultMap="BaseResultMap"  parameterType="com.synyi.edc.pojo.Parameter">
+    select drug_id,case when regular_name is null then trade_name else regular_name end drug_name
+  from mdm.drug t where t.code_sys_id = 51  
+   	<if test="drugName != null and drugName != ''">
+   		and (regular_name like '%${drugName}%'  or trade_name like '%${drugName}%')
+   	</if>
+  </select>
+  
+  <select id="getSuggestionByDrug" resultMap="BaseResultMap"  parameterType="com.synyi.edc.pojo.Parameter">
+    select id drug_id, standard_ch drug_name from drug_new 
+   	<if test="drugName != null and drugName != ''">
+   		where original_name like '%${drugName}%' or standard_ch like '%${drugName}%'
+   	</if>
+  </select>
+   <select id="getAllDrugCategory" resultMap="BaseResultMap" >
+    select id drug_id,standard_ch drug_name from drug_new where parent = 'drg000001'
+  </select>
+  <select id="getAllDrugPathInfo" resultMap="BaseResultMap"  parameterType="com.synyi.edc.pojo.Parameter">
+  	<foreach collection="strList" item="str" index="idx">
+ 		<if test="idx+1 != strSize">
+ 			select id drug_id,parent,standard_ch drug_name from drug_new where parent = '${str}' union all
+ 		</if>		
+ 		<if test="idx+1 == strSize">
+ 			select id drug_id,parent,standard_ch drug_name from drug_new where parent = '${str}' 
+ 		</if>
+	</foreach>
+  </select>
+  
+  <select id="getParentPath" resultMap="BaseResultMap" >
+    with RECURSIVE  temp1 as (
+	select * from drug_new where id ='${drugId}'
+	union ALL
+	select d.* from drug_new d ,temp1 where temp1.parent=d.id
+	)select id drug_id,parent,standard_ch drug_name from temp1 where id != 'drg000001'
+  </select>
+</mapper>

+ 440 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/b2/b26f35c9c9746b110c9465b4d5ee37119b4f9965.svn-base

@@ -0,0 +1,440 @@
+package com.synyi.edc.controller;
+
+import java.io.IOException;
+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.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.synyi.edc.pojo.Parameter;
+import com.synyi.edc.service.ISqlbuilderService;
+import com.synyi.edc.service.IUserService;
+/**
+ * sql语句生成主要contorller
+ * @author wy
+ *
+ */
+@Controller
+@RequestMapping("/sqlbuilder")
+public class SqlbuilderController {
+	@Resource
+	private IUserService userService;
+	
+	@Resource
+	private ISqlbuilderService sqlbuilderService;
+	
+	
+	@RequestMapping("/toIndex")
+	public String toJ(HttpServletRequest request,Model model){
+//		int userId = Integer.parseInt(request.getParameter("id"));
+//		User user = this.userService.getUserById(userId);
+//		model.addAttribute("user", user);
+		return "index";
+	}
+	/**
+	 * sql生成方法
+	 * @param request
+	 * @param model
+	 * @param param
+	 * @param res
+	 * @return
+	 */
+	@RequestMapping("/generate")
+	public String generate(HttpServletRequest request,Model model,Parameter param,HttpServletResponse res){
+		System.out.println(param);
+		System.out.println();
+		String jsonStr = param.getEventData();
+    	String stepStr = param.getGroupData();
+    	
+    	String returnSql = genGroupSql(jsonStr,stepStr);
+		
+		System.out.println(returnSql);
+		
+		 printJson(res,returnSql);
+		 return null;
+	}
+	/**
+	 * sql生成分组方法
+	 * @param jsonStr
+	 * @param stepStr
+	 * @return
+	 */
+	public static String genGroupSql(String jsonStr,String stepStr){
+		Map<String,Map> temp1 = null;  //入排条件1
+		Map temp2 = null;  //入排条件2
+		List<Map> lis = (List)JSON.parse(jsonStr);
+		if(!CollectionUtils.isEmpty(lis)){
+			temp1 = lis.get(0);
+			if(lis.size()>1){
+				temp2 = lis.get(1);
+			}
+		}
+		
+		System.out.println(stepStr);
+		Map stepMap = (Map)JSON.parse(stepStr);;
+		
+		int maxValue = 0;
+		int minValue = 0;
+		int interval = 0;
+		
+		try{
+			if(StringUtils.isNotBlank((String)stepMap.get("maxValue"))){
+				maxValue = Integer.parseInt((String)stepMap.get("maxValue"));
+			}
+			if(StringUtils.isNotBlank((String)stepMap.get("minValue"))){
+				minValue = Integer.parseInt((String)stepMap.get("minValue"));
+			}
+			if(StringUtils.isNotBlank((String)stepMap.get("interval"))){
+				interval = Integer.parseInt((String)stepMap.get("interval"));
+			}
+		}catch(Exception e){}
+		
+		String groupType = stepMap.get("groupType")==null?"":(String)stepMap.get("groupType");
+		
+		String returnSql = "with temp1 as ("+event_diagnose(temp1,stepMap)+")";
+		if(!CollectionUtils.isEmpty(temp2)){
+			returnSql += ", <br/> temp2 as ("+event_diagnose(temp2,stepMap)+")";
+			
+			String rel = (String)temp2.get("关系");
+			if("or".equals(rel)){
+				returnSql += " <br/> select ";
+				
+				if(StringUtils.isNotBlank(groupType)){
+					switch((String)stepMap.get("groupType")){
+						case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval)+" 年龄段,";break;
+						case "年份":returnSql += "to_char(diag_time,'yyyy') 年份,";break;
+						case "医院":returnSql += "t.org_code,org.org_name,";break;
+						case "就诊类型":returnSql += "visit_type,";break;
+						case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end 性别,";break;
+					}
+				}
+				
+				if("patientsNumber".equals((String)stepMap.get("queryType"))){
+					returnSql += "count(distinct t.patient_id) 人数";
+				}else{
+					returnSql += "count(t.patient_id) 人次";
+				}
+				returnSql += " <br/> from (select * from temp1 union all  select * from temp2 )t ";
+				if("性别".equals((String)stepMap.get("groupType"))||"年龄段".equals((String)stepMap.get("groupType"))){
+					returnSql += " join patient.patient_master_info c on t.patient_id=c.patient_id <br/>";
+				}
+				if("医院".equals((String)stepMap.get("groupType"))){
+					returnSql += " join mdm.organization org on t.org_code=org.org_code  <br/>";
+				}
+				if(StringUtils.isNotBlank(groupType)){
+					returnSql += " group by ";
+					switch((String)stepMap.get("groupType")){
+						case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval);break;
+						case "年份":returnSql += "to_char(diag_time,'yyyy') ";break;
+						case "医院":returnSql += "t.org_code,org.org_name";break;
+						case "就诊类型":returnSql += "visit_type";break;
+						case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end";break;
+					}
+				}
+			}else if("and".equals(rel)){
+				returnSql += "select count(1) 人数 from (select distinct temp1.patient_id from temp1)a join (select distinct temp2.patient_id from temp2 ) b on a.patient_id=b.patient_id";
+			}
+		}else{//只有temp1的情况
+			
+			returnSql += "<br/> select ";
+			if(StringUtils.isNotBlank(groupType)){
+				switch((String)stepMap.get("groupType")){
+					case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval)+" 年龄段,";break;
+					case "年份":returnSql += "to_char(diag_time,'yyyy') 年份,";break;
+					case "医院":returnSql += "temp1.org_code,org.org_name,";break;
+					case "就诊类型":returnSql += "visit_type,";break;
+					case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end 性别,<br/>";break;
+				}
+			}
+			if("patientsNumber".equals((String)stepMap.get("queryType"))){
+				returnSql += "count(distinct temp1.patient_id) 人数";
+			}else{  //visitsNumber 人次
+				returnSql += "count(temp1.patient_id) 人次";
+			}
+			returnSql += " from temp1 ";
+			
+			if("性别".equals((String)stepMap.get("groupType"))||"年龄段".equals((String)stepMap.get("groupType"))){
+				returnSql += " join patient.patient_master_info c on temp1.patient_id=c.patient_id <br/> ";
+			}
+			if("医院".equals((String)stepMap.get("groupType"))){
+				returnSql += " join mdm.organization org on temp1.org_code=org.org_code  <br/>";
+			}
+			
+			if(StringUtils.isNotBlank(groupType)){
+				returnSql += "group by ";
+				
+				switch((String)stepMap.get("groupType")){
+					case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval);break;
+					case "年份":returnSql += "to_char(diag_time,'yyyy') ";break;
+					case "医院":returnSql += "temp1.org_code,org.org_name";break;
+					case "就诊类型":returnSql += "visit_type";break;
+					case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end";break;
+				}
+			}
+		}
+		return returnSql;
+	}
+	/**
+	 * 按照年龄段分组方法
+	 * @param min  最小年龄
+	 * @param max  最大年龄
+	 * @param interval  年龄间隔
+	 * @return
+	 */
+	  public static String generateAgePart(int min,int max,int interval){
+	    	String str = " case";
+	    	
+	    	int temp = min;
+	    	for(int i=min;i<max;i+=interval){
+	    		if(i>min){
+	    			//System.out.println(temp+":"+i);
+	    			if(temp==min){
+	    				str += " when extract(year from age(diag_time,c.birth_date))  >="+temp +" and extract(year from age(diag_time,c.birth_date)) <"+i+" then '"+temp+"到"+i+"'<br/>";
+//	    			
+	    				}else if(i==max){
+//	    				str += " when extract(year from age(temp1.diag_time,c.birth_date)) <="+max+" then '"+temp+"到"+max+"' end  ";
+	    			}else{
+	    				str += " when extract(year from age(diag_time,c.birth_date)) <"+i+" then '"+temp+"到"+i+"'<br/>";
+	    			}	
+	    			temp = i;
+	    		}
+	    	}
+	    	str += " when extract(year from age(diag_time,c.birth_date)) <="+max+" then '"+temp+"到"+max+"' end <br/> ";
+	    //	System.out.println(str);
+	    	return str;
+	    }
+	/**
+	 * 按照事件  为  诊断 的sql语句生成方法
+	 * @param temp1
+	 * @param groupMap
+	 * @return
+	 */
+	  public static String event_diagnose(Map<String,Map> temp1,Map groupMap){
+	    	/*{"事件":{"diag_standard":"I21,I22,I23","event_type":"诊断"},"医院":{"org_code":"9983838x,111999441,2224589985,112445580"},
+			 * "就诊类型":{"visit_type":"门诊"},"时间":{"time_from":"绝对时间:2017-01-01","time_to":"绝对时间:2017-01-10"}}
+			 * 
+			 * {\"事件\":{\"diag_standard\":[\"I220\",\"I230\"],\"diag_primitive\":[\"I220\",\"I230\"],\"event_type\":\"diagnosis\"},
+			 * \"医院\":{\"org_code\":[\"111111\",\"222222\"]},\"就诊类型\":{\"visit_type\":\"hospitalization\"},\"时间\":{\"time_from\":\"2018-7-2\",\"time_to\":\"2018-8-12\"},
+			 * \"关系\":\"or\"}
+			 * 
+			 * */
+			String resultSql = "";
+			String condition = "";
+			//String eventType = "";
+			
+			for(String str:temp1.keySet()){
+				if("事件".equals(str)){  //"事件":{"diag_standard":"I21,I22,I23","event_type":"诊断"}
+					Map temp = temp1.get(str);
+					//if(temp.get("event_type").equals("diagnosis")){
+						//eventType = (String)temp.get("event_type");
+						//,diag_time,org_code,case when visit_type='O' then '门诊' when visit_type='I' then '住院' when is_emergency=true then '急诊' else '未知' end visit_type
+						resultSql += " select * from(select a.patient_id";
+								String groupType = groupMap.get("groupType")==null?"":(String)groupMap.get("groupType");
+								if(StringUtils.isNotBlank(groupType)){//"{\"groupType\":\"医院\",\"interval\":\"\",\"maxValue\":\"\",\"minValue\":\"\"}";
+									switch(groupType){
+										case "年龄段":resultSql += ",coalesce(a.diag_time,b.visit_time) diag_time";break;
+										case "年份":resultSql += ",coalesce(a.diag_time,b.visit_time) diag_time";break;
+										case "医院":resultSql += ",a.org_code";break;
+										case "就诊类型":resultSql += ",case when b.visit_type='O' then '门诊' when b.visit_type='I' then '住院' when is_emergency=true then '急诊' else '未知' end visit_type";break;
+										case "性别":resultSql += "";break;
+									}
+								}
+								
+								resultSql += ",jsonb_array_elements(diag_sycode_set) "+
+										"as sycode  <br/> from diag.patient_diagnose a ";
+								
+								String time_from = temp1.get("时间")==null?"":(String)temp1.get("时间").get("time_from");
+								String visit_type =  temp1.get("就诊类型")==null?"":(String)temp1.get("就诊类型").get("visit_type");
+								if(StringUtils.isNotBlank(time_from)||StringUtils.isNotBlank(visit_type)){
+									resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";
+								}else{
+									if(StringUtils.isNotBlank(groupType)){
+										switch((String)groupMap.get("groupType")){
+											case "年龄段":resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";break;
+											case "年份":resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";break;
+											case "就诊类型":resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";break;
+											//case "性别":resultSql += "";break;
+										}
+									}
+								}									
+								resultSql += "where 1=1 $condition$ ) t1  <br/> ";
+						
+						List<String> diag_list = (List)temp.get("diag_standard");
+						List<String> diag_primitive = (List)temp.get("diag_primitive");
+						if(diag_list!=null&&diag_list.size()>0){
+							resultSql += " join (select diag_code,diag_code2,diag_name from mdm.diagnose a where a.code_sys_id=30 <br/> ";
+							
+							if(diag_list.size()>1){
+								for(int i = 0;i<diag_list.size();i++){
+									String diag_c = diag_list.get(i);
+									if(i==0){
+										resultSql += " and ( diag_code2 like '"+diag_c+"%'";
+									}else if(i==diag_list.size()-1){
+										resultSql += " or diag_code2 like '"+diag_c+"%')";
+									}else{
+										resultSql += " or diag_code2 like '"+diag_c+"%'";
+									}
+								}
+							}else{
+								resultSql += " and diag_code2 like '"+diag_list.get(0)+"%'";
+							}
+							resultSql += " <br/> )t2 on replace(t1.sycode::varchar(50),'\"','')  =t2.diag_code";
+						}else if(diag_primitive!=null&&diag_primitive.size()>0){
+							
+							resultSql += " join (select diag_code,diag_code2,diag_name from mdm.diagnose a where a.code_sys_id=30 <br/> ";
+							
+							if(diag_primitive.size()>1){
+								for(int i = 0;i<diag_primitive.size();i++){
+									String diag_c = diag_primitive.get(i);
+									if(i==0){
+										resultSql += " and ( diag_name like '%"+diag_c+"%'";
+									}else if(i==diag_primitive.size()-1){
+										resultSql += " or diag_name like '%"+diag_c+"%')";
+									}else{
+										resultSql += " or diag_name like '%"+diag_c+"%'";
+									}
+								}
+							}else{
+								resultSql += " and diag_name like '%"+diag_primitive.get(0)+"%'";
+							}
+							resultSql += " <br/> )t2 on replace(t1.sycode::varchar(50),'\"','')  =t2.diag_code";
+						}
+					//}
+				}else if("医院".equals(str)){ //"医院":{"org_code":"9983838x,111999441,2224589985,112445580"}
+					Map temp = temp1.get(str);
+					try{
+						List<String> org_list = (List)temp.get("org_code");
+						if(!CollectionUtils.isEmpty(org_list)){
+							if(org_list.size()>1){
+								for(int i = 0;i<org_list.size();i++){
+									String org_code = org_list.get(i);
+									if(i==0){
+										condition += " and  a.org_code in ('"+org_code+"',";
+									}else if(i==org_list.size()-1){
+										condition += "'"+org_code+"')";
+									}else{
+										condition += "'"+org_code+"',";
+									}
+								}
+							}else{
+								condition += " and a.org_code = '"+org_list.get(0)+"'";
+							}
+						}
+					}catch(java.lang.ClassCastException e){}
+					
+				}else if("时间".equals(str)){//"时间":{"time_from":"绝对时间:2017-01-01","time_to":"绝对时间:2017-01-10","time_type":"诊断时间"}
+					Map temp = temp1.get(str);
+					String time_from = (String)temp.get("time_from");
+					String time_to = (String)temp.get("time_to");
+					condition += " <br/> ";
+					if(StringUtils.isNoneBlank(time_from)&&StringUtils.isNoneBlank(time_to)){
+						condition += " and coalesce(a.diag_time,b.visit_time) between '"+time_from +"' and '"+time_to+"'";
+					}
+					
+//					switch(eventType){
+//						case "诊断":condition+= "and coalesce(a.diag_time,b.visit_time) ";break;
+//						case "检验时间":condition+= "and report_time ";break;
+//						case "用药时间":condition+= "and drug_time ";break;
+//						case "手术时间":condition+= "and oper_time ";break;
+//					}
+				}else if("就诊类型".equals(str)){//"就诊类型":{"visit_type":"门诊"}
+					Map temp = temp1.get(str);
+					String visit_type = (String)temp.get("visit_type");
+					condition += " <br/> ";
+					switch(visit_type){
+						case "outpat":condition+= " and b.visit_type='O' ";break;
+						case "inpat":condition+= " and b.visit_type='I' ";break;
+						case "emergency":condition+= " and b.is_emergency=true ";break;
+					}
+				}
+			}
+			
+			resultSql = resultSql.replace("$condition$", condition);
+			return resultSql;
+	    }
+	/**
+	 * 打印返回参数
+	 * @param res
+	 * @param str
+	 */
+	public void printJson(HttpServletResponse res,String str){
+		
+		res.setContentType("text/plain");
+		 res.setCharacterEncoding("utf-8");
+		 res.setHeader("Access-Control-Allow-Origin", "*");  
+		 res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");  
+		 res.setHeader("Access-Control-Max-Age", "3600");  
+		 res.setHeader("Access-Control-Allow-Headers", "x-requested-with");  
+		 PrintWriter pw = null;
+		try {
+			pw = res.getWriter();
+			 pw.write(str);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}finally{
+			 pw.flush();
+			 pw.close();
+		}
+	}
+	/**
+	 * 获取所有的医院列表
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @return
+	 */
+	@RequestMapping("/getAllOrg")
+	public String getAllOrg(HttpServletRequest request,Model model,HttpServletResponse res){
+		
+		List<Parameter> par = sqlbuilderService.getAllOrgInfo();
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getOrgCode());
+			map1.put("label", p.getOrgName());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	/**
+	 * 模糊匹配获取所有的检查名称
+	 * @param request
+	 * @param model
+	 * @param res
+	 * @param param
+	 * @return
+	 */
+	@RequestMapping("/getAlllabInfo")
+	public String getAllLabInfo(HttpServletRequest request,Model model,HttpServletResponse res,Parameter param){
+		
+		List<Parameter> par = sqlbuilderService.getAllLabInfo(param);
+		List list = new ArrayList();
+		for(Parameter p:par){
+			Map map1 = new HashMap();
+			map1.put("value", p.getItemId());
+			map1.put("label", p.getItemName());
+			list.add(map1);
+		}
+		
+		String jsonString = JSONObject.toJSON(list).toString();
+		printJson(res,jsonString);
+		return null;
+	}
+	
+}

+ 215 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/b5/b58465df429ed2cc0d53a40455bcb5334abdaf53.svn-base

@@ -0,0 +1,215 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.synyi.edc</groupId>
+	<artifactId>synyi-service</artifactId>
+	<packaging>war</packaging>
+	<version>1.0</version>
+	<name>synyi-service</name>
+	<url>http://maven.apache.org</url>
+
+	<properties>
+		<!-- spring版本号 -->
+		<spring.version>4.0.2.RELEASE</spring.version>
+		<!-- mybatis版本号 -->
+		<mybatis.version>3.2.6</mybatis.version>
+		<!-- log4j日志文件管理包版本 -->
+		<slf4j.version>1.7.7</slf4j.version>
+		<log4j.version>1.2.17</log4j.version>
+		 <servlet.version>3.1.0</servlet.version>
+		
+	</properties>
+
+	<dependencies>
+		<!-- <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> 
+			<version>4.11</version> 表示开发的时候引入,发布的时候不会加载此包 <scope>test</scope> </dependency> -->
+		<!-- spring核心包 -->
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-core</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-web</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-oxm</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-tx</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-jdbc</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-webmvc</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-aop</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-context-support</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-test</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+		<!-- mybatis核心包 -->
+		<dependency>
+			<groupId>org.mybatis</groupId>
+			<artifactId>mybatis</artifactId>
+			<version>${mybatis.version}</version>
+		</dependency>
+		<!-- mybatis/spring包 -->
+		<dependency>
+			<groupId>org.mybatis</groupId>
+			<artifactId>mybatis-spring</artifactId>
+			<version>1.2.2</version>
+		</dependency>
+		
+		<!-- https://mvnrepository.com/artifact/dom4j/dom4j -->
+		<dependency>
+		    <groupId>dom4j</groupId>
+		    <artifactId>dom4j</artifactId>
+		    <version>1.6.1</version>
+		</dependency>
+				
+	 
+        <dependency>
+  <groupId>org.apache.commons</groupId>
+  <artifactId>commons-lang3</artifactId>
+  <version>3.7</version>
+</dependency>
+				
+		<!-- 导入java ee jar 包 -->
+	<!-- 	<dependency>
+			<groupId>javax</groupId>
+			<artifactId>javaee-api</artifactId>
+			<version>7.0</version>
+		</dependency> -->
+		<dependency>
+     <groupId>javax.servlet</groupId>
+     <artifactId>javax.servlet-api</artifactId>
+     <version>${servlet.version}</version>
+     <scope>provided</scope>
+ </dependency>
+		<!-- 导入Mysql数据库链接jar包 
+		<dependency>
+			<groupId>mysql</groupId>
+			<artifactId>mysql-connector-java</artifactId>
+			<version>5.1.30</version>
+		</dependency>-->
+		<!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
+		<dependency>
+			<groupId>commons-dbcp</groupId>
+			<artifactId>commons-dbcp</artifactId>
+			<version>1.2.2</version>
+		</dependency>
+		<!-- JSTL标签类 -->
+		<dependency>
+			<groupId>jstl</groupId>
+			<artifactId>jstl</artifactId>
+			<version>1.2</version>
+		</dependency>
+		<!-- 日志文件管理包 -->
+		<!-- log start -->
+		<dependency>
+			<groupId>log4j</groupId>
+			<artifactId>log4j</artifactId>
+			<version>${log4j.version}</version>
+		</dependency>
+
+
+		<!-- 格式化对象,方便输出日志 -->
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>fastjson</artifactId>
+			<version>1.1.41</version>
+		</dependency>
+
+
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-api</artifactId>
+			<version>${slf4j.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-log4j12</artifactId>
+			<version>${slf4j.version}</version>
+		</dependency>
+		<!-- log end -->
+		<!-- 映入JSON -->
+		<dependency>
+			<groupId>org.codehaus.jackson</groupId>
+			<artifactId>jackson-mapper-asl</artifactId>
+			<version>1.9.13</version>
+		</dependency>
+		<!-- 上传组件包 -->
+		<dependency>
+			<groupId>commons-fileupload</groupId>
+			<artifactId>commons-fileupload</artifactId>
+			<version>1.3.1</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-io</groupId>
+			<artifactId>commons-io</artifactId>
+			<version>2.4</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-codec</groupId>
+			<artifactId>commons-codec</artifactId>
+			<version>1.9</version>
+		</dependency>
+		
+	<dependency>
+	    <groupId>postgresql</groupId>
+	    <artifactId>postgresql</artifactId>
+	    <version>9.1-901.jdbc4</version>
+	</dependency>
+
+
+
+	</dependencies>
+	<build>
+		<finalName>synyi-service</finalName>
+		
+		<plugins>
+			<plugin>  
+                <groupId>org.apache.tomcat.maven</groupId>  
+                <artifactId>tomcat7-maven-plugin</artifactId>  
+                <version>2.2</version>  
+                <configuration>  
+                    <port>8080</port>  
+                    <path>/synyi-service</path>  
+                    <uriEncoding>UTF-8</uriEncoding>  
+                    <server>tomcat7</server>  
+               </configuration>  
+            </plugin>  
+			
+		</plugins>
+		
+		
+	</build>
+</project>

+ 41 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/b5/b588ef21ad26320c0cbc3969fcd234aedb7dd37c.svn-base

@@ -0,0 +1,41 @@
+package com.synyi.edc.pojo;
+
+public class Parameter {
+	
+//	private String type; //条件类型
+//	private String beginDate;
+//	private String endDate;
+//	private String orgArray;
+//	private String orgType; //三种类型   1  全部医院 2 部分医院 3 某家医院
+	private String queryType;
+	
+	private String eventData;
+	private String groupData;
+	public String getQueryType() {
+		return queryType;
+	}
+	public void setQueryType(String queryType) {
+		this.queryType = queryType;
+	}
+	public String getEventData() {
+		return eventData;
+	}
+	public void setEventData(String eventData) {
+		this.eventData = eventData;
+	}
+	public String getGroupData() {
+		return groupData;
+	}
+	public void setGroupData(String groupData) {
+		this.groupData = groupData;
+	}
+	@Override
+	public String toString() {
+		return "Parameter [queryType=" + queryType + ", eventData=" + eventData
+				+ ", groupData=" + groupData + "]";
+	}
+	
+ 
+ 
+
+}

+ 7 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/b6/b6da8769df93e7d91571d636adc13132d4ee5e27.svn-base

@@ -0,0 +1,7 @@
+package com.synyi.edc.service;
+
+import com.synyi.edc.pojo.User;
+
+public interface IUserService {
+	public User getUserById(int userId);
+}

+ 21 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/b9/b980a9950f1360d548258814b50af0257668e45f.svn-base

@@ -0,0 +1,21 @@
+package com.synyi.edc.service.impl;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+
+import com.synyi.edc.dao.IUserDao;
+import com.synyi.edc.pojo.User;
+import com.synyi.edc.service.IUserService;
+
+@Service("userService")
+public class UserServiceImpl implements IUserService {
+	@Resource
+	private IUserDao userDao;
+	@Override
+	public User getUserById(int userId) {
+		// TODO Auto-generated method stub
+		return this.userDao.selectByPrimaryKey(userId);
+	}
+
+}

+ 52 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/bb/bb3e7d07fc6c91b95fc192976621c1791458896b.svn-base

@@ -0,0 +1,52 @@
+package com.synyi.edc.util;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+
+/**
+ * XML工具类
+ * 
+ */
+public class XmlUtils {
+
+    private static Document doc = null;
+    static{
+    	try{
+    		doc = new SAXReader().read(XmlUtils.class.getClassLoader().getResourceAsStream("synyi_sqlbuild.xml"));
+    	}catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    
+    /**
+     * XML转为Map集合
+    * @param doc
+     * @return
+     */
+    private static Map<String, String> xmlToMap(){
+        // 将字符串转为xml
+        Map<String, String> msg = new HashMap<String, String>();
+        Element root = doc.getRootElement();
+        for (Iterator iterator = root.elementIterator(); iterator.hasNext();) {
+            Element e = (Element) iterator.next();
+            msg.put(e.getName(), e.getText());
+        }
+        return msg;
+    }
+    
+    public static String getMapString(String key){
+    	if(StringUtils.isNotBlank(xmlToMap().get(key))){
+    		return xmlToMap().get(key).trim();
+    	}
+    	return "";
+    	
+    	
+    }
+   
+}

+ 82 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/be/be0943c7b4f5182cdfe97dbfac20232e9e4ed765.svn-base

@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.cn.hnust.dao.IUserDao" >
+  <resultMap id="BaseResultMap" type="com.cn.hnust.pojo.User" >
+    <id column="id" property="id" jdbcType="INTEGER" />
+    <result column="user_name" property="userName" jdbcType="VARCHAR" />
+    <result column="password" property="password" jdbcType="VARCHAR" />
+    <result column="age" property="age" jdbcType="INTEGER" />
+  </resultMap>
+  <sql id="Base_Column_List" >
+    id, user_name, password, age
+  </sql>
+  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
+    select 
+    <include refid="Base_Column_List" />
+    from user_t
+    where id = #{id,jdbcType=INTEGER}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+    delete from user_t
+    where id = #{id,jdbcType=INTEGER}
+  </delete>
+  <insert id="insert" parameterType="com.cn.hnust.pojo.User" >
+    insert into user_t (id, user_name, password, 
+      age)
+    values (#{id,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, 
+      #{age,jdbcType=INTEGER})
+  </insert>
+  <insert id="insertSelective" parameterType="com.cn.hnust.pojo.User" >
+    insert into user_t
+    <trim prefix="(" suffix=")" suffixOverrides="," >
+      <if test="id != null" >
+        id,
+      </if>
+      <if test="userName != null" >
+        user_name,
+      </if>
+      <if test="password != null" >
+        password,
+      </if>
+      <if test="age != null" >
+        age,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides="," >
+      <if test="id != null" >
+        #{id,jdbcType=INTEGER},
+      </if>
+      <if test="userName != null" >
+        #{userName,jdbcType=VARCHAR},
+      </if>
+      <if test="password != null" >
+        #{password,jdbcType=VARCHAR},
+      </if>
+      <if test="age != null" >
+        #{age,jdbcType=INTEGER},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.cn.hnust.pojo.User" >
+    update user_t
+    <set >
+      <if test="userName != null" >
+        user_name = #{userName,jdbcType=VARCHAR},
+      </if>
+      <if test="password != null" >
+        password = #{password,jdbcType=VARCHAR},
+      </if>
+      <if test="age != null" >
+        age = #{age,jdbcType=INTEGER},
+      </if>
+    </set>
+    where id = #{id,jdbcType=INTEGER}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.cn.hnust.pojo.User" >
+    update user_t
+    set user_name = #{userName,jdbcType=VARCHAR},
+      password = #{password,jdbcType=VARCHAR},
+      age = #{age,jdbcType=INTEGER}
+    where id = #{id,jdbcType=INTEGER}
+  </update>
+</mapper>

+ 587 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/bf/bfac73649594cb267445467a2992b557557e791b.svn-base

@@ -0,0 +1,587 @@
+package com.synyi.edc.util;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.util.CollectionUtils;
+
+import com.alibaba.fastjson.JSON;
+
+public class SqlBuilderUtils {
+
+	/**
+	 * sql生成分组方法
+	 * @param jsonStr
+	 * @param stepStr
+	 * @return
+	 */
+	public static String genGroupSql(String jsonStr,String stepStr){
+		Map<String,Map> temp1 = null;  //入排条件1
+		Map temp2 = null;  //入排条件2
+		List<Map> lis = (List)JSON.parse(jsonStr);
+		if(!CollectionUtils.isEmpty(lis)){
+			temp1 = lis.get(0);
+			if(lis.size()>1){
+				temp2 = lis.get(1);
+			}
+		}
+		
+		System.out.println(stepStr);
+		Map stepMap = (Map)JSON.parse(stepStr);;
+		
+		int maxValue = 0;
+		int minValue = 0;
+		int interval = 0;
+		
+		try{
+			if(StringUtils.isNotBlank((String)stepMap.get("maxValue"))){
+				maxValue = Integer.parseInt((String)stepMap.get("maxValue"));
+			}
+			if(StringUtils.isNotBlank((String)stepMap.get("minValue"))){
+				minValue = Integer.parseInt((String)stepMap.get("minValue"));
+			}
+			if(StringUtils.isNotBlank((String)stepMap.get("interval"))){
+				interval = Integer.parseInt((String)stepMap.get("interval"));
+			}
+		}catch(Exception e){}
+		
+		String groupType = stepMap.get("groupType")==null?"":(String)stepMap.get("groupType");
+		String event1 = (String)temp1.get("事件").get("event_type");
+		String event2 = temp2!=null?(String)((Map)temp2.get("事件")).get("event_type"):"";
+		
+		String returnSql = "";
+		switch(event1){
+			case "diagnosis":returnSql = "with temp1 as ("+event_diagnose(temp1,stepMap)+")";break;
+			case "laboratoryExamination":returnSql = "with temp1 as ("+event_lab(temp1,stepMap)+")";break;
+			case "drugUse":returnSql = "with temp1 as ("+event_drug(temp1,stepMap)+")";break;
+			case "operation":returnSql = "with temp1 as ("+event_lab(temp1,stepMap)+")";break;
+		}
+		
+		
+		if(!CollectionUtils.isEmpty(temp2)){
+			switch(event2){
+				case "diagnosis":returnSql += ", \r\n temp2 as ("+event_diagnose(temp2,stepMap)+")";break;
+				case "laboratoryExamination":returnSql += ", \r\n temp2 as ("+event_lab(temp2,stepMap)+")";break;
+				case "drugUse":returnSql += ", \r\n temp2 as ("+event_drug(temp2,stepMap)+")";break;
+				case "operation":returnSql += ", \r\n temp2 as ("+event_lab(temp2,stepMap)+")";break;
+			}
+			
+			String rel = (String)temp2.get("关系");
+			if("or".equals(rel)){
+				returnSql += " <br/> select ";
+				
+				if(StringUtils.isNotBlank(groupType)){
+					switch((String)stepMap.get("groupType")){
+						case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval)+" 年龄段,";break;
+						case "年份":returnSql += "to_char(diag_time,'yyyy') 年份,";break;
+						case "医院":returnSql += "t.org_code,org.org_name,";break;
+						case "就诊类型":returnSql += "visit_type,";break;
+						case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end 性别,";break;
+					}
+				}
+				
+				if("patientsNumber".equals((String)stepMap.get("queryType"))){
+					returnSql += "count(distinct t.patient_id) 人数";
+				}else{
+					returnSql += "count(t.patient_id) 人次";
+				}
+				returnSql += " <br/> from (select * from temp1 union all  select * from temp2 )t ";
+				if("性别".equals((String)stepMap.get("groupType"))||"年龄段".equals((String)stepMap.get("groupType"))){
+					returnSql += " join patient.patient_master_info c on t.patient_id=c.patient_id <br/>";
+				}
+				if("医院".equals((String)stepMap.get("groupType"))){
+					returnSql += " join mdm.organization org on t.org_code=org.org_code  <br/>";
+				}
+				if(StringUtils.isNotBlank(groupType)){
+					returnSql += " group by ";
+					switch((String)stepMap.get("groupType")){
+						case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval);break;
+						case "年份":returnSql += "to_char(diag_time,'yyyy') ";break;
+						case "医院":returnSql += "t.org_code,org.org_name";break;
+						case "就诊类型":returnSql += "visit_type";break;
+						case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end";break;
+					}
+				}
+			}else if("and".equals(rel)){
+				returnSql += "select count(1) 人数 from (select distinct temp1.patient_id from temp1)a join (select distinct temp2.patient_id from temp2 ) b on a.patient_id=b.patient_id";
+			}
+		}else{//只有temp1的情况
+			
+			returnSql += "<br/> select ";
+			if(StringUtils.isNotBlank(groupType)){
+				switch((String)stepMap.get("groupType")){
+					case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval)+" 年龄段,";break;
+					case "年份":returnSql += "to_char(diag_time,'yyyy') 年份,";break;
+					case "医院":returnSql += "temp1.org_code,org.org_name,";break;
+					case "就诊类型":returnSql += "visit_type,";break;
+					case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end 性别,<br/>";break;
+				}
+			}
+			if("patientsNumber".equals((String)stepMap.get("queryType"))){
+				returnSql += "count(distinct temp1.patient_id) 人数";
+			}else{  //visitsNumber 人次
+				returnSql += "count(temp1.patient_id) 人次";
+			}
+			returnSql += " from temp1 ";
+			
+			if("性别".equals((String)stepMap.get("groupType"))||"年龄段".equals((String)stepMap.get("groupType"))){
+				returnSql += " join patient.patient_master_info c on temp1.patient_id=c.patient_id <br/> ";
+			}
+			if("医院".equals((String)stepMap.get("groupType"))){
+				returnSql += " join mdm.organization org on temp1.org_code=org.org_code  <br/>";
+			}
+			
+			if(StringUtils.isNotBlank(groupType)){
+				returnSql += "group by ";
+				
+				switch((String)stepMap.get("groupType")){
+					case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval);break;
+					case "年份":returnSql += "to_char(diag_time,'yyyy') ";break;
+					case "医院":returnSql += "temp1.org_code,org.org_name";break;
+					case "就诊类型":returnSql += "visit_type";break;
+					case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end";break;
+				}
+			}
+		}
+		return returnSql;
+	}
+	/**
+	 * 按照年龄段分组方法
+	 * @param min  最小年龄
+	 * @param max  最大年龄
+	 * @param interval  年龄间隔
+	 * @return
+	 */
+	  public static String generateAgePart(int min,int max,int interval){
+	    	String str = " case";
+	    	
+	    	int temp = min;
+	    	for(int i=min;i<max;i+=interval){
+	    		if(i>min){
+	    			//System.out.println(temp+":"+i);
+	    			if(temp==min){
+	    				str += " when extract(year from age(diag_time,c.birth_date))  >="+temp +" and extract(year from age(diag_time,c.birth_date)) <"+i+" then '"+temp+"到"+i+"'<br/>";
+//	    			
+	    				}else if(i==max){
+//	    				str += " when extract(year from age(temp1.diag_time,c.birth_date)) <="+max+" then '"+temp+"到"+max+"' end  ";
+	    			}else{
+	    				str += " when extract(year from age(diag_time,c.birth_date)) <"+i+" then '"+temp+"到"+i+"'<br/>";
+	    			}	
+	    			temp = i;
+	    		}
+	    	}
+	    	str += " when extract(year from age(diag_time,c.birth_date)) <="+max+" then '"+temp+"到"+max+"' end <br/> ";
+	    //	System.out.println(str);
+	    	return str;
+	    }
+	/**
+	 * 按照事件  为  诊断 的sql语句生成方法
+	 * @param temp1
+	 * @param groupMap
+	 * @return
+	 */
+	  public static String event_diagnose(Map<String,Map> temp1,Map groupMap){
+	    	/*{"事件":{"diag_standard":"I21,I22,I23","event_type":"诊断"},"医院":{"org_code":"9983838x,111999441,2224589985,112445580"},
+			 * "就诊类型":{"visit_type":"门诊"},"时间":{"time_from":"绝对时间:2017-01-01","time_to":"绝对时间:2017-01-10"}}
+			 * 
+			 * {\"事件\":{\"diag_standard\":[\"I220\",\"I230\"],\"diag_primitive\":[\"I220\",\"I230\"],\"event_type\":\"diagnosis\"},
+			 * \"医院\":{\"org_code\":[\"111111\",\"222222\"]},\"就诊类型\":{\"visit_type\":\"hospitalization\"},\"时间\":{\"time_from\":\"2018-7-2\",\"time_to\":\"2018-8-12\"},
+			 * \"关系\":\"or\"}
+			 * 
+			 * */
+			String resultSql = "";
+			String condition = "";
+			//String eventType = "";
+			
+			for(String str:temp1.keySet()){
+				if("事件".equals(str)){  //"事件":{"diag_standard":"I21,I22,I23","event_type":"诊断"}
+					Map temp = temp1.get(str);
+					//if(temp.get("event_type").equals("diagnosis")){
+						//eventType = (String)temp.get("event_type");
+						//,diag_time,org_code,case when visit_type='O' then '门诊' when visit_type='I' then '住院' when is_emergency=true then '急诊' else '未知' end visit_type
+						resultSql += " select * from(select a.patient_id";
+								String groupType = groupMap.get("groupType")==null?"":(String)groupMap.get("groupType");
+								if(StringUtils.isNotBlank(groupType)){//"{\"groupType\":\"医院\",\"interval\":\"\",\"maxValue\":\"\",\"minValue\":\"\"}";
+									switch(groupType){
+										case "年龄段":resultSql += ",coalesce(a.diag_time,b.visit_time) diag_time";break;
+										case "年份":resultSql += ",coalesce(a.diag_time,b.visit_time) diag_time";break;
+										case "医院":resultSql += ",a.org_code";break;
+										case "就诊类型":resultSql += ",case when b.visit_type='O' then '门诊' when b.visit_type='I' then '住院' when is_emergency=true then '急诊' else '未知' end visit_type";break;
+										case "性别":resultSql += "";break;
+									}
+								}
+								
+								resultSql += ",jsonb_array_elements(diag_sycode_set) "+
+										"as sycode  <br/> from diag.patient_diagnose a ";
+								
+								String time_from = temp1.get("时间")==null?"":(String)temp1.get("时间").get("time_from");
+								String visit_type =  temp1.get("就诊类型")==null?"":(String)temp1.get("就诊类型").get("visit_type");
+								if(StringUtils.isNotBlank(time_from)||StringUtils.isNotBlank(visit_type)){
+									resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";
+								}else{
+									if(StringUtils.isNotBlank(groupType)){
+										switch((String)groupMap.get("groupType")){
+											case "年龄段":resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";break;
+											case "年份":resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";break;
+											case "就诊类型":resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";break;
+											//case "性别":resultSql += "";break;
+										}
+									}
+								}									
+								resultSql += "where 1=1 $condition$ ) t1  <br/> ";
+						
+						List<String> diag_list = (List)temp.get("diag_standard");
+						List<String> diag_primitive = (List)temp.get("diag_primitive");
+						if(diag_list!=null&&diag_list.size()>0){
+							resultSql += " join (select diag_code,diag_code2,diag_name from mdm.diagnose a where a.code_sys_id=30 <br/> ";
+							
+							if(diag_list.size()>1){
+								for(int i = 0;i<diag_list.size();i++){
+									String diag_c = diag_list.get(i);
+									if(i==0){
+										resultSql += " and ( diag_code2 like '"+diag_c+"%'";
+									}else if(i==diag_list.size()-1){
+										resultSql += " or diag_code2 like '"+diag_c+"%')";
+									}else{
+										resultSql += " or diag_code2 like '"+diag_c+"%'";
+									}
+								}
+							}else{
+								resultSql += " and diag_code2 like '"+diag_list.get(0)+"%'";
+							}
+							resultSql += " <br/> )t2 on replace(t1.sycode::varchar(50),'\"','')  =t2.diag_code";
+						}else if(diag_primitive!=null&&diag_primitive.size()>0){
+							
+							resultSql += " join (select diag_code,diag_code2,diag_name from mdm.diagnose a where a.code_sys_id=30 <br/> ";
+							
+							if(diag_primitive.size()>1){
+								for(int i = 0;i<diag_primitive.size();i++){
+									String diag_c = diag_primitive.get(i);
+									if(i==0){
+										resultSql += " and ( diag_name like '%"+diag_c+"%'";
+									}else if(i==diag_primitive.size()-1){
+										resultSql += " or diag_name like '%"+diag_c+"%')";
+									}else{
+										resultSql += " or diag_name like '%"+diag_c+"%'";
+									}
+								}
+							}else{
+								resultSql += " and diag_name like '%"+diag_primitive.get(0)+"%'";
+							}
+							resultSql += " <br/> )t2 on replace(t1.sycode::varchar(50),'\"','')  =t2.diag_code";
+						}
+					//}
+				}else if("医院".equals(str)){ //"医院":{"org_code":"9983838x,111999441,2224589985,112445580"}
+					Map temp = temp1.get(str);
+					try{
+						List<String> org_list = (List)temp.get("org_code");
+						if(!CollectionUtils.isEmpty(org_list)){
+							if(org_list.size()>1){
+								for(int i = 0;i<org_list.size();i++){
+									String org_code = org_list.get(i);
+									if(i==0){
+										condition += " and  a.org_code in ('"+org_code+"',";
+									}else if(i==org_list.size()-1){
+										condition += "'"+org_code+"')";
+									}else{
+										condition += "'"+org_code+"',";
+									}
+								}
+							}else{
+								condition += " and a.org_code = '"+org_list.get(0)+"'";
+							}
+						}
+					}catch(java.lang.ClassCastException e){}
+					
+				}else if("时间".equals(str)){//"时间":{"time_from":"绝对时间:2017-01-01","time_to":"绝对时间:2017-01-10","time_type":"诊断时间"}
+					Map temp = temp1.get(str);
+					String time_from = (String)temp.get("time_from");
+					String time_to = (String)temp.get("time_to"); 
+					condition += " <br/> ";
+					if(StringUtils.isNoneBlank(time_from)&&StringUtils.isNoneBlank(time_to)){
+						condition += " and coalesce(a.diag_time,b.visit_time) between '"+time_from +"' and '"+time_to+"'";
+					}
+					
+//					switch(eventType){
+//						case "诊断":condition+= "and coalesce(a.diag_time,b.visit_time) ";break;
+//						case "检验时间":condition+= "and report_time ";break;
+//						case "用药时间":condition+= "and drug_time ";break;
+//						case "手术时间":condition+= "and oper_time ";break;
+//					}
+				}else if("就诊类型".equals(str)){//"就诊类型":{"visit_type":"门诊"}
+					Map temp = temp1.get(str);
+					String visit_type = (String)temp.get("visit_type");
+					condition += " <br/> ";
+					switch(visit_type){
+						case "outpat":condition+= " and b.visit_type='O' ";break;
+						case "inpat":condition+= " and b.visit_type='I' ";break;
+						case "emergency":condition+= " and b.is_emergency=true ";break;
+					}
+				}
+			}
+			
+			resultSql = resultSql.replace("$condition$", condition);
+			return resultSql;
+	    }
+	  public static String event_lab(Map<String,Map> temp1,Map groupMap){
+	    	/*{"事件":{"diag_standard":"I21,I22,I23","event_type":"诊断"},"医院":{"org_code":"9983838x,111999441,2224589985,112445580"},
+			 * "就诊类型":{"visit_type":"门诊"},"时间":{"time_from":"绝对时间:2017-01-01","time_to":"绝对时间:2017-01-10"}}
+			 * 
+			 * {\"事件\":{\"diag_standard\":[\"I220\",\"I230\"],\"diag_primitive\":[\"I220\",\"I230\"],\"event_type\":\"diagnosis\"},
+			 * \"医院\":{\"org_code\":[\"111111\",\"222222\"]},\"就诊类型\":{\"visit_type\":\"hospitalization\"},\"时间\":{\"time_from\":\"2018-7-2\",\"time_to\":\"2018-8-12\"},
+			 * \"关系\":\"or\"}
+			 * 
+			 * */
+			String resultSql = "";
+			String condition = "";
+			//String eventType = "";
+			
+			for(String str:temp1.keySet()){
+				if("事件".equals(str)){  //"事件":{"diag_standard":"I21,I22,I23","event_type":"诊断"}
+					Map temp = temp1.get(str);
+					//if(temp.get("event_type").equals("diagnosis")){
+						//eventType = (String)temp.get("event_type");
+						//,diag_time,org_code,case when visit_type='O' then '门诊' when visit_type='I' then '住院' when is_emergency=true then '急诊' else '未知' end visit_type
+						resultSql += " select d.patient_id";
+								String groupType = groupMap.get("groupType")==null?"":(String)groupMap.get("groupType");
+								if(StringUtils.isNotBlank(groupType)){//"{\"groupType\":\"医院\",\"interval\":\"\",\"maxValue\":\"\",\"minValue\":\"\"}";
+									switch(groupType){
+										case "年龄段":resultSql += ",d.report_time event_time";break;
+										case "年份":resultSql += ",d.report_time event_time";break;
+										case "医院":resultSql += ",d.org_code";break;
+										case "就诊类型":resultSql += ",case when e.visit_type='O' then '门诊' when e.visit_type='I' then '住院' when is_emergency=true then '急诊' else '未知' end visit_type";break;
+										case "性别":resultSql += "";break;
+									}
+								}
+								
+								resultSql += " from lab.lab_report_result a join  mdm.mdm_map b on a.test_item_id=b.source_id"+
+												" \r\n join mdm.lis_item c on  b.map_id=c.item_id"+ 
+												" join lab.lab_report d on a.report_id=d.report_id";
+								
+								String visit_type =  temp1.get("就诊类型")==null?"":(String)temp1.get("就诊类型").get("visit_type");
+								if(StringUtils.isNotBlank(visit_type)){
+									resultSql += " left join visit.visit_record e  \r\n on d.visit_id = e.visit_id ";
+								}								
+								resultSql += "where b.md_type = 'lis_item' and c.code_sys_id =197  $condition$  \r\n ";
+						
+			//{\"lab_standard\":[\"220\",\"230\"],\"character_result\":[\"偏高\",\"异常\"],\"exception_symbol\":[\"1\",\"2\"],\"number_result\":[\">=1\"],\"event_type\":\"lab\"}
+						List<String> lab_list = (List)temp.get("lab_standard");
+						List<String> character_result = (List)temp.get("character_result");
+						List<String> exception_symbol = (List)temp.get("exception_symbol");
+						List<String> number_result = (List)temp.get("number_result");
+						if(lab_list!=null&&lab_list.size()>0){
+							resultSql += " and c.item_id in (";
+							String tempLab = "";
+							for(String lab:lab_list){
+								tempLab += "'"+lab+"',";
+							}
+							resultSql += tempLab.substring(0,tempLab.length()-1)+")";
+							
+						}
+						if(character_result!=null&&character_result.size()>0){
+							resultSql += " and a.text_value in (";
+							String tempLab = "";
+							for(String lab:character_result){
+								tempLab += "'"+lab+"',";
+							}
+							resultSql += tempLab.substring(0,tempLab.length()-1)+")";
+						}
+						if(exception_symbol!=null&&exception_symbol.size()>0){
+							resultSql += " and a.abnormal_flag_name in (";
+							String tempLab = "";
+							for(String lab:exception_symbol){
+								tempLab += "'"+lab+"',";
+							}
+							resultSql += tempLab.substring(0,tempLab.length()-1)+")";
+						}
+						if(number_result!=null&&number_result.size()>0){
+							resultSql += " and a.numerical_value "+number_result.get(0);
+						}
+					//}
+				}else if("医院".equals(str)){ //"医院":{"org_code":"9983838x,111999441,2224589985,112445580"}
+					Map temp = temp1.get(str);
+					try{
+						List<String> org_list = (List)temp.get("org_code");
+						if(!CollectionUtils.isEmpty(org_list)){
+							if(org_list.size()>1){
+								for(int i = 0;i<org_list.size();i++){
+									String org_code = org_list.get(i);
+									if(i==0){
+										condition += " and  d.org_code in ('"+org_code+"',";
+									}else if(i==org_list.size()-1){
+										condition += "'"+org_code+"')";
+									}else{
+										condition += "'"+org_code+"',";
+									}
+								}
+							}else{
+								condition += " and d.org_code = '"+org_list.get(0)+"'";
+							}
+						}
+					}catch(java.lang.ClassCastException e){}
+					
+				}else if("时间".equals(str)){//"时间":{"time_from":"绝对时间:2017-01-01","time_to":"绝对时间:2017-01-10","time_type":"诊断时间"}
+					Map temp = temp1.get(str);
+					String time_from = (String)temp.get("time_from");
+					String time_to = (String)temp.get("time_to");
+					condition += " \r\n ";
+					if(StringUtils.isNoneBlank(time_from)&&StringUtils.isNoneBlank(time_to)){
+						condition += " and d.report_time between '"+time_from +"' and '"+time_to+"'";
+					}
+					
+//					switch(eventType){
+//						case "诊断":condition+= "and coalesce(a.diag_time,b.visit_time) ";break;
+//						case "检验时间":condition+= "and report_time ";break;
+//						case "用药时间":condition+= "and drug_time ";break;
+//						case "手术时间":condition+= "and oper_time ";break;
+//					}
+				}else if("就诊类型".equals(str)){//"就诊类型":{"visit_type":"门诊"}
+					Map temp = temp1.get(str);
+					String visit_type = (String)temp.get("visit_type");
+					condition += " \r\n ";
+					switch(visit_type){
+						case "outpat":condition+= " and e.visit_type='O' ";break;
+						case "inpat":condition+= " and e.visit_type='I' ";break;
+						case "emergency":condition+= " and e.is_emergency=true ";break;
+					}
+				}
+			}
+			
+			resultSql = resultSql.replace("$condition$", condition);
+			return resultSql;
+	    }
+	  
+	  public static String event_drug(Map<String,Map> temp1,Map groupMap){
+	    	/*{\"事件\":{\"drug_standard\":[\"220\",\"230\"],\"drug_category\":[\"330\",\"543\"],\"event_type\":\"drug\"},\"医院\":{\"org_code\":[\"111111\",\"222222\"]},
+	    	 * \"就诊类型\":{\"visit_type\":\"inpat\"},\"时间\":{\"time_from\":\"2018-7-2\",\"time_to\":\"2018-8-12\"},\"关系\":\"or\"},
+			 * 
+			 * */
+			String resultSql1 = "";
+			String resultSql2 = "";
+			String condition1 = "";
+			String condition2 = "";
+			//String eventType = "";
+			
+			for(String str:temp1.keySet()){
+				if("事件".equals(str)){  //"事件":{"diag_standard":"I21,I22,I23","event_type":"诊断"}
+					Map temp = temp1.get(str);
+					//if(temp.get("event_type").equals("diagnosis")){
+						//eventType = (String)temp.get("event_type");
+						//,diag_time,org_code,case when visit_type='O' then '门诊' when visit_type='I' then '住院' when is_emergency=true then '急诊' else '未知' end visit_type
+						resultSql1 += " select t1.patient_id";
+						resultSql2 += " select t1.patient_id";
+								String groupType = groupMap.get("groupType")==null?"":(String)groupMap.get("groupType");
+								if(StringUtils.isNotBlank(groupType)){//"{\"groupType\":\"医院\",\"interval\":\"\",\"maxValue\":\"\",\"minValue\":\"\"}";
+									switch(groupType){
+										case "年龄段":resultSql1 += ",t1.begin_time event_time";resultSql2 += " , t4.recipe_time event_time";break;
+										case "年份":resultSql1 += ",t1.begin_time event_time";resultSql2 += ",t4.recipe_time event_time";break;
+										case "医院":resultSql1 += ",t1.org_code";resultSql2 += ",t1.org_code";break;
+										case "就诊类型":resultSql1 += ",'住院' visit_type";resultSql2 += ",'门诊' visit_type";break;
+										case "性别":resultSql1 += "";break;
+									}
+								}
+								
+								List<String> drug_category = (List)temp.get("drug_category");
+								
+								resultSql1 += " FROM orders.inpat_drug_order t1  join mdm.mdm_map t2 on t1.drug_id=t2.source_id "+
+												" \r\n join mdm.drug t3 on t2.map_id=t3.drug_id";
+								
+								resultSql2 += " FROM orders.outpat_recipe_detail t1 join mdm.mdm_map t2 on t1.drug_id=t2.source_id  "+
+										" \r\n join mdm.drug t3 on t2.map_id=t3.drug_id join orders.outpat_recipe t4 on t1.recipe_id=t4.recipe_id ";
+								
+								if(drug_category!=null&&drug_category.size()>0){
+									
+									String tempLab = " in (";
+									for(String cat:drug_category){
+										tempLab += "'"+cat+"',";
+									}
+									tempLab = tempLab.substring(0,tempLab.length()-1)+")";
+									
+									resultSql1 +=" join ( \r\n with RECURSIVE  temp1 as (  select id from drug_new where id "+tempLab+" union ALL "+
+											" select d.id from drug_new d ,temp1 where d.parent=temp1.id )select * from temp1) ca \r\n on  t3.drug_code=ca.id";
+									resultSql2 +=" join ( \r\n with RECURSIVE  temp1 as (  select id from drug_new where id "+tempLab+" union ALL "+
+											" select d.id from drug_new d ,temp1 where d.parent=temp1.id )select * from temp1) ca \r\n on  t3.drug_code=ca.id";
+								}
+								
+								resultSql1 += " where t2.md_type='drug' and t3.code_sys_id = 51  $condition$  \r\n ";
+								resultSql2 += " where t2.md_type='drug' and t3.code_sys_id = 51  $condition$  \r\n ";
+						
+			//{\"lab_standard\":[\"220\",\"230\"],\"character_result\":[\"偏高\",\"异常\"],\"exception_symbol\":[\"1\",\"2\"],\"number_result\":[\">=1\"],\"event_type\":\"lab\"}
+						List<String> lab_list = (List)temp.get("drug_standard");
+						
+						if(lab_list!=null&&lab_list.size()>0){
+							resultSql1 += " and t3.drug_id in (";
+							resultSql2 += " and t3.drug_id in (";
+							String tempLab = "";
+							for(String lab:lab_list){
+								tempLab += "'"+lab+"',";
+							}
+							resultSql1 += tempLab.substring(0,tempLab.length()-1)+")";
+							resultSql2 += tempLab.substring(0,tempLab.length()-1)+")";
+						}
+						
+						
+					//}
+				}else if("医院".equals(str)){ //"医院":{"org_code":"9983838x,111999441,2224589985,112445580"}
+					Map temp = temp1.get(str);
+					try{
+						List<String> org_list = (List)temp.get("org_code");
+						if(!CollectionUtils.isEmpty(org_list)){
+							if(org_list.size()>1){
+								for(int i = 0;i<org_list.size();i++){
+									String org_code = org_list.get(i);
+									if(i==0){
+										condition1 += " and  t1.org_code in ('"+org_code+"',";
+										condition2 += " and  t1.org_code in ('"+org_code+"',";
+									}else if(i==org_list.size()-1){
+										condition1 += "'"+org_code+"')";
+										condition2 += "'"+org_code+"')";
+									}else{
+										condition1 += "'"+org_code+"',";
+										condition2 += "'"+org_code+"',";
+									}
+								}
+							}else{
+								condition1 += " and t1.org_code = '"+org_list.get(0)+"'";
+								condition2 += " and t1.org_code = '"+org_list.get(0)+"'";
+							}
+						}
+					}catch(java.lang.ClassCastException e){}
+					
+				}else if("时间".equals(str)){//"时间":{"time_from":"绝对时间:2017-01-01","time_to":"绝对时间:2017-01-10","time_type":"诊断时间"}
+					Map temp = temp1.get(str);
+					String time_from = (String)temp.get("time_from");
+					String time_to = (String)temp.get("time_to");
+					if(StringUtils.isNoneBlank(time_from)&&StringUtils.isNoneBlank(time_to)){
+						condition1 += " and t1.begin_time between '"+time_from +"' and '"+time_to+"'";
+						condition2 += " and t4.recipe_time between '"+time_from +"' and '"+time_to+"'";
+					}
+					
+//					switch(eventType){
+//						case "诊断":condition+= "and coalesce(a.diag_time,b.visit_time) ";break;
+//						case "检验时间":condition+= "and report_time ";break;
+//						case "用药时间":condition+= "and drug_time ";break;
+//						case "手术时间":condition+= "and oper_time ";break;
+//					}
+				}
+			}
+			
+			resultSql1 = resultSql1.replace("$condition$", condition1);
+			resultSql2 = resultSql2.replace("$condition$", condition2);
+			
+			String returnSql = "";
+			Map temp = temp1.get("就诊类型");
+			String visit_type = (String)temp.get("visit_type");
+			if("inpat".equals(visit_type)){
+				returnSql = resultSql1;
+			}else if("outpat".equals(visit_type)){
+				returnSql+= resultSql2;
+			}else{
+				returnSql+= resultSql1 +" union all "+ resultSql2;
+			}
+			
+			
+			return returnSql;
+	    }
+}

+ 12 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/c0/c073c6b116c10f6c702eeda59a07b9ab0b762372.svn-base

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/main/webapp"/>
+	<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>

二進制
org.zsl.hnust Maven Webapp/.svn/pristine/c0/c0f35aea302386049005f2d4711846560ae35815.svn-base


+ 84 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/c3/c3efd6183ac426c61c42e413492c57ac51b680f9.svn-base

@@ -0,0 +1,84 @@
+package com.synyi.edc.pojo;
+
+public class Parameter {
+	
+//	private String type; //条件类型
+//	private String beginDate;
+//	private String endDate;
+//	private String orgArray;
+//	private String orgType; //三种类型   1  全部医院 2 部分医院 3 某家医院
+	private String labName;
+	
+	private String queryType;
+	
+	private String eventData;
+	private String groupData;
+	
+	private String orgName;
+	
+	private String itemId;
+	private String itemName;
+	
+	
+	
+	public String getItemId() {
+		return itemId;
+	}
+	public void setItemId(String itemId) {
+		this.itemId = itemId;
+	}
+	public String getItemName() {
+		return itemName;
+	}
+	public void setItemName(String itemName) {
+		this.itemName = itemName;
+	}
+	public String getLabName() {
+		return labName;
+	}
+	public void setLabName(String labName) {
+		this.labName = labName;
+	}
+	public String getOrgName() {
+		return orgName;
+	}
+	public void setOrgName(String orgName) {
+		this.orgName = orgName;
+	}
+	public String getOrgCode() {
+		return orgCode;
+	}
+	public void setOrgCode(String orgCode) {
+		this.orgCode = orgCode;
+	}
+	private String orgCode;
+	
+	
+	public String getQueryType() {
+		return queryType;
+	}
+	public void setQueryType(String queryType) {
+		this.queryType = queryType;
+	}
+	public String getEventData() {
+		return eventData;
+	}
+	public void setEventData(String eventData) {
+		this.eventData = eventData;
+	}
+	public String getGroupData() {
+		return groupData;
+	}
+	public void setGroupData(String groupData) {
+		this.groupData = groupData;
+	}
+	@Override
+	public String toString() {
+		return "Parameter [queryType=" + queryType + ", eventData=" + eventData
+				+ ", groupData=" + groupData + "]";
+	}
+	
+ 
+ 
+
+}

+ 66 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/c4/c4be9ee3e23fc63153a903ab8541f1ff66143198.svn-base

@@ -0,0 +1,66 @@
+package com.synyi.edc.dao;
+
+import java.util.List;
+
+import com.synyi.edc.pojo.Parameter;
+/**
+ * sqlbuilder 语句生成dao
+ * @author wy
+ *
+ */
+public interface ISqlbuilderDao {
+	/**
+	 * 获取所有的医院列表
+	 * @return
+	 */
+    List<Parameter> getAllOrgInfo();
+    /**
+     * 根据检查名称 模糊穷举所有检查名称
+     * @param par 参数传递为 labName
+     * @return
+     */
+    List<Parameter> getAllLabInfo(Parameter par);
+    /**
+     * 获取检验结果,文本结果和数字结果等suggestion列表
+     * @param par
+     * @return
+     */
+    List<Parameter> getSuggestionList(Parameter par);
+    
+    /**
+     * 根据药品名称 模糊穷举所有药品名称
+     * @param par 参数传递为 labName
+     * @return
+     */
+    List<Parameter> getAllDrugInfo(Parameter par);
+    
+    /**
+     * 获取所有的药品大类名称
+     * @return
+     */
+	public List<Parameter> getAllDrugCategory();
+	/**
+	 * 根据药品名称获取模糊匹配的suggestion
+	 * @param param
+	 * @return
+	 */
+	public List<Parameter> getSuggestionByDrug(Parameter param);
+	/**
+	 * 根据药品父节点名称获取子节点药品名称
+	 * @param param
+	 * @return
+	 */
+	public List<Parameter> getChildDrug(Parameter param);
+	/**
+	 * 递归通过子类别将所有父类药品列出来
+	 * @param param
+	 * @return
+	 */
+	public List<Parameter> getParentPath(Parameter param);
+	/**
+	 * 递归通过子类别将所有父类药品列出来并且所有父类的同类列出来
+	 * @param param
+	 * @return
+	 */
+	public List<Parameter> getAllDrugPathInfo(Parameter param);
+}

+ 14 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/c5/c5746b15f9038b3e8a6dbc67c46d6f231b9e3c72.svn-base

@@ -0,0 +1,14 @@
+var $lang={
+errAlertMsg: "Invalid date or the date out of range,redo or not?",
+aWeekStr: ["wk", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+aLongWeekStr:["wk","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],
+aMonStr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+aLongMonStr: ["January","February","March","April","May","June","July","August","September","October","November","December"],
+clearStr: "Clear",
+todayStr: "Today",
+okStr: "OK",
+updateStr: "OK",
+timeStr: "Time",
+quickStr: "Quick Selection",
+err_1: 'MinDate Cannot be bigger than MaxDate!'
+}

+ 11 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/c9/c9515c63adab717413ab13866031011518acff02.svn-base

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
+    <wb-module deploy-name="synyi-service">
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
+        <wb-resource deploy-path="/" source-path="/target/m2e-jee/web-resources"/>
+        <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/java"/>
+        <property name="java-output-path" value="/synyi-service/target/classes"/>
+        <property name="context-root" value="/synyi-service"/>
+    </wb-module>
+</project-modules>

+ 454 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/ce/ce1c8d07c69e44d4a3fe67f656716935b71046fc.svn-base

@@ -0,0 +1,454 @@
+package com.synyi.edc.util;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.util.CollectionUtils;
+
+import com.alibaba.fastjson.JSON;
+
+public class SqlBuilderUtils {
+
+	/**
+	 * sql生成分组方法
+	 * @param jsonStr
+	 * @param stepStr
+	 * @return
+	 */
+	public static String genGroupSql(String jsonStr,String stepStr){
+		Map<String,Map> temp1 = null;  //入排条件1
+		Map temp2 = null;  //入排条件2
+		List<Map> lis = (List)JSON.parse(jsonStr);
+		if(!CollectionUtils.isEmpty(lis)){
+			temp1 = lis.get(0);
+			if(lis.size()>1){
+				temp2 = lis.get(1);
+			}
+		}
+		
+		System.out.println(stepStr);
+		Map stepMap = (Map)JSON.parse(stepStr);;
+		
+		int maxValue = 0;
+		int minValue = 0;
+		int interval = 0;
+		
+		try{
+			if(StringUtils.isNotBlank((String)stepMap.get("maxValue"))){
+				maxValue = Integer.parseInt((String)stepMap.get("maxValue"));
+			}
+			if(StringUtils.isNotBlank((String)stepMap.get("minValue"))){
+				minValue = Integer.parseInt((String)stepMap.get("minValue"));
+			}
+			if(StringUtils.isNotBlank((String)stepMap.get("interval"))){
+				interval = Integer.parseInt((String)stepMap.get("interval"));
+			}
+		}catch(Exception e){}
+		
+		String groupType = stepMap.get("groupType")==null?"":(String)stepMap.get("groupType");
+		String event1 = (String)temp1.get("事件").get("event_type");
+		String event2 = temp2!=null?(String)((Map)temp2.get("事件")).get("event_type"):"";
+		
+		String returnSql = "";
+		switch(event1){
+			case "diagnosis":returnSql = "with temp1 as ("+event_diagnose(temp1,stepMap)+")";break;
+			case "laboratoryExamination":returnSql = "with temp1 as ("+event_lab(temp1,stepMap)+")";break;
+			case "drugUse":returnSql = "with temp1 as ("+event_lab(temp1,stepMap)+")";break;
+			case "operation":returnSql = "with temp1 as ("+event_lab(temp1,stepMap)+")";break;
+		}
+		
+		
+		if(!CollectionUtils.isEmpty(temp2)){
+			switch(event2){
+				case "diagnosis":returnSql += ", \r\n temp2 as ("+event_diagnose(temp2,stepMap)+")";break;
+				case "laboratoryExamination":returnSql += ", \r\n temp2 as ("+event_lab(temp2,stepMap)+")";break;
+				case "drugUse":returnSql += ", \r\n temp2 as ("+event_diagnose(temp2,stepMap)+")";break;
+				case "operation":returnSql += ", \r\n temp2 as ("+event_lab(temp2,stepMap)+")";break;
+			}
+			
+			String rel = (String)temp2.get("关系");
+			if("or".equals(rel)){
+				returnSql += " <br/> select ";
+				
+				if(StringUtils.isNotBlank(groupType)){
+					switch((String)stepMap.get("groupType")){
+						case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval)+" 年龄段,";break;
+						case "年份":returnSql += "to_char(diag_time,'yyyy') 年份,";break;
+						case "医院":returnSql += "t.org_code,org.org_name,";break;
+						case "就诊类型":returnSql += "visit_type,";break;
+						case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end 性别,";break;
+					}
+				}
+				
+				if("patientsNumber".equals((String)stepMap.get("queryType"))){
+					returnSql += "count(distinct t.patient_id) 人数";
+				}else{
+					returnSql += "count(t.patient_id) 人次";
+				}
+				returnSql += " <br/> from (select * from temp1 union all  select * from temp2 )t ";
+				if("性别".equals((String)stepMap.get("groupType"))||"年龄段".equals((String)stepMap.get("groupType"))){
+					returnSql += " join patient.patient_master_info c on t.patient_id=c.patient_id <br/>";
+				}
+				if("医院".equals((String)stepMap.get("groupType"))){
+					returnSql += " join mdm.organization org on t.org_code=org.org_code  <br/>";
+				}
+				if(StringUtils.isNotBlank(groupType)){
+					returnSql += " group by ";
+					switch((String)stepMap.get("groupType")){
+						case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval);break;
+						case "年份":returnSql += "to_char(diag_time,'yyyy') ";break;
+						case "医院":returnSql += "t.org_code,org.org_name";break;
+						case "就诊类型":returnSql += "visit_type";break;
+						case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end";break;
+					}
+				}
+			}else if("and".equals(rel)){
+				returnSql += "select count(1) 人数 from (select distinct temp1.patient_id from temp1)a join (select distinct temp2.patient_id from temp2 ) b on a.patient_id=b.patient_id";
+			}
+		}else{//只有temp1的情况
+			
+			returnSql += "<br/> select ";
+			if(StringUtils.isNotBlank(groupType)){
+				switch((String)stepMap.get("groupType")){
+					case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval)+" 年龄段,";break;
+					case "年份":returnSql += "to_char(diag_time,'yyyy') 年份,";break;
+					case "医院":returnSql += "temp1.org_code,org.org_name,";break;
+					case "就诊类型":returnSql += "visit_type,";break;
+					case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end 性别,<br/>";break;
+				}
+			}
+			if("patientsNumber".equals((String)stepMap.get("queryType"))){
+				returnSql += "count(distinct temp1.patient_id) 人数";
+			}else{  //visitsNumber 人次
+				returnSql += "count(temp1.patient_id) 人次";
+			}
+			returnSql += " from temp1 ";
+			
+			if("性别".equals((String)stepMap.get("groupType"))||"年龄段".equals((String)stepMap.get("groupType"))){
+				returnSql += " join patient.patient_master_info c on temp1.patient_id=c.patient_id <br/> ";
+			}
+			if("医院".equals((String)stepMap.get("groupType"))){
+				returnSql += " join mdm.organization org on temp1.org_code=org.org_code  <br/>";
+			}
+			
+			if(StringUtils.isNotBlank(groupType)){
+				returnSql += "group by ";
+				
+				switch((String)stepMap.get("groupType")){
+					case "年龄段":returnSql += generateAgePart(minValue,maxValue,interval);break;
+					case "年份":returnSql += "to_char(diag_time,'yyyy') ";break;
+					case "医院":returnSql += "temp1.org_code,org.org_name";break;
+					case "就诊类型":returnSql += "visit_type";break;
+					case "性别":returnSql += "case when c.sex_code in ('2','9') then '女' when c.sex_code ='1' then '男' else '未知' end";break;
+				}
+			}
+		}
+		return returnSql;
+	}
+	/**
+	 * 按照年龄段分组方法
+	 * @param min  最小年龄
+	 * @param max  最大年龄
+	 * @param interval  年龄间隔
+	 * @return
+	 */
+	  public static String generateAgePart(int min,int max,int interval){
+	    	String str = " case";
+	    	
+	    	int temp = min;
+	    	for(int i=min;i<max;i+=interval){
+	    		if(i>min){
+	    			//System.out.println(temp+":"+i);
+	    			if(temp==min){
+	    				str += " when extract(year from age(diag_time,c.birth_date))  >="+temp +" and extract(year from age(diag_time,c.birth_date)) <"+i+" then '"+temp+"到"+i+"'<br/>";
+//	    			
+	    				}else if(i==max){
+//	    				str += " when extract(year from age(temp1.diag_time,c.birth_date)) <="+max+" then '"+temp+"到"+max+"' end  ";
+	    			}else{
+	    				str += " when extract(year from age(diag_time,c.birth_date)) <"+i+" then '"+temp+"到"+i+"'<br/>";
+	    			}	
+	    			temp = i;
+	    		}
+	    	}
+	    	str += " when extract(year from age(diag_time,c.birth_date)) <="+max+" then '"+temp+"到"+max+"' end <br/> ";
+	    //	System.out.println(str);
+	    	return str;
+	    }
+	/**
+	 * 按照事件  为  诊断 的sql语句生成方法
+	 * @param temp1
+	 * @param groupMap
+	 * @return
+	 */
+	  public static String event_diagnose(Map<String,Map> temp1,Map groupMap){
+	    	/*{"事件":{"diag_standard":"I21,I22,I23","event_type":"诊断"},"医院":{"org_code":"9983838x,111999441,2224589985,112445580"},
+			 * "就诊类型":{"visit_type":"门诊"},"时间":{"time_from":"绝对时间:2017-01-01","time_to":"绝对时间:2017-01-10"}}
+			 * 
+			 * {\"事件\":{\"diag_standard\":[\"I220\",\"I230\"],\"diag_primitive\":[\"I220\",\"I230\"],\"event_type\":\"diagnosis\"},
+			 * \"医院\":{\"org_code\":[\"111111\",\"222222\"]},\"就诊类型\":{\"visit_type\":\"hospitalization\"},\"时间\":{\"time_from\":\"2018-7-2\",\"time_to\":\"2018-8-12\"},
+			 * \"关系\":\"or\"}
+			 * 
+			 * */
+			String resultSql = "";
+			String condition = "";
+			//String eventType = "";
+			
+			for(String str:temp1.keySet()){
+				if("事件".equals(str)){  //"事件":{"diag_standard":"I21,I22,I23","event_type":"诊断"}
+					Map temp = temp1.get(str);
+					//if(temp.get("event_type").equals("diagnosis")){
+						//eventType = (String)temp.get("event_type");
+						//,diag_time,org_code,case when visit_type='O' then '门诊' when visit_type='I' then '住院' when is_emergency=true then '急诊' else '未知' end visit_type
+						resultSql += " select * from(select a.patient_id";
+								String groupType = groupMap.get("groupType")==null?"":(String)groupMap.get("groupType");
+								if(StringUtils.isNotBlank(groupType)){//"{\"groupType\":\"医院\",\"interval\":\"\",\"maxValue\":\"\",\"minValue\":\"\"}";
+									switch(groupType){
+										case "年龄段":resultSql += ",coalesce(a.diag_time,b.visit_time) diag_time";break;
+										case "年份":resultSql += ",coalesce(a.diag_time,b.visit_time) diag_time";break;
+										case "医院":resultSql += ",a.org_code";break;
+										case "就诊类型":resultSql += ",case when b.visit_type='O' then '门诊' when b.visit_type='I' then '住院' when is_emergency=true then '急诊' else '未知' end visit_type";break;
+										case "性别":resultSql += "";break;
+									}
+								}
+								
+								resultSql += ",jsonb_array_elements(diag_sycode_set) "+
+										"as sycode  <br/> from diag.patient_diagnose a ";
+								
+								String time_from = temp1.get("时间")==null?"":(String)temp1.get("时间").get("time_from");
+								String visit_type =  temp1.get("就诊类型")==null?"":(String)temp1.get("就诊类型").get("visit_type");
+								if(StringUtils.isNotBlank(time_from)||StringUtils.isNotBlank(visit_type)){
+									resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";
+								}else{
+									if(StringUtils.isNotBlank(groupType)){
+										switch((String)groupMap.get("groupType")){
+											case "年龄段":resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";break;
+											case "年份":resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";break;
+											case "就诊类型":resultSql += " left join visit.visit_record b on a.visit_id = b.visit_id ";break;
+											//case "性别":resultSql += "";break;
+										}
+									}
+								}									
+								resultSql += "where 1=1 $condition$ ) t1  <br/> ";
+						
+						List<String> diag_list = (List)temp.get("diag_standard");
+						List<String> diag_primitive = (List)temp.get("diag_primitive");
+						if(diag_list!=null&&diag_list.size()>0){
+							resultSql += " join (select diag_code,diag_code2,diag_name from mdm.diagnose a where a.code_sys_id=30 <br/> ";
+							
+							if(diag_list.size()>1){
+								for(int i = 0;i<diag_list.size();i++){
+									String diag_c = diag_list.get(i);
+									if(i==0){
+										resultSql += " and ( diag_code2 like '"+diag_c+"%'";
+									}else if(i==diag_list.size()-1){
+										resultSql += " or diag_code2 like '"+diag_c+"%')";
+									}else{
+										resultSql += " or diag_code2 like '"+diag_c+"%'";
+									}
+								}
+							}else{
+								resultSql += " and diag_code2 like '"+diag_list.get(0)+"%'";
+							}
+							resultSql += " <br/> )t2 on replace(t1.sycode::varchar(50),'\"','')  =t2.diag_code";
+						}else if(diag_primitive!=null&&diag_primitive.size()>0){
+							
+							resultSql += " join (select diag_code,diag_code2,diag_name from mdm.diagnose a where a.code_sys_id=30 <br/> ";
+							
+							if(diag_primitive.size()>1){
+								for(int i = 0;i<diag_primitive.size();i++){
+									String diag_c = diag_primitive.get(i);
+									if(i==0){
+										resultSql += " and ( diag_name like '%"+diag_c+"%'";
+									}else if(i==diag_primitive.size()-1){
+										resultSql += " or diag_name like '%"+diag_c+"%')";
+									}else{
+										resultSql += " or diag_name like '%"+diag_c+"%'";
+									}
+								}
+							}else{
+								resultSql += " and diag_name like '%"+diag_primitive.get(0)+"%'";
+							}
+							resultSql += " <br/> )t2 on replace(t1.sycode::varchar(50),'\"','')  =t2.diag_code";
+						}
+					//}
+				}else if("医院".equals(str)){ //"医院":{"org_code":"9983838x,111999441,2224589985,112445580"}
+					Map temp = temp1.get(str);
+					try{
+						List<String> org_list = (List)temp.get("org_code");
+						if(!CollectionUtils.isEmpty(org_list)){
+							if(org_list.size()>1){
+								for(int i = 0;i<org_list.size();i++){
+									String org_code = org_list.get(i);
+									if(i==0){
+										condition += " and  a.org_code in ('"+org_code+"',";
+									}else if(i==org_list.size()-1){
+										condition += "'"+org_code+"')";
+									}else{
+										condition += "'"+org_code+"',";
+									}
+								}
+							}else{
+								condition += " and a.org_code = '"+org_list.get(0)+"'";
+							}
+						}
+					}catch(java.lang.ClassCastException e){}
+					
+				}else if("时间".equals(str)){//"时间":{"time_from":"绝对时间:2017-01-01","time_to":"绝对时间:2017-01-10","time_type":"诊断时间"}
+					Map temp = temp1.get(str);
+					String time_from = (String)temp.get("time_from");
+					String time_to = (String)temp.get("time_to"); 
+					condition += " <br/> ";
+					if(StringUtils.isNoneBlank(time_from)&&StringUtils.isNoneBlank(time_to)){
+						condition += " and coalesce(a.diag_time,b.visit_time) between '"+time_from +"' and '"+time_to+"'";
+					}
+					
+//					switch(eventType){
+//						case "诊断":condition+= "and coalesce(a.diag_time,b.visit_time) ";break;
+//						case "检验时间":condition+= "and report_time ";break;
+//						case "用药时间":condition+= "and drug_time ";break;
+//						case "手术时间":condition+= "and oper_time ";break;
+//					}
+				}else if("就诊类型".equals(str)){//"就诊类型":{"visit_type":"门诊"}
+					Map temp = temp1.get(str);
+					String visit_type = (String)temp.get("visit_type");
+					condition += " <br/> ";
+					switch(visit_type){
+						case "outpat":condition+= " and b.visit_type='O' ";break;
+						case "inpat":condition+= " and b.visit_type='I' ";break;
+						case "emergency":condition+= " and b.is_emergency=true ";break;
+					}
+				}
+			}
+			
+			resultSql = resultSql.replace("$condition$", condition);
+			return resultSql;
+	    }
+	  public static String event_lab(Map<String,Map> temp1,Map groupMap){
+	    	/*{"事件":{"diag_standard":"I21,I22,I23","event_type":"诊断"},"医院":{"org_code":"9983838x,111999441,2224589985,112445580"},
+			 * "就诊类型":{"visit_type":"门诊"},"时间":{"time_from":"绝对时间:2017-01-01","time_to":"绝对时间:2017-01-10"}}
+			 * 
+			 * {\"事件\":{\"diag_standard\":[\"I220\",\"I230\"],\"diag_primitive\":[\"I220\",\"I230\"],\"event_type\":\"diagnosis\"},
+			 * \"医院\":{\"org_code\":[\"111111\",\"222222\"]},\"就诊类型\":{\"visit_type\":\"hospitalization\"},\"时间\":{\"time_from\":\"2018-7-2\",\"time_to\":\"2018-8-12\"},
+			 * \"关系\":\"or\"}
+			 * 
+			 * */
+			String resultSql = "";
+			String condition = "";
+			//String eventType = "";
+			
+			for(String str:temp1.keySet()){
+				if("事件".equals(str)){  //"事件":{"diag_standard":"I21,I22,I23","event_type":"诊断"}
+					Map temp = temp1.get(str);
+					//if(temp.get("event_type").equals("diagnosis")){
+						//eventType = (String)temp.get("event_type");
+						//,diag_time,org_code,case when visit_type='O' then '门诊' when visit_type='I' then '住院' when is_emergency=true then '急诊' else '未知' end visit_type
+						resultSql += " select d.patient_id";
+								String groupType = groupMap.get("groupType")==null?"":(String)groupMap.get("groupType");
+								if(StringUtils.isNotBlank(groupType)){//"{\"groupType\":\"医院\",\"interval\":\"\",\"maxValue\":\"\",\"minValue\":\"\"}";
+									switch(groupType){
+										case "年龄段":resultSql += ",d.report_time event_time";break;
+										case "年份":resultSql += ",d.report_time event_time";break;
+										case "医院":resultSql += ",d.org_code";break;
+										case "就诊类型":resultSql += ",case when e.visit_type='O' then '门诊' when e.visit_type='I' then '住院' when is_emergency=true then '急诊' else '未知' end visit_type";break;
+										case "性别":resultSql += "";break;
+									}
+								}
+								
+								resultSql += " from lab.lab_report_result a join  mdm.mdm_map b on a.test_item_id=b.source_id"+
+												" \r\n join mdm.lis_item c on  b.map_id=c.item_id"+ 
+												" join lab.lab_report d on a.report_id=d.report_id";
+								
+								String visit_type =  temp1.get("就诊类型")==null?"":(String)temp1.get("就诊类型").get("visit_type");
+								if(StringUtils.isNotBlank(visit_type)){
+									resultSql += " left join visit.visit_record e  \r\n on d.visit_id = e.visit_id ";
+								}								
+								resultSql += "where b.md_type = 'lis_item' and c.code_sys_id =197  $condition$  \r\n ";
+						
+			//{\"lab_standard\":[\"220\",\"230\"],\"character_result\":[\"偏高\",\"异常\"],\"exception_symbol\":[\"1\",\"2\"],\"number_result\":[\">=1\"],\"event_type\":\"lab\"}
+						List<String> lab_list = (List)temp.get("lab_standard");
+						List<String> character_result = (List)temp.get("character_result");
+						List<String> exception_symbol = (List)temp.get("exception_symbol");
+						List<String> number_result = (List)temp.get("number_result");
+						if(lab_list!=null&&lab_list.size()>0){
+							resultSql += " and c.item_id in (";
+							String tempLab = "";
+							for(String lab:lab_list){
+								tempLab += "'"+lab+"',";
+							}
+							resultSql += tempLab.substring(0,tempLab.length()-1)+")";
+							
+						}
+						if(character_result!=null&&character_result.size()>0){
+							resultSql += " and a.text_value in (";
+							String tempLab = "";
+							for(String lab:character_result){
+								tempLab += "'"+lab+"',";
+							}
+							resultSql += tempLab.substring(0,tempLab.length()-1)+")";
+						}
+						if(exception_symbol!=null&&exception_symbol.size()>0){
+							resultSql += " and a.abnormal_flag_name in (";
+							String tempLab = "";
+							for(String lab:exception_symbol){
+								tempLab += "'"+lab+"',";
+							}
+							resultSql += tempLab.substring(0,tempLab.length()-1)+")";
+						}
+						if(number_result!=null&&number_result.size()>0){
+							resultSql += " and a.numerical_value "+number_result.get(0);
+						}
+					//}
+				}else if("医院".equals(str)){ //"医院":{"org_code":"9983838x,111999441,2224589985,112445580"}
+					Map temp = temp1.get(str);
+					try{
+						List<String> org_list = (List)temp.get("org_code");
+						if(!CollectionUtils.isEmpty(org_list)){
+							if(org_list.size()>1){
+								for(int i = 0;i<org_list.size();i++){
+									String org_code = org_list.get(i);
+									if(i==0){
+										condition += " and  d.org_code in ('"+org_code+"',";
+									}else if(i==org_list.size()-1){
+										condition += "'"+org_code+"')";
+									}else{
+										condition += "'"+org_code+"',";
+									}
+								}
+							}else{
+								condition += " and d.org_code = '"+org_list.get(0)+"'";
+							}
+						}
+					}catch(java.lang.ClassCastException e){}
+					
+				}else if("时间".equals(str)){//"时间":{"time_from":"绝对时间:2017-01-01","time_to":"绝对时间:2017-01-10","time_type":"诊断时间"}
+					Map temp = temp1.get(str);
+					String time_from = (String)temp.get("time_from");
+					String time_to = (String)temp.get("time_to");
+					condition += " \r\n ";
+					if(StringUtils.isNoneBlank(time_from)&&StringUtils.isNoneBlank(time_to)){
+						condition += " and d.report_time between '"+time_from +"' and '"+time_to+"'";
+					}
+					
+//					switch(eventType){
+//						case "诊断":condition+= "and coalesce(a.diag_time,b.visit_time) ";break;
+//						case "检验时间":condition+= "and report_time ";break;
+//						case "用药时间":condition+= "and drug_time ";break;
+//						case "手术时间":condition+= "and oper_time ";break;
+//					}
+				}else if("就诊类型".equals(str)){//"就诊类型":{"visit_type":"门诊"}
+					Map temp = temp1.get(str);
+					String visit_type = (String)temp.get("visit_type");
+					condition += " \r\n ";
+					switch(visit_type){
+						case "outpat":condition+= " and e.visit_type='O' ";break;
+						case "inpat":condition+= " and e.visit_type='I' ";break;
+						case "emergency":condition+= " and e.is_emergency=true ";break;
+					}
+				}
+			}
+			
+			resultSql = resultSql.replace("$condition$", condition);
+			return resultSql;
+	    }
+}

+ 19 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/cf/cfdf153fb60d6b9c57e78e050865be14ea6e4ad2.svn-base

@@ -0,0 +1,19 @@
+#时间.绝对时间
+date.absoluteTime=
+
+#医院
+orgCode.oneOrg = and orgCode = $$
+#多家医院
+orgCode.manyOrg = and orgCode in ($$)
+
+
+#诊断
+diag.icd10 = 
+ select t1.pat_diag_id,t1.patient_id,t3.birth_date,t3.sex_code,sycode,t2.diag_code2,t2.diag_name,t1.diag_time
+into test.M11_20180424_temp
+ from (select pat_diag_id,patient_id,diag_time,jsonb_array_elements(diag_sycode_set)
+ as sycode from diag.patient_diagnose)t1
+join (select diag_code,diag_code2,diag_name from mdm.diagnose a 
+where a.code_sys_id=30 and diag_code2 like 'E11%' and strpos(diag_code2, '+')=0 order by diag_code2)t2
+on  replace(t1.sycode::varchar(50),'"','')  =t2.diag_code
+join patient.patient_master_info t3 on t1.patient_id=t3.patient_id

+ 2 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/d4/d484a833555f187f2c607a59d136f423ef3a0af4.svn-base

@@ -0,0 +1,2 @@
+disabled=06target
+eclipse.preferences.version=1

+ 9 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/d7/d7a8c1eb6fdce48c5b2edd1a6e00f25564d8d062.svn-base

@@ -0,0 +1,9 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+	pageEncoding="UTF-8"%>
+
+
+<body>
+<h2>Hello World!</h2>
+
+${user.userName }
+</body>

+ 72 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/db/dbdcfa7cf38ad21e7e8fdf02911cf8c8bb555e9a.svn-base

@@ -0,0 +1,72 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+	pageEncoding="UTF-8"%>
+	
+ <head>
+ 	<script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery-1.11.3.js"></script>
+ 	<script type="text/javascript" src="<%=request.getContextPath() %>/js/datepicker/WdatePicker.js"></script>
+ 	<script type="text/javascript">
+ 	function confirmMethod(){
+ 		var checks = document.getElementsByName("orgArray1");
+ 		var ids = "";
+ 		if(checks&&checks.length>0){
+ 		for(var i=0;i<checks.length;i++){
+ 		if(checks[i].checked){
+ 		if(ids.length>0)ids+="','";
+ 		ids+=checks[i].value;
+ 		}
+ 		}
+ 		}
+ 		ids = "'"+ids+"'";
+ 		return ids;
+ 	}
+ 	function generate(){
+ 		var ids = confirmMethod();
+ 		$("#orgArray").val(ids);
+ 		document.forms[0].submit();
+ 	}
+ 	
+ 	</script>
+ </head>
+<body>
+<h2></h2>
+<form action="<%=request.getContextPath() %>/sqlbuilder/generate" >
+<label>类型:</label>
+<select name="type" style="width: 120px;">
+	<option value="hospital">医院</option>
+	<option value="datePart">时间</option>
+	<option value="diagnose">事件</option>
+	<option value="visitType">就诊类型</option>
+</select>
+<br/>
+<label>医院类型:</label>
+<select name="orgType" style="width: 120px;">
+	<option value="allOrg">所有医院</option>
+	<option value="manyOrg">多家医院</option>
+	<option value="oneOrg">一家医院</option>
+</select>
+<br/>
+<label>医院选择:</label>
+<input type="hidden" id="orgArray" name="orgArray" value="" />
+<input name='orgArray1' type="checkbox" value="488099744" /><label>福州一院</label>
+<input name='orgArray1' type="checkbox" value="48809974x" /><label>福州儿院</label>
+<input name='orgArray1' type="checkbox" value="488099743"/><label>福州中医院</label>
+<input name='orgArray1' type="checkbox" value="488099757"/><label>福州传染病医院</label>
+<br/>
+
+时间 from <input type="text" id="beginDate" name="beginDate"  onclick="WdatePicker({dateFmt:'yyyy-MM-dd'})"   value="" />
+to <input type="text" id="endDate" name="endDate"  onclick="WdatePicker({dateFmt:'yyyy-MM-dd'})" value="" />
+<br/>
+<label>查询内容:</label>
+<select name="queryType" style="width: 120px;">
+	<option value="diagTime">统计就诊次数</option>
+	<option value="diagCount">统计就诊人数</option>
+</select>
+<br/>
+</form>
+<button onclick="generate();">generate</button>
+<br/>
+<br/>
+<textarea rows="15" cols="50">${resultSql }</textarea>
+
+
+</body>

+ 14 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/df/dfc042295d2bd256d1fde44906d0148a2905a04a.svn-base

@@ -0,0 +1,14 @@
+package com.synyi.edc.service;
+
+import java.util.List;
+
+import com.synyi.edc.pojo.Parameter;
+/**
+ * 查询数据库接口
+ * @author wy
+ *
+ */
+public interface ISqlbuilderService {
+	public List<Parameter> getAllOrgInfo();
+	public List<Parameter> getAllLabInfo(Parameter labname);
+}

+ 0 - 0
org.zsl.hnust Maven Webapp/.svn/pristine/e1/e1c98c9a5a3f63c953793af95c212ca2189a60aa.svn-base


部分文件因文件數量過多而無法顯示