刘韬 7 سال پیش
والد
کامیت
1fc4e13848
32فایلهای تغییر یافته به همراه2853 افزوده شده و 27 حذف شده
  1. 3 0
      PacsOnline_Wechat_Patient/log/jfinal_demo_for_maven.log
  2. 485 0
      PacsOnline_Wechat_Patient/log/pwp_system.log
  3. 30 23
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/common/ZskkConfig.java
  4. 441 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/controller/WeixinMsgController.java
  5. 11 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/Exams.java
  6. 11 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/Institution.java
  7. 11 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/Messages.java
  8. 11 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/OpenApplication.java
  9. 11 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/Operating.java
  10. 11 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/PatientInfos.java
  11. 11 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/RemoteApplication.java
  12. 11 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/Report.java
  13. 11 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/ReportRecord.java
  14. 11 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/User.java
  15. 11 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/UserBind.java
  16. 11 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/WechatBind.java
  17. 33 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/_MappingKit.java
  18. 388 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseExams.java
  19. 140 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseInstitution.java
  20. 124 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseMessages.java
  21. 116 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseOpenApplication.java
  22. 76 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseOperating.java
  23. 188 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BasePatientInfos.java
  24. 180 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseRemoteApplication.java
  25. 140 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseReport.java
  26. 68 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseReportRecord.java
  27. 84 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseUser.java
  28. 76 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseUserBind.java
  29. 76 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseWechatBind.java
  30. 67 0
      PacsOnline_Wechat_Patient/src/main/java/com/zskk/util/_JFinalDemoGenerator.java
  31. 5 3
      PacsOnline_Wechat_Patient/src/main/resources/config.properties
  32. 1 1
      PacsOnline_Wechat_Patient/src/main/resources/log4j.properties

+ 3 - 0
PacsOnline_Wechat_Patient/log/jfinal_demo_for_maven.log

@@ -53,3 +53,6 @@ java.net.ConnectException: Operation timed out (Connection timed out)
 	at com.jfinal.server.jetty.Scanner$1.run(Scanner.java:101)
 	at java.base/java.util.TimerThread.mainLoop(Timer.java:556)
 	at java.base/java.util.TimerThread.run(Timer.java:506)
+
+2019-03-15 16:01:57
+[WARN]-[Thread: qtp292917034-18]-[com.jfinal.core.ActionHandler.handle()]: 404 Action Not Found: /fd

+ 485 - 0
PacsOnline_Wechat_Patient/log/pwp_system.log

@@ -0,0 +1,485 @@
+
+2019-03-18 11:47:55
+[ERROR]-[Thread: qtp1957502751-19]-[com.jfinal.core.ActionHandler.handle()]: /msg?signature=a0ae675011337662934a6446ff5e51f03ddb245c&timestamp=1552880875&nonce=876604505&openid=oI-f55lz_yooQo7iOqQlTYPheJ3g
+java.lang.RuntimeException: File not found : /Users/liutao/Desktop/GIT_CODE/pacsonline_wechat_patient/PacsOnline_Wechat_Patient/src/main/webapp/msg/index.html
+	at com.jfinal.template.source.FileSource.getContent(FileSource.java:70)
+	at com.jfinal.template.Engine.buildTemplateBySourceFactory(Engine.java:159)
+	at com.jfinal.template.Engine.getTemplate(Engine.java:144)
+	at com.jfinal.render.TemplateRender.render(TemplateRender.java:61)
+	at com.jfinal.core.ActionHandler.handle(ActionHandler.java:106)
+	at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:89)
+	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634)
+	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
+	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
+	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
+	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
+	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
+	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
+	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
+	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
+	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242)
+	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
+	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
+	at org.eclipse.jetty.server.Server.handle(Server.java:503)
+	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
+	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
+	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
+	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
+	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
+	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
+	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
+	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
+	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
+	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
+	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
+	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-03-18 11:48:01
+[ERROR]-[Thread: qtp1957502751-16]-[com.jfinal.core.ActionHandler.handle()]: /msg?signature=1d4452122a7c254bb363f9e33029fd5f62a647df&timestamp=1552880881&nonce=653682550&openid=oI-f55lz_yooQo7iOqQlTYPheJ3g
+java.lang.RuntimeException: File not found : /Users/liutao/Desktop/GIT_CODE/pacsonline_wechat_patient/PacsOnline_Wechat_Patient/src/main/webapp/msg/index.html
+	at com.jfinal.template.source.FileSource.getContent(FileSource.java:70)
+	at com.jfinal.template.Engine.buildTemplateBySourceFactory(Engine.java:159)
+	at com.jfinal.template.Engine.getTemplate(Engine.java:144)
+	at com.jfinal.render.TemplateRender.render(TemplateRender.java:61)
+	at com.jfinal.core.ActionHandler.handle(ActionHandler.java:106)
+	at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:89)
+	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634)
+	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
+	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
+	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
+	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
+	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
+	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
+	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
+	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
+	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242)
+	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
+	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
+	at org.eclipse.jetty.server.Server.handle(Server.java:503)
+	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
+	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
+	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
+	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
+	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
+	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
+	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
+	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
+	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
+	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
+	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
+	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-03-18 11:50:51
+[ERROR]-[Thread: JFinal-Scanner]-[com.jfinal.kit.LogKit.error()]: Operation timed out (Connection timed out)
+java.net.ConnectException: Operation timed out (Connection timed out)
+	at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
+	at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
+	at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
+	at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
+	at java.base/java.net.Socket.connect(Socket.java:591)
+	at java.base/java.net.Socket.connect(Socket.java:540)
+	at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:182)
+	at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474)
+	at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569)
+	at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
+	at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:341)
+	at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:362)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1242)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1181)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1075)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1009)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.followRedirect0(HttpURLConnection.java:2768)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.followRedirect(HttpURLConnection.java:2680)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1843)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1509)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:678)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1401)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1367)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:257)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1152)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1040)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:943)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:534)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216)
+	at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635)
+	at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:324)
+	at org.eclipse.jetty.xml.XmlParser.parse(XmlParser.java:255)
+	at org.eclipse.jetty.webapp.Descriptor.parse(Descriptor.java:55)
+	at org.eclipse.jetty.webapp.WebDescriptor.parse(WebDescriptor.java:212)
+	at org.eclipse.jetty.webapp.MetaData.setWebXml(MetaData.java:194)
+	at org.eclipse.jetty.webapp.WebXmlConfiguration.preConfigure(WebXmlConfiguration.java:60)
+	at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:506)
+	at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:544)
+	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
+	at com.jfinal.server.jetty.JettyServer$1.onChange(JettyServer.java:140)
+	at com.jfinal.server.jetty.Scanner.compare(Scanner.java:94)
+	at com.jfinal.server.jetty.Scanner.working(Scanner.java:57)
+	at com.jfinal.server.jetty.Scanner.access$000(Scanner.java:31)
+	at com.jfinal.server.jetty.Scanner$1.run(Scanner.java:101)
+	at java.base/java.util.TimerThread.mainLoop(Timer.java:556)
+	at java.base/java.util.TimerThread.run(Timer.java:506)
+
+2019-03-18 11:52:27
+[ERROR]-[Thread: qtp1957502751-18]-[com.jfinal.core.ActionHandler.handle()]: /msg?signature=307679ee3c4987d96e3d3aa17a35a874e4c2e1df&timestamp=1552881147&nonce=1951030495&openid=oI-f55lz_yooQo7iOqQlTYPheJ3g
+java.lang.RuntimeException: File not found : /Users/liutao/Desktop/GIT_CODE/pacsonline_wechat_patient/PacsOnline_Wechat_Patient/src/main/webapp/msg/index.html
+	at com.jfinal.template.source.FileSource.getContent(FileSource.java:70)
+	at com.jfinal.template.Engine.buildTemplateBySourceFactory(Engine.java:159)
+	at com.jfinal.template.Engine.getTemplate(Engine.java:144)
+	at com.jfinal.render.TemplateRender.render(TemplateRender.java:61)
+	at com.jfinal.core.ActionHandler.handle(ActionHandler.java:106)
+	at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:89)
+	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634)
+	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
+	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
+	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
+	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
+	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
+	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
+	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
+	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
+	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242)
+	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
+	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
+	at org.eclipse.jetty.server.Server.handle(Server.java:503)
+	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
+	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
+	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
+	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
+	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
+	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
+	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-03-18 11:57:51
+[ERROR]-[Thread: qtp1957502751-19]-[com.jfinal.core.ActionHandler.handle()]: /msg?signature=2ac74cc94862bc83bcddeaeb9c3b0f97cbdf101e&timestamp=1552881471&nonce=1123515212&openid=oI-f55lz_yooQo7iOqQlTYPheJ3g
+java.lang.RuntimeException: File not found : /Users/liutao/Desktop/GIT_CODE/pacsonline_wechat_patient/PacsOnline_Wechat_Patient/src/main/webapp/msg/index.html
+	at com.jfinal.template.source.FileSource.getContent(FileSource.java:70)
+	at com.jfinal.template.Engine.buildTemplateBySourceFactory(Engine.java:159)
+	at com.jfinal.template.Engine.getTemplate(Engine.java:144)
+	at com.jfinal.render.TemplateRender.render(TemplateRender.java:61)
+	at com.jfinal.core.ActionHandler.handle(ActionHandler.java:106)
+	at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:89)
+	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634)
+	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
+	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
+	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
+	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
+	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
+	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
+	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
+	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
+	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242)
+	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
+	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
+	at org.eclipse.jetty.server.Server.handle(Server.java:503)
+	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
+	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
+	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
+	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
+	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
+	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
+	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-03-18 12:02:45
+[ERROR]-[Thread: qtp1957502751-14]-[com.jfinal.core.ActionHandler.handle()]: /msg?signature=ba2e2e8ec11fff27d81595aa50bdd3c62a498134&timestamp=1552881764&nonce=1663931451&openid=oI-f55lz_yooQo7iOqQlTYPheJ3g
+java.lang.RuntimeException: File not found : /Users/liutao/Desktop/GIT_CODE/pacsonline_wechat_patient/PacsOnline_Wechat_Patient/src/main/webapp/msg/index.html
+	at com.jfinal.template.source.FileSource.getContent(FileSource.java:70)
+	at com.jfinal.template.Engine.buildTemplateBySourceFactory(Engine.java:159)
+	at com.jfinal.template.Engine.getTemplate(Engine.java:144)
+	at com.jfinal.render.TemplateRender.render(TemplateRender.java:61)
+	at com.jfinal.core.ActionHandler.handle(ActionHandler.java:106)
+	at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:89)
+	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634)
+	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
+	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
+	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
+	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
+	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
+	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
+	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
+	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
+	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242)
+	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
+	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
+	at org.eclipse.jetty.server.Server.handle(Server.java:503)
+	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
+	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
+	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
+	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
+	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
+	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
+	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-03-18 12:07:38
+[ERROR]-[Thread: qtp1957502751-13]-[com.jfinal.core.ActionHandler.handle()]: /msg?signature=c7b7c83f9eee01e5c2060b8a35e394c62cddfdcb&timestamp=1552882058&nonce=2144619572&openid=oI-f55lz_yooQo7iOqQlTYPheJ3g
+java.lang.RuntimeException: File not found : /Users/liutao/Desktop/GIT_CODE/pacsonline_wechat_patient/PacsOnline_Wechat_Patient/src/main/webapp/msg/index.html
+	at com.jfinal.template.source.FileSource.getContent(FileSource.java:70)
+	at com.jfinal.template.Engine.buildTemplateBySourceFactory(Engine.java:159)
+	at com.jfinal.template.Engine.getTemplate(Engine.java:144)
+	at com.jfinal.render.TemplateRender.render(TemplateRender.java:61)
+	at com.jfinal.core.ActionHandler.handle(ActionHandler.java:106)
+	at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:89)
+	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634)
+	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
+	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
+	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
+	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
+	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
+	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
+	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
+	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
+	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242)
+	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
+	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
+	at org.eclipse.jetty.server.Server.handle(Server.java:503)
+	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
+	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
+	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
+	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
+	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
+	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
+	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-03-18 14:26:32
+[ERROR]-[Thread: qtp1957502751-13]-[com.jfinal.core.ActionHandler.handle()]: /msg?signature=dba9075630e64b3f9a1dfa818a57589f19474b42&timestamp=1552890392&nonce=246932038&openid=oI-f55lz_yooQo7iOqQlTYPheJ3g
+java.lang.RuntimeException: File not found : /Users/liutao/Desktop/GIT_CODE/pacsonline_wechat_patient/PacsOnline_Wechat_Patient/src/main/webapp/msg/index.html
+	at com.jfinal.template.source.FileSource.getContent(FileSource.java:70)
+	at com.jfinal.template.Engine.buildTemplateBySourceFactory(Engine.java:159)
+	at com.jfinal.template.Engine.getTemplate(Engine.java:144)
+	at com.jfinal.render.TemplateRender.render(TemplateRender.java:61)
+	at com.jfinal.core.ActionHandler.handle(ActionHandler.java:106)
+	at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:89)
+	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634)
+	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
+	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
+	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
+	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
+	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
+	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
+	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
+	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
+	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242)
+	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
+	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
+	at org.eclipse.jetty.server.Server.handle(Server.java:503)
+	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
+	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
+	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
+	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
+	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
+	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
+	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
+	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
+	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:132)
+	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
+	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-03-18 14:58:31
+[ERROR]-[Thread: JFinal-Scanner]-[com.jfinal.kit.LogKit.error()]: Operation timed out (Connection timed out)
+java.net.ConnectException: Operation timed out (Connection timed out)
+	at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
+	at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
+	at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
+	at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
+	at java.base/java.net.Socket.connect(Socket.java:591)
+	at java.base/java.net.Socket.connect(Socket.java:540)
+	at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:182)
+	at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474)
+	at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569)
+	at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
+	at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:341)
+	at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:362)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1242)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1181)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1075)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1009)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.followRedirect0(HttpURLConnection.java:2768)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.followRedirect(HttpURLConnection.java:2680)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1843)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1509)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:678)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1401)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1367)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:257)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1152)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1040)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:943)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:534)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216)
+	at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635)
+	at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:324)
+	at org.eclipse.jetty.xml.XmlParser.parse(XmlParser.java:255)
+	at org.eclipse.jetty.webapp.Descriptor.parse(Descriptor.java:55)
+	at org.eclipse.jetty.webapp.WebDescriptor.parse(WebDescriptor.java:212)
+	at org.eclipse.jetty.webapp.MetaData.setWebXml(MetaData.java:194)
+	at org.eclipse.jetty.webapp.WebXmlConfiguration.preConfigure(WebXmlConfiguration.java:60)
+	at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:506)
+	at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:544)
+	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
+	at com.jfinal.server.jetty.JettyServer$1.onChange(JettyServer.java:140)
+	at com.jfinal.server.jetty.Scanner.compare(Scanner.java:94)
+	at com.jfinal.server.jetty.Scanner.working(Scanner.java:57)
+	at com.jfinal.server.jetty.Scanner.access$000(Scanner.java:31)
+	at com.jfinal.server.jetty.Scanner$1.run(Scanner.java:101)
+	at java.base/java.util.TimerThread.mainLoop(Timer.java:556)
+	at java.base/java.util.TimerThread.run(Timer.java:506)
+
+2019-03-18 15:03:27
+[ERROR]-[Thread: main]-[com.jfinal.kit.LogKit.error()]: Operation timed out (Connection timed out)
+java.net.ConnectException: Operation timed out (Connection timed out)
+	at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
+	at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
+	at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
+	at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
+	at java.base/java.net.Socket.connect(Socket.java:591)
+	at java.base/java.net.Socket.connect(Socket.java:540)
+	at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:182)
+	at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474)
+	at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569)
+	at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
+	at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:341)
+	at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:362)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1242)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1181)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1075)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1009)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.followRedirect0(HttpURLConnection.java:2768)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.followRedirect(HttpURLConnection.java:2680)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1843)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1509)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:678)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1401)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1367)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:257)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1152)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1040)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:943)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:534)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216)
+	at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635)
+	at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:324)
+	at org.eclipse.jetty.xml.XmlParser.parse(XmlParser.java:255)
+	at org.eclipse.jetty.webapp.Descriptor.parse(Descriptor.java:55)
+	at org.eclipse.jetty.webapp.WebDescriptor.parse(WebDescriptor.java:212)
+	at org.eclipse.jetty.webapp.MetaData.setWebXml(MetaData.java:194)
+	at org.eclipse.jetty.webapp.WebXmlConfiguration.preConfigure(WebXmlConfiguration.java:60)
+	at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:506)
+	at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:544)
+	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
+	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:138)
+	at org.eclipse.jetty.server.Server.start(Server.java:416)
+	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:108)
+	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
+	at org.eclipse.jetty.server.Server.doStart(Server.java:383)
+	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
+	at com.jfinal.server.jetty.JettyServer.doStart(JettyServer.java:154)
+	at com.jfinal.server.jetty.JettyServer.start(JettyServer.java:70)
+	at com.jfinal.core.JFinal.start(JFinal.java:160)
+	at com.zskk.common.ZskkConfig.main(ZskkConfig.java:144)
+
+2019-03-18 15:11:47
+[ERROR]-[Thread: main]-[com.jfinal.kit.LogKit.error()]: Operation timed out (Connection timed out)
+java.net.ConnectException: Operation timed out (Connection timed out)
+	at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
+	at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
+	at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
+	at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
+	at java.base/java.net.Socket.connect(Socket.java:591)
+	at java.base/java.net.Socket.connect(Socket.java:540)
+	at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:182)
+	at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474)
+	at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569)
+	at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
+	at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:341)
+	at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:362)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1242)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1181)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1075)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1009)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.followRedirect0(HttpURLConnection.java:2768)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.followRedirect(HttpURLConnection.java:2680)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1843)
+	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1509)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:678)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1401)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1367)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:257)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1152)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1040)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:943)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
+	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:534)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
+	at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216)
+	at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635)
+	at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:324)
+	at org.eclipse.jetty.xml.XmlParser.parse(XmlParser.java:255)
+	at org.eclipse.jetty.webapp.Descriptor.parse(Descriptor.java:55)
+	at org.eclipse.jetty.webapp.WebDescriptor.parse(WebDescriptor.java:212)
+	at org.eclipse.jetty.webapp.MetaData.setWebXml(MetaData.java:194)
+	at org.eclipse.jetty.webapp.WebXmlConfiguration.preConfigure(WebXmlConfiguration.java:60)
+	at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:506)
+	at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:544)
+	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
+	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:138)
+	at org.eclipse.jetty.server.Server.start(Server.java:416)
+	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:108)
+	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
+	at org.eclipse.jetty.server.Server.doStart(Server.java:383)
+	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
+	at com.jfinal.server.jetty.JettyServer.doStart(JettyServer.java:154)
+	at com.jfinal.server.jetty.JettyServer.start(JettyServer.java:70)
+	at com.jfinal.core.JFinal.start(JFinal.java:160)
+	at com.zskk.common.ZskkConfig.main(ZskkConfig.java:144)

+ 30 - 23
PacsOnline_Wechat_Patient/src/main/java/com/zskk/common/ZskkConfig.java

@@ -14,11 +14,17 @@ import com.jfinal.config.Plugins;
 import com.jfinal.config.Routes;
 import com.jfinal.core.JFinal;
 import com.jfinal.kit.PropKit;
+import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
+import com.jfinal.plugin.druid.DruidPlugin;
+import com.jfinal.plugin.redis.RedisPlugin;
+import com.jfinal.plugin.redis.serializer.JdkSerializer;
 import com.jfinal.template.Engine;
 import com.jfinal.weixin.sdk.api.ApiConfig;
 import com.jfinal.weixin.sdk.api.ApiConfigKit;
+import com.jfinal.weixin.sdk.cache.RedisAccessTokenCache;
 import com.jfinal.wxaapp.WxaConfig;
 import com.jfinal.wxaapp.WxaConfigKit;
+import com.zskk.controller.WeixinMsgController;
 
 public class ZskkConfig extends JFinalConfig {
     // 本地开发模式
@@ -40,11 +46,11 @@ public class ZskkConfig extends JFinalConfig {
     }
 
     public void configConstant(Constants me) {
-//        loadProp("a_little_config_pro.txt", "a_little_config.txt");
-//        me.setDevMode(PropKit.getBoolean("devMode", false));
+        loadProp("config.properties", "a_little_config.txt");
+        me.setDevMode(PropKit.getBoolean("devMode", false));
 //
 //        // ApiConfigKit 设为开发模式可以在开发阶段输出请求交互的 xml 与 json 数据
-//        ApiConfigKit.setDevMode(me.getDevMode());
+        ApiConfigKit.setDevMode(me.getDevMode());
     }
 
     public void configRoute(Routes me) {
@@ -57,30 +63,31 @@ public class ZskkConfig extends JFinalConfig {
          */
         me.setMappingSuperClass(true);
         
-//        me.add("/msg", WeixinMsgController.class);
+        me.add("/msg", WeixinMsgController.class);
 //        me.add("/api", WeixinApiController.class, "/api");
 //        me.add("/pay", WeixinPayController.class);
 //        me.add("/wxa/user", WxaUserApiController.class);
 //        me.add("/subscribemsg", SubscribeMsgController.class);
     }
-
+	
     public void configPlugin(Plugins me) {
-        // C3p0Plugin c3p0Plugin = new C3p0Plugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
-        // me.add(c3p0Plugin);
 
-        // EhCachePlugin ecp = new EhCachePlugin();
-        // me.add(ecp);
+		DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
+		me.add(druidPlugin);
+		
+		ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
+		me.add(arp);
 
-        // 使用redis分布accessToken
-        // RedisPlugin redisPlugin = new RedisPlugin("weixin", "127.0.0.1");
-        // redisPlugin.setSerializer(JdkSerializer.me); // 需要使用fst高性能序列化的用户请删除这一行(Fst jar依赖请查看WIKI)
-        // me.add(redisPlugin);
+//         使用redis分布accessToken
+//         RedisPlugin redisPlugin = new RedisPlugin("weixin_patient", "127.0.0.1", 6379, 1000);
+//         redisPlugin.setSerializer(JdkSerializer.me); // 需要使用fst高性能序列化的用户请删除这一行(Fst jar依赖请查看WIKI)
+//         me.add(redisPlugin);
     }
 
     public void configInterceptor(Interceptors me) {
         // 设置默认的 appId 规则,默认值为appId,可采用url挂参数 ?appId=xxx 切换多公众号
-        // ApiInterceptor.setAppIdParser(new AppIdParser.DefaultParameterAppIdParser("appId")); 默认无需设置
-        // MsgInterceptor.setAppIdParser(new AppIdParser.DefaultParameterAppIdParser("appId")); 默认无需设置
+//         ApiInterceptor.setAppIdParser(new AppIdParser.DefaultParameterAppIdParser("appId")); 默认无需设置
+//         MsgInterceptor.setAppIdParser(new AppIdParser.DefaultParameterAppIdParser("appId")); 默认无需设置
     }
 
     public void configHandler(Handlers me) {
@@ -92,26 +99,26 @@ public class ZskkConfig extends JFinalConfig {
 //        ApiConfigKit.setAccessTokenCache(new RedisAccessTokenCache());
         // 1.6新增的2种初始化
 //        ApiConfigKit.setAccessTokenCache(new RedisAccessTokenCache(Redis.use("weixin")));
-//        ApiConfigKit.setAccessTokenCache(new RedisAccessTokenCache("weixin"));
+//        ApiConfigKit.setAccessTokenCache(new RedisAccessTokenCache("weixin_patient"));
 
-//        ApiConfig ac = new ApiConfig();
+        ApiConfig ac = new ApiConfig();
 //        // 配置微信 API 相关参数
-//        ac.setToken(PropKit.get("token"));
-//        ac.setAppId(PropKit.get("appId"));
-//        ac.setAppSecret(PropKit.get("appSecret"));
+        ac.setToken(PropKit.get("token"));
+        ac.setAppId(PropKit.get("appId"));
+        ac.setAppSecret(PropKit.get("appSecret"));
 //
 //        /**
 //         *  是否对消息进行加密,对应于微信平台的消息加解密方式:
 //         *  1:true进行加密且必须配置 encodingAesKey
 //         *  2:false采用明文模式,同时也支持混合模式
 //         */
-//        ac.setEncryptMessage(PropKit.getBoolean("encryptMessage", false));
+        ac.setEncryptMessage(PropKit.getBoolean("encryptMessage", false));
 //        ac.setEncodingAesKey(PropKit.get("encodingAesKey", "setting it in config file"));
 //
 //        /**
 //         * 多个公众号时,重复调用ApiConfigKit.putApiConfig(ac)依次添加即可,第一个添加的是默认。
 //         */
-//        ApiConfigKit.putApiConfig(ac);
+        ApiConfigKit.putApiConfig(ac);
         
         /**
          * 1.9 新增LocalTestTokenCache用于本地和线上同时使用一套appId时避免本地将线上AccessToken冲掉
@@ -134,7 +141,7 @@ public class ZskkConfig extends JFinalConfig {
     }
 
     public static void main(String[] args) {
-        JFinal.start("src/main/webapp", 80, "/", 5);
+        JFinal.start("src/main/webapp", 10000, "/", 5);
     }
 
 	@Override

+ 441 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/controller/WeixinMsgController.java

@@ -0,0 +1,441 @@
+/**
+ * Copyright (c) 2011-2014, James Zhan 詹波 (jfinal@126.com).
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ */
+
+package com.zskk.controller;
+
+import com.jfinal.weixin.sdk.jfinal.MsgControllerAdapter;
+import com.jfinal.weixin.sdk.msg.in.*;
+import com.jfinal.weixin.sdk.msg.in.event.*;
+import com.jfinal.weixin.sdk.msg.in.speech_recognition.InSpeechRecognitionResults;
+import com.jfinal.weixin.sdk.msg.out.OutCustomMsg;
+import com.jfinal.weixin.sdk.msg.out.OutTextMsg;
+
+/**
+ * 将此 DemoController 在YourJFinalConfig 中注册路由,
+ * 并设置好weixin开发者中心的 URL 与 token ,使 URL 指向该
+ * DemoController 继承自父类 WeixinController 的 index
+ * 方法即可直接运行看效果,在此基础之上修改相关的方法即可进行实际项目开发
+ */
+public class WeixinMsgController extends MsgControllerAdapter {
+
+    @Override
+    protected void processInTextMsg(InTextMsg inTextMsg) {
+        OutTextMsg outMsg = new OutTextMsg(inTextMsg);
+        outMsg.setContent("文本消息~");
+        render(outMsg);
+    }
+
+    @Override
+    protected void processInVoiceMsg(InVoiceMsg inVoiceMsg) {
+        OutTextMsg outMsg = new OutTextMsg(inVoiceMsg);
+        outMsg.setContent("语音消息~");
+    }
+
+    @Override
+    protected void processInVideoMsg(InVideoMsg inVideoMsg) {
+        OutTextMsg outMsg = new OutTextMsg(inVideoMsg);
+        outMsg.setContent("接收视频消息~");
+    }
+
+    @Override
+    protected void processInShortVideoMsg(InShortVideoMsg inShortVideoMsg) {
+        OutTextMsg outMsg = new OutTextMsg(inShortVideoMsg);
+        outMsg.setContent("小视频消息~");
+    }
+
+    @Override
+    protected void processInLocationMsg(InLocationMsg inLocationMsg) {
+        //转发给多客服PC客户端
+        OutCustomMsg outCustomMsg = new OutCustomMsg(inLocationMsg);
+        render(outCustomMsg);
+    }
+
+    @Override
+    protected void processInLinkMsg(InLinkMsg inLinkMsg)
+    {
+        //转发给多客服PC客户端
+        OutCustomMsg outCustomMsg = new OutCustomMsg(inLinkMsg);
+        render(outCustomMsg);
+    }
+
+    @Override
+    protected void processInCustomEvent(InCustomEvent inCustomEvent)
+    {
+        log.debug("测试方法:processInCustomEvent()");
+        renderNull();
+    }
+
+    @Override
+    protected void processInImageMsg(InImageMsg inImageMsg)
+    {
+        //转发给多客服PC客户端
+        OutCustomMsg outCustomMsg = new OutCustomMsg(inImageMsg);
+        render(outCustomMsg);
+    }
+
+    /**
+     * 实现父类抽方法,处理关注/取消关注消息
+     */
+    @Override
+    protected void processInFollowEvent(InFollowEvent inFollowEvent)
+    {
+        if (InFollowEvent.EVENT_INFOLLOW_SUBSCRIBE.equals(inFollowEvent.getEvent()))
+        {
+            log.debug("关注:" + inFollowEvent.getFromUserName());
+            OutTextMsg outMsg = new OutTextMsg(inFollowEvent);
+            outMsg.setContent("欢迎关注电子胶片平台");
+            render(outMsg);
+        }
+        // 如果为取消关注事件,将无法接收到传回的信息
+        if (InFollowEvent.EVENT_INFOLLOW_UNSUBSCRIBE.equals(inFollowEvent.getEvent()))
+        {
+            log.debug("取消关注:" + inFollowEvent.getFromUserName());
+        }
+    }
+
+    @Override
+    protected void processInQrCodeEvent(InQrCodeEvent inQrCodeEvent)
+    {
+        if (InQrCodeEvent.EVENT_INQRCODE_SUBSCRIBE.equals(inQrCodeEvent.getEvent()))
+        {
+            log.debug("扫码未关注:" + inQrCodeEvent.getFromUserName());
+            OutTextMsg outMsg = new OutTextMsg(inQrCodeEvent);
+            outMsg.setContent("感谢您的关注,二维码内容:" + inQrCodeEvent.getEventKey());
+            render(outMsg);
+        }
+        if (InQrCodeEvent.EVENT_INQRCODE_SCAN.equals(inQrCodeEvent.getEvent()))
+        {
+            log.debug("扫码已关注:" + inQrCodeEvent.getFromUserName());
+        }
+    }
+
+    @Override
+    protected void processInLocationEvent(InLocationEvent inLocationEvent)
+    {
+        log.debug("发送地理位置事件:" + inLocationEvent.getFromUserName());
+        OutTextMsg outMsg = new OutTextMsg(inLocationEvent);
+        outMsg.setContent("地理位置是:" + inLocationEvent.getLatitude());
+        render(outMsg);
+    }
+
+    @Override
+    protected void processInMassEvent(InMassEvent inMassEvent)
+    {
+        log.debug("测试方法:processInMassEvent()");
+        renderNull();
+    }
+
+    /**
+     * 实现父类抽方法,处理自定义菜单事件
+     */
+    @Override
+    protected void processInMenuEvent(InMenuEvent inMenuEvent)
+    {
+        log.debug("菜单事件:" + inMenuEvent.getFromUserName());
+        OutTextMsg outMsg = new OutTextMsg(inMenuEvent);
+        outMsg.setContent("菜单事件内容是:" + inMenuEvent.getEventKey());
+        render(outMsg);
+    }
+
+    @Override
+    protected void processInSpeechRecognitionResults(InSpeechRecognitionResults inSpeechRecognitionResults)
+    {
+        log.debug("语音识别事件:" + inSpeechRecognitionResults.getFromUserName());
+        OutTextMsg outMsg = new OutTextMsg(inSpeechRecognitionResults);
+        outMsg.setContent("语音识别内容是:" + inSpeechRecognitionResults.getRecognition());
+        render(outMsg);
+    }
+
+    @Override
+    protected void processInTemplateMsgEvent(InTemplateMsgEvent inTemplateMsgEvent)
+    {
+        log.debug("测试方法:processInTemplateMsgEvent()");
+        renderNull();
+    }
+
+//    /**
+//     * 实现父类抽方法,处理文本消息
+//     * 本例子中根据消息中的不同文本内容分别做出了不同的响应,同时也是为了测试 jfinal weixin sdk的基本功能:
+//     *     本方法仅测试了 OutTextMsg、OutNewsMsg、OutMusicMsg 三种类型的OutMsg,
+//     *     其它类型的消息会在随后的方法中进行测试
+//     */
+//    protected void processInTextMsg(InTextMsg inTextMsg) {
+//        String msgContent = inTextMsg.getContent().trim();
+//        // 帮助提示
+//        if ("help".equalsIgnoreCase(msgContent) || "帮助".equals(msgContent)) {
+//            OutTextMsg outMsg = new OutTextMsg(inTextMsg);
+//            outMsg.setContent(helpStr);
+//            render(outMsg);
+//        }
+//        // 图文消息测试
+//        else if ("news".equalsIgnoreCase(msgContent) || "新闻".equalsIgnoreCase(msgContent)) {
+//            OutNewsMsg outMsg = new OutNewsMsg(inTextMsg);
+//            outMsg.addNews("JFinal 2.0 发布,JAVA 极速 WEB+ORM 框架", "本星球第一个极速开发框架", "https://mmbiz.qlogo.cn/mmbiz/KJoUl0sqZFS0fRW68poHoU3v9ulTWV8MgKIduxmzHiamkb3yHia8pCicWVMCaFRuGGMnVOPrrj2qM13u9oTahfQ9A/0?wx_fmt=png", "http://mp.weixin.qq.com/s?__biz=MzA4NjM4Mjk2Mw==&mid=211063163&idx=1&sn=87d54e2992237a3f791f08b5cdab7990#rd");
+//            outMsg.addNews("JFinal 1.8 发布,JAVA 极速 WEB+ORM 框架", "现在就加入 JFinal 极速开发世界,节省更多时间去跟女友游山玩水 ^_^", "http://mmbiz.qpic.cn/mmbiz/zz3Q6WSrzq1ibBkhSA1BibMuMxLuHIvUfiaGsK7CC4kIzeh178IYSHbYQ5eg9tVxgEcbegAu22Qhwgl5IhZFWWXUw/0", "http://mp.weixin.qq.com/s?__biz=MjM5ODAwOTU3Mg==&mid=200313981&idx=1&sn=3bc5547ba4beae12a3e8762ababc8175#rd");
+//            outMsg.addNews("JFinal 1.6 发布,JAVA 极速 WEB+ORM 框架", "JFinal 1.6 主要升级了 ActiveRecord 插件,本次升级全面支持多数源、多方言、多缓", "http://mmbiz.qpic.cn/mmbiz/zz3Q6WSrzq0fcR8VmNCgugHXv7gVlxI6w95RBlKLdKUTjhOZIHGSWsGvjvHqnBnjIWHsicfcXmXlwOWE6sb39kA/0", "http://mp.weixin.qq.com/s?__biz=MjM5ODAwOTU3Mg==&mid=200121522&idx=1&sn=ee24f352e299b2859673b26ffa4a81f6#rd");
+//            render(outMsg);
+//        }
+//        // 音乐消息测试
+//        else if ("music".equalsIgnoreCase(msgContent) || "音乐".equals(msgContent)) {
+//            OutMusicMsg outMsg = new OutMusicMsg(inTextMsg);
+//            outMsg.setTitle("When The Stars Go Blue-Venke Knutson");
+//            outMsg.setDescription("建议在 WIFI 环境下流畅欣赏此音乐");
+//            outMsg.setMusicUrl("http://www.jfinal.com/When_The_Stars_Go_Blue-Venke_Knutson.mp3");
+//            outMsg.setHqMusicUrl("http://www.jfinal.com/When_The_Stars_Go_Blue-Venke_Knutson.mp3");
+//            outMsg.setFuncFlag(true);
+//            render(outMsg);
+//        }
+//        else if ("美女".equalsIgnoreCase(msgContent)) {
+//            OutNewsMsg outMsg = new OutNewsMsg(inTextMsg);
+//            outMsg.addNews(
+//                    "JFinal 宝贝更新喽",
+//                    "jfinal 宝贝更新喽,我们只看美女 ^_^",
+//                    "https://mmbiz.qlogo.cn/mmbiz/KJoUl0sqZFRHa3VrmibqAXRfYPNdiamFnpPTOvXoxsFlRoOHbVibGhmHOEUQiboD3qXWszKuzWpibFxsVW1RmNB9hPw/0?wx_fmt=jpeg",
+//                    "http://mp.weixin.qq.com/s?__biz=MzA4NjM4Mjk2Mw==&mid=211356950&idx=1&sn=6315a1a2848aa8cb0694bf1f4accfb07#rd");
+//            // outMsg.addNews("秀色可餐", "JFinal Weixin 极速开发就是这么爽,有木有 ^_^", "http://mmbiz.qpic.cn/mmbiz/zz3Q6WSrzq2GJLC60ECD7rE7n1cvKWRNFvOyib4KGdic3N5APUWf4ia3LLPxJrtyIYRx93aPNkDtib3ADvdaBXmZJg/0", "http://mp.weixin.qq.com/s?__biz=MjM5ODAwOTU3Mg==&mid=200987822&idx=1&sn=7eb2918275fb0fa7b520768854fb7b80#rd");
+//
+//            render(outMsg);
+//        }
+//        else if ("视频教程".equalsIgnoreCase(msgContent) || "视频".equalsIgnoreCase(msgContent)) {
+//            renderOutTextMsg("\thttp://pan.baidu.com/s/1nt2zAT7  \t密码:824r");
+//        }
+//        // 其它文本消息直接返回原值 + 帮助提示
+//        else {
+//            renderOutTextMsg("\t文本消息已成功接收,内容为: " + inTextMsg.getContent() + "\n\n" + helpStr);
+//        }
+//    }
+//
+//    /**
+//     * 实现父类抽方法,处理图片消息
+//     */
+//    protected void processInImageMsg(InImageMsg inImageMsg) {
+//        OutImageMsg outMsg = new OutImageMsg(inImageMsg);
+//        // 将刚发过来的图片再发回去
+//        outMsg.setMediaId(inImageMsg.getMediaId());
+//        render(outMsg);
+//    }
+//
+//    /**
+//     * 实现父类抽方法,处理语音消息
+//     */
+//    protected void processInVoiceMsg(InVoiceMsg inVoiceMsg) {
+//        OutVoiceMsg outMsg = new OutVoiceMsg(inVoiceMsg);
+//        // 将刚发过来的语音再发回去
+//        outMsg.setMediaId(inVoiceMsg.getMediaId());
+//        render(outMsg);
+//    }
+//
+//    /**
+//     * 实现父类抽方法,处理视频消息
+//     */
+//    protected void processInVideoMsg(InVideoMsg inVideoMsg) {
+//        /* 腾讯 api 有 bug,无法回复视频消息,暂时回复文本消息代码测试
+//        OutVideoMsg outMsg = new OutVideoMsg(inVideoMsg);
+//        outMsg.setTitle("OutVideoMsg 发送");
+//        outMsg.setDescription("刚刚发来的视频再发回去");
+//        // 将刚发过来的视频再发回去,经测试证明是腾讯官方的 api 有 bug,待 api bug 却除后再试
+//        outMsg.setMediaId(inVideoMsg.getMediaId());
+//        render(outMsg);
+//        */
+//        OutTextMsg outMsg = new OutTextMsg(inVideoMsg);
+//        outMsg.setContent("\t视频消息已成功接收,该视频的 mediaId 为: " + inVideoMsg.getMediaId());
+//        render(outMsg);
+//    }
+//
+//    @Override
+//    protected void processInShortVideoMsg(InShortVideoMsg inShortVideoMsg)
+//    {
+//        OutTextMsg outMsg = new OutTextMsg(inShortVideoMsg);
+//        outMsg.setContent("\t视频消息已成功接收,该视频的 mediaId 为: " + inShortVideoMsg.getMediaId());
+//        render(outMsg);
+//    }
+//
+//    /**
+//     * 实现父类抽方法,处理地址位置消息
+//     */
+//    protected void processInLocationMsg(InLocationMsg inLocationMsg) {
+//        OutTextMsg outMsg = new OutTextMsg(inLocationMsg);
+//        outMsg.setContent("已收到地理位置消息:" +
+//                            "\nlocation_X = " + inLocationMsg.getLocation_X() +
+//                            "\nlocation_Y = " + inLocationMsg.getLocation_Y() +
+//                            "\nscale = " + inLocationMsg.getScale() +
+//                            "\nlabel = " + inLocationMsg.getLabel());
+//        render(outMsg);
+//    }
+//
+//    /**
+//     * 实现父类抽方法,处理链接消息
+//     * 特别注意:测试时需要发送我的收藏中的曾经收藏过的图文消息,直接发送链接地址会当做文本消息来发送
+//     */
+//    protected void processInLinkMsg(InLinkMsg inLinkMsg) {
+//        OutNewsMsg outMsg = new OutNewsMsg(inLinkMsg);
+//        outMsg.addNews("链接消息已成功接收", "链接使用图文消息的方式发回给你,还可以使用文本方式发回。点击图文消息可跳转到链接地址页面,是不是很好玩 :)" , "http://mmbiz.qpic.cn/mmbiz/zz3Q6WSrzq1ibBkhSA1BibMuMxLuHIvUfiaGsK7CC4kIzeh178IYSHbYQ5eg9tVxgEcbegAu22Qhwgl5IhZFWWXUw/0", inLinkMsg.getUrl());
+//        render(outMsg);
+//    }
+//
+//    @Override
+//    protected void processInCustomEvent(InCustomEvent inCustomEvent)
+//    {
+//        System.out.println("processInCustomEvent() 方法测试成功");
+//    }
+//
+//    /**
+//     * 实现父类抽方法,处理关注/取消关注消息
+//     */
+//    protected void processInFollowEvent(InFollowEvent inFollowEvent) {
+//        OutTextMsg outMsg = new OutTextMsg(inFollowEvent);
+//        outMsg.setContent("感谢关注 JFinal Weixin 极速开发服务号,为您节约更多时间,去陪恋人、家人和朋友 :) \n\n\n " + helpStr);
+//        // 如果为取消关注事件,将无法接收到传回的信息
+//        render(outMsg);
+//    }
+//
+//    /**
+//     * 实现父类抽方法,处理扫描带参数二维码事件
+//     */
+//    protected void processInQrCodeEvent(InQrCodeEvent inQrCodeEvent) {
+//        OutTextMsg outMsg = new OutTextMsg(inQrCodeEvent);
+//        outMsg.setContent("processInQrCodeEvent() 方法测试成功");
+//        render(outMsg);
+//    }
+//
+//    /**
+//     * 实现父类抽方法,处理上报地理位置事件
+//     */
+//    protected void processInLocationEvent(InLocationEvent inLocationEvent) {
+//        OutTextMsg outMsg = new OutTextMsg(inLocationEvent);
+//        outMsg.setContent("processInLocationEvent() 方法测试成功");
+//        render(outMsg);
+//    }
+//
+//    @Override
+//    protected void processInMassEvent(InMassEvent inMassEvent)
+//    {
+//        System.out.println("processInMassEvent() 方法测试成功");
+//    }
+//
+//    /**
+//     * 实现父类抽方法,处理自定义菜单事件
+//     */
+//    protected void processInMenuEvent(InMenuEvent inMenuEvent) {
+//        renderOutTextMsg("processInMenuEvent() 方法测试成功");
+//    }
+//
+//    /**
+//     * 实现父类抽方法,处理接收语音识别结果
+//     */
+//    protected void processInSpeechRecognitionResults(InSpeechRecognitionResults inSpeechRecognitionResults) {
+//        renderOutTextMsg("语音识别结果: " + inSpeechRecognitionResults.getRecognition());
+//    }
+//
+//    // 处理接收到的模板消息是否送达成功通知事件
+//    protected void processInTemplateMsgEvent(InTemplateMsgEvent inTemplateMsgEvent) {
+//        String status = inTemplateMsgEvent.getStatus();
+//        renderOutTextMsg("模板消息是否接收成功:" + status);
+//    }
+//    @Override
+//    protected void processInShakearoundUserShakeEvent(InShakearoundUserShakeEvent inShakearoundUserShakeEvent) {
+//        logger.debug("摇一摇周边设备信息通知事件:" + inShakearoundUserShakeEvent.getFromUserName());
+//        OutTextMsg outMsg = new OutTextMsg(inShakearoundUserShakeEvent);
+//        outMsg.setContent("摇一摇周边设备信息通知事件UUID:" + inShakearoundUserShakeEvent.getUuid());
+//        render(outMsg);
+//    }
+//
+//    @Override
+//    protected void processInVerifySuccessEvent(InVerifySuccessEvent inVerifySuccessEvent) {
+//        logger.debug("资质认证成功通知事件:" + inVerifySuccessEvent.getFromUserName());
+//        OutTextMsg outMsg = new OutTextMsg(inVerifySuccessEvent);
+//        outMsg.setContent("资质认证成功通知事件:" + inVerifySuccessEvent.getExpiredTime());
+//        render(outMsg);
+//    }
+//
+//    @Override
+//    protected void processInVerifyFailEvent(InVerifyFailEvent inVerifyFailEvent){
+//        logger.debug("资质认证失败通知事件:" + inVerifyFailEvent.getFromUserName());
+//        OutTextMsg outMsg = new OutTextMsg(inVerifyFailEvent);
+//        outMsg.setContent("资质认证失败通知事件:" + inVerifyFailEvent.getFailReason());
+//        render(outMsg);
+//    }
+//    
+//    /**
+//     * 处理微信硬件绑定和解绑事件
+//     * @param InEqubindEvent 处理微信硬件绑定和解绑事件
+//     */    
+//    @Override
+//    protected void processInEqubindEvent(InEqubindEvent msg) {
+//        String deviceType = msg.getDeviceType();
+//        String deviceID = msg.getDeviceID();
+//        String openID = msg.getOpenID();
+//        String event = msg.getEvent();
+//        String sessionID= msg.getSessionID();
+//        
+//        System.out.printf("收到消息,Openid,DeviceId,event:%s;%s;%s",msg.getOpenID(),msg.getDeviceID(),msg.getEvent());
+//        System.out.println(":DeviceType:" + deviceType);
+//        System.out.println(":sessionID:" + sessionID);
+//        
+//        // 存储用户和设备的绑定关系
+//        // 设备绑定/解绑事件可以回复空包体
+//        if(InEqubindEvent.BIND.equals(event)){
+//            // DO 业务
+//        }else{
+//            // DO 业务
+//        }
+//        //respons event
+//        OutEquDataMsg oeqmsg = new OutEquDataMsg(msg);  
+//        oeqmsg.setContent("");
+//        oeqmsg.setDeviceID(deviceID);
+//        oeqmsg.setDeviceType(deviceType);
+//        oeqmsg.setSessionID(sessionID);
+//        render(oeqmsg);
+//    }
+//    
+//    /**
+//     * 处理微信硬件发来数据
+//     * @param InEquDataMsg 处理微信硬件发来数据
+//     */
+//    @Override
+//    protected void processInEquDataMsg(InEquDataMsg msg) {
+//        String reqContent = msg.getContent();
+//        // Base64解码
+//        byte[] reqRaw = Base64Utils.decodeBase64(reqContent);
+//        // 反序列化
+//        BlueLight lightReq = BlueLight.parse(reqRaw);
+//        
+//        // 逻辑处理
+//        // demo中 推送消息给用户微信
+//        String reqText = lightReq.body;
+//        System.out.println("recv text:" + reqText);
+//        String transText = "收到设备发送的数据:";
+//        
+//        byte[] reqTextRaw = reqText.getBytes(Charsets.UTF_8);
+//        
+//        if (reqTextRaw.length > 0 && reqTextRaw[reqTextRaw.length - 1] == 0) {
+//            // 推送给微信用户的内容去掉末尾的反斜杠零'\0'
+//            transText = transText + new String(reqTextRaw, 0, reqTextRaw.length - 1, Charsets.UTF_8);
+//        } else{
+//            transText = transText + reqText;
+//        }
+//        
+//        // 推送文本消息给微信
+//        //MpApi.customSendText(openID, transText);
+//
+//        // demo中 回复 收到的内容给设备
+//        BlueLight lightResp = BlueLight.build(BlueLight.CmdId.SEND_TEXT_RESP, reqText, lightReq.head.seq); 
+//        // 序列化
+//        byte[] respRaw = lightResp.toBytes();
+//        // Base64编码
+//        String respCon = Base64Utils.encode(respRaw);
+//        System.out.println(respCon);
+//        // 设备消息接口必须回复符合协议的xml
+//        //TODO 解析并获取测量值
+//        renderOutTextMsg(transText);
+//    }
+}
+
+
+
+
+
+

+ 11 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/Exams.java

@@ -0,0 +1,11 @@
+package com.zskk.model;
+
+import com.zskk.model.base.BaseExams;
+
+/**
+ * Generated by JFinal.
+ */
+@SuppressWarnings("serial")
+public class Exams extends BaseExams<Exams> {
+	
+}

+ 11 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/Institution.java

@@ -0,0 +1,11 @@
+package com.zskk.model;
+
+import com.zskk.model.base.BaseInstitution;
+
+/**
+ * Generated by JFinal.
+ */
+@SuppressWarnings("serial")
+public class Institution extends BaseInstitution<Institution> {
+	
+}

+ 11 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/Messages.java

@@ -0,0 +1,11 @@
+package com.zskk.model;
+
+import com.zskk.model.base.BaseMessages;
+
+/**
+ * Generated by JFinal.
+ */
+@SuppressWarnings("serial")
+public class Messages extends BaseMessages<Messages> {
+	
+}

+ 11 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/OpenApplication.java

@@ -0,0 +1,11 @@
+package com.zskk.model;
+
+import com.zskk.model.base.BaseOpenApplication;
+
+/**
+ * Generated by JFinal.
+ */
+@SuppressWarnings("serial")
+public class OpenApplication extends BaseOpenApplication<OpenApplication> {
+	
+}

+ 11 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/Operating.java

@@ -0,0 +1,11 @@
+package com.zskk.model;
+
+import com.zskk.model.base.BaseOperating;
+
+/**
+ * Generated by JFinal.
+ */
+@SuppressWarnings("serial")
+public class Operating extends BaseOperating<Operating> {
+	
+}

+ 11 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/PatientInfos.java

@@ -0,0 +1,11 @@
+package com.zskk.model;
+
+import com.zskk.model.base.BasePatientInfos;
+
+/**
+ * Generated by JFinal.
+ */
+@SuppressWarnings("serial")
+public class PatientInfos extends BasePatientInfos<PatientInfos> {
+	
+}

+ 11 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/RemoteApplication.java

@@ -0,0 +1,11 @@
+package com.zskk.model;
+
+import com.zskk.model.base.BaseRemoteApplication;
+
+/**
+ * Generated by JFinal.
+ */
+@SuppressWarnings("serial")
+public class RemoteApplication extends BaseRemoteApplication<RemoteApplication> {
+	
+}

+ 11 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/Report.java

@@ -0,0 +1,11 @@
+package com.zskk.model;
+
+import com.zskk.model.base.BaseReport;
+
+/**
+ * Generated by JFinal.
+ */
+@SuppressWarnings("serial")
+public class Report extends BaseReport<Report> {
+	
+}

+ 11 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/ReportRecord.java

@@ -0,0 +1,11 @@
+package com.zskk.model;
+
+import com.zskk.model.base.BaseReportRecord;
+
+/**
+ * Generated by JFinal.
+ */
+@SuppressWarnings("serial")
+public class ReportRecord extends BaseReportRecord<ReportRecord> {
+	
+}

+ 11 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/User.java

@@ -0,0 +1,11 @@
+package com.zskk.model;
+
+import com.zskk.model.base.BaseUser;
+
+/**
+ * Generated by JFinal.
+ */
+@SuppressWarnings("serial")
+public class User extends BaseUser<User> {
+	
+}

+ 11 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/UserBind.java

@@ -0,0 +1,11 @@
+package com.zskk.model;
+
+import com.zskk.model.base.BaseUserBind;
+
+/**
+ * Generated by JFinal.
+ */
+@SuppressWarnings("serial")
+public class UserBind extends BaseUserBind<UserBind> {
+	
+}

+ 11 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/WechatBind.java

@@ -0,0 +1,11 @@
+package com.zskk.model;
+
+import com.zskk.model.base.BaseWechatBind;
+
+/**
+ * Generated by JFinal.
+ */
+@SuppressWarnings("serial")
+public class WechatBind extends BaseWechatBind<WechatBind> {
+	
+}

+ 33 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/_MappingKit.java

@@ -0,0 +1,33 @@
+package com.zskk.model;
+
+import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
+
+/**
+ * Generated by JFinal, do not modify this file.
+ * <pre>
+ * Example:
+ * public void configPlugin(Plugins me) {
+ *     ActiveRecordPlugin arp = new ActiveRecordPlugin(...);
+ *     _MappingKit.mapping(arp);
+ *     me.add(arp);
+ * }
+ * </pre>
+ */
+public class _MappingKit {
+	
+	public static void mapping(ActiveRecordPlugin arp) {
+		arp.addMapping("exams", "id", Exams.class);
+		arp.addMapping("institution", "id", Institution.class);
+		arp.addMapping("messages", "id", Messages.class);
+		arp.addMapping("open_application", "id", OpenApplication.class);
+		arp.addMapping("operating", "id", Operating.class);
+		arp.addMapping("patient_infos", "id", PatientInfos.class);
+		arp.addMapping("remote_application", "id", RemoteApplication.class);
+		arp.addMapping("report", "id", Report.class);
+		arp.addMapping("report_record", "id", ReportRecord.class);
+		arp.addMapping("user", "id", User.class);
+		arp.addMapping("user_bind", "id", UserBind.class);
+		arp.addMapping("wechat_bind", "id", WechatBind.class);
+	}
+}
+

+ 388 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseExams.java

@@ -0,0 +1,388 @@
+package com.zskk.model.base;
+
+import com.jfinal.plugin.activerecord.Model;
+import com.jfinal.plugin.activerecord.IBean;
+
+/**
+ * Generated by JFinal, do not modify this file.
+ */
+@SuppressWarnings("serial")
+public abstract class BaseExams<M extends BaseExams<M>> extends Model<M> implements IBean {
+
+	public void setId(java.lang.String id) {
+		set("id", id);
+	}
+	
+	public java.lang.String getId() {
+		return getStr("id");
+	}
+
+	public void setDeptId(java.lang.String deptId) {
+		set("dept_id", deptId);
+	}
+	
+	public java.lang.String getDeptId() {
+		return getStr("dept_id");
+	}
+
+	public void setPatientId(java.lang.String patientId) {
+		set("patient_id", patientId);
+	}
+	
+	public java.lang.String getPatientId() {
+		return getStr("patient_id");
+	}
+
+	public void setPatientNum(java.lang.String patientNum) {
+		set("patient_num", patientNum);
+	}
+	
+	public java.lang.String getPatientNum() {
+		return getStr("patient_num");
+	}
+
+	public void setAccessionNum(java.lang.String accessionNum) {
+		set("accession_num", accessionNum);
+	}
+	
+	public java.lang.String getAccessionNum() {
+		return getStr("accession_num");
+	}
+
+	public void setExamDatetime(java.lang.String examDatetime) {
+		set("exam_datetime", examDatetime);
+	}
+	
+	public java.lang.String getExamDatetime() {
+		return getStr("exam_datetime");
+	}
+
+	public void setExamClass(java.lang.String examClass) {
+		set("exam_class", examClass);
+	}
+	
+	public java.lang.String getExamClass() {
+		return getStr("exam_class");
+	}
+
+	public void setExamSubClass(java.lang.String examSubClass) {
+		set("exam_sub_class", examSubClass);
+	}
+	
+	public java.lang.String getExamSubClass() {
+		return getStr("exam_sub_class");
+	}
+
+	public void setExamProject(java.lang.String examProject) {
+		set("exam_project", examProject);
+	}
+	
+	public java.lang.String getExamProject() {
+		return getStr("exam_project");
+	}
+
+	public void setDevice(java.lang.String device) {
+		set("device", device);
+	}
+	
+	public java.lang.String getDevice() {
+		return getStr("device");
+	}
+
+	public void setBodyPart(java.lang.String bodyPart) {
+		set("body_part", bodyPart);
+	}
+	
+	public java.lang.String getBodyPart() {
+		return getStr("body_part");
+	}
+
+	public void setExamMethod(java.lang.String examMethod) {
+		set("exam_method", examMethod);
+	}
+	
+	public java.lang.String getExamMethod() {
+		return getStr("exam_method");
+	}
+
+	public void setHopitalizedNo(java.lang.String hopitalizedNo) {
+		set("hopitalized_no", hopitalizedNo);
+	}
+	
+	public java.lang.String getHopitalizedNo() {
+		return getStr("hopitalized_no");
+	}
+
+	public void setBedNo(java.lang.String bedNo) {
+		set("bed_no", bedNo);
+	}
+	
+	public java.lang.String getBedNo() {
+		return getStr("bed_no");
+	}
+
+	public void setClinDeptId(java.lang.String clinDeptId) {
+		set("clin_dept_id", clinDeptId);
+	}
+	
+	public java.lang.String getClinDeptId() {
+		return getStr("clin_dept_id");
+	}
+
+	public void setTechnician(java.lang.String technician) {
+		set("technician", technician);
+	}
+	
+	public java.lang.String getTechnician() {
+		return getStr("technician");
+	}
+
+	public void setCharge(java.lang.String charge) {
+		set("charge", charge);
+	}
+	
+	public java.lang.String getCharge() {
+		return getStr("charge");
+	}
+
+	public void setCost(java.lang.String cost) {
+		set("cost", cost);
+	}
+	
+	public java.lang.String getCost() {
+		return getStr("cost");
+	}
+
+	public void setClinDoctors(java.lang.String clinDoctors) {
+		set("clin_doctors", clinDoctors);
+	}
+	
+	public java.lang.String getClinDoctors() {
+		return getStr("clin_doctors");
+	}
+
+	public void setPhone(java.lang.String phone) {
+		set("phone", phone);
+	}
+	
+	public java.lang.String getPhone() {
+		return getStr("phone");
+	}
+
+	public void setInstitutionId(java.lang.String institutionId) {
+		set("institution_id", institutionId);
+	}
+	
+	public java.lang.String getInstitutionId() {
+		return getStr("institution_id");
+	}
+
+	public void setStudyId(java.lang.String studyId) {
+		set("study_id", studyId);
+	}
+	
+	public java.lang.String getStudyId() {
+		return getStr("study_id");
+	}
+
+	public void setIllnessDesc(java.lang.String illnessDesc) {
+		set("illness_desc", illnessDesc);
+	}
+	
+	public java.lang.String getIllnessDesc() {
+		return getStr("illness_desc");
+	}
+
+	public void setPhysSign(java.lang.String physSign) {
+		set("phys_sign", physSign);
+	}
+	
+	public java.lang.String getPhysSign() {
+		return getStr("phys_sign");
+	}
+
+	public void setClinDiag(java.lang.String clinDiag) {
+		set("clin_diag", clinDiag);
+	}
+	
+	public java.lang.String getClinDiag() {
+		return getStr("clin_diag");
+	}
+
+	public void setClinSymp(java.lang.String clinSymp) {
+		set("clin_symp", clinSymp);
+	}
+	
+	public java.lang.String getClinSymp() {
+		return getStr("clin_symp");
+	}
+
+	public void setPatientSource(java.lang.String patientSource) {
+		set("patient_source", patientSource);
+	}
+	
+	public java.lang.String getPatientSource() {
+		return getStr("patient_source");
+	}
+
+	public void setReqDatetime(java.util.Date reqDatetime) {
+		set("req_datetime", reqDatetime);
+	}
+	
+	public java.util.Date getReqDatetime() {
+		return get("req_datetime");
+	}
+
+	public void setReqDoctor(java.lang.String reqDoctor) {
+		set("req_doctor", reqDoctor);
+	}
+	
+	public java.lang.String getReqDoctor() {
+		return getStr("req_doctor");
+	}
+
+	public void setRemark(java.lang.String remark) {
+		set("remark", remark);
+	}
+	
+	public java.lang.String getRemark() {
+		return getStr("remark");
+	}
+
+	public void setRegister(java.lang.String register) {
+		set("register", register);
+	}
+	
+	public java.lang.String getRegister() {
+		return getStr("register");
+	}
+
+	public void setRegisterDatetime(java.util.Date registerDatetime) {
+		set("register_datetime", registerDatetime);
+	}
+	
+	public java.util.Date getRegisterDatetime() {
+		return get("register_datetime");
+	}
+
+	public void setExamStatus(java.lang.Integer examStatus) {
+		set("exam_status", examStatus);
+	}
+	
+	public java.lang.Integer getExamStatus() {
+		return getInt("exam_status");
+	}
+
+	public void setStatus(java.lang.String status) {
+		set("status", status);
+	}
+	
+	public java.lang.String getStatus() {
+		return getStr("status");
+	}
+
+	public void setPayStatus(java.lang.String payStatus) {
+		set("pay_status", payStatus);
+	}
+	
+	public java.lang.String getPayStatus() {
+		return getStr("pay_status");
+	}
+
+	public void setIsRemote(java.lang.String isRemote) {
+		set("is_remote", isRemote);
+	}
+	
+	public java.lang.String getIsRemote() {
+		return getStr("is_remote");
+	}
+
+	public void setUrgent(java.lang.String urgent) {
+		set("urgent", urgent);
+	}
+	
+	public java.lang.String getUrgent() {
+		return getStr("urgent");
+	}
+
+	public void setFilmType(java.lang.String filmType) {
+		set("film_type", filmType);
+	}
+	
+	public java.lang.String getFilmType() {
+		return getStr("film_type");
+	}
+
+	public void setAnamnesis(java.lang.String anamnesis) {
+		set("anamnesis", anamnesis);
+	}
+	
+	public java.lang.String getAnamnesis() {
+		return getStr("anamnesis");
+	}
+
+	public void setFamilyIll(java.lang.String familyIll) {
+		set("family_ill", familyIll);
+	}
+	
+	public java.lang.String getFamilyIll() {
+		return getStr("family_ill");
+	}
+
+	public void setCreatedAt(java.util.Date createdAt) {
+		set("createdAt", createdAt);
+	}
+	
+	public java.util.Date getCreatedAt() {
+		return get("createdAt");
+	}
+
+	public void setUpdatedAt(java.util.Date updatedAt) {
+		set("updatedAt", updatedAt);
+	}
+	
+	public java.util.Date getUpdatedAt() {
+		return get("updatedAt");
+	}
+
+	public void setDeliveryDoctor(java.lang.String deliveryDoctor) {
+		set("delivery_doctor", deliveryDoctor);
+	}
+	
+	public java.lang.String getDeliveryDoctor() {
+		return getStr("delivery_doctor");
+	}
+
+	public void setExamReport(java.lang.String examReport) {
+		set("exam_report", examReport);
+	}
+	
+	public java.lang.String getExamReport() {
+		return getStr("exam_report");
+	}
+
+	public void setExt(java.lang.String ext) {
+		set("ext", ext);
+	}
+	
+	public java.lang.String getExt() {
+		return getStr("ext");
+	}
+
+	public void setIdCard(java.lang.String idCard) {
+		set("id_card", idCard);
+	}
+	
+	public java.lang.String getIdCard() {
+		return getStr("id_card");
+	}
+
+	public void setStudyUid(java.lang.String studyUid) {
+		set("study_uid", studyUid);
+	}
+	
+	public java.lang.String getStudyUid() {
+		return getStr("study_uid");
+	}
+
+}

+ 140 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseInstitution.java

@@ -0,0 +1,140 @@
+package com.zskk.model.base;
+
+import com.jfinal.plugin.activerecord.Model;
+import com.jfinal.plugin.activerecord.IBean;
+
+/**
+ * Generated by JFinal, do not modify this file.
+ */
+@SuppressWarnings("serial")
+public abstract class BaseInstitution<M extends BaseInstitution<M>> extends Model<M> implements IBean {
+
+	public void setId(java.lang.String id) {
+		set("id", id);
+	}
+	
+	public java.lang.String getId() {
+		return getStr("id");
+	}
+
+	public void setName(java.lang.String name) {
+		set("name", name);
+	}
+	
+	public java.lang.String getName() {
+		return getStr("name");
+	}
+
+	public void setAddress(java.lang.String address) {
+		set("address", address);
+	}
+	
+	public java.lang.String getAddress() {
+		return getStr("address");
+	}
+
+	public void setRemark(java.lang.String remark) {
+		set("remark", remark);
+	}
+	
+	public java.lang.String getRemark() {
+		return getStr("remark");
+	}
+
+	public void setStatus(java.lang.String status) {
+		set("status", status);
+	}
+	
+	public java.lang.String getStatus() {
+		return getStr("status");
+	}
+
+	public void setCreatedAt(java.util.Date createdAt) {
+		set("createdAt", createdAt);
+	}
+	
+	public java.util.Date getCreatedAt() {
+		return get("createdAt");
+	}
+
+	public void setUpdatedAt(java.util.Date updatedAt) {
+		set("updatedAt", updatedAt);
+	}
+	
+	public java.util.Date getUpdatedAt() {
+		return get("updatedAt");
+	}
+
+	public void setInstitutionLevel(java.lang.String institutionLevel) {
+		set("institution_level", institutionLevel);
+	}
+	
+	public java.lang.String getInstitutionLevel() {
+		return getStr("institution_level");
+	}
+
+	public void setParentInstitution(java.lang.String parentInstitution) {
+		set("parent_institution", parentInstitution);
+	}
+	
+	public java.lang.String getParentInstitution() {
+		return getStr("parent_institution");
+	}
+
+	public void setChargeMode(java.lang.String chargeMode) {
+		set("charge_mode", chargeMode);
+	}
+	
+	public java.lang.String getChargeMode() {
+		return getStr("charge_mode");
+	}
+
+	public void setLocalDomain(java.lang.String localDomain) {
+		set("local_domain", localDomain);
+	}
+	
+	public java.lang.String getLocalDomain() {
+		return getStr("local_domain");
+	}
+
+	public void setReportSubtitle(java.lang.String reportSubtitle) {
+		set("report_subtitle", reportSubtitle);
+	}
+	
+	public java.lang.String getReportSubtitle() {
+		return getStr("report_subtitle");
+	}
+
+	public void setAgentId(java.lang.String agentId) {
+		set("agent_id", agentId);
+	}
+	
+	public java.lang.String getAgentId() {
+		return getStr("agent_id");
+	}
+
+	public void setMsgPhone(java.lang.String msgPhone) {
+		set("msg_phone", msgPhone);
+	}
+	
+	public java.lang.String getMsgPhone() {
+		return getStr("msg_phone");
+	}
+
+	public void setUrgentTime(java.util.Date urgentTime) {
+		set("urgent_time", urgentTime);
+	}
+	
+	public java.util.Date getUrgentTime() {
+		return get("urgent_time");
+	}
+
+	public void setNotUrgentTime(java.util.Date notUrgentTime) {
+		set("not_urgent_time", notUrgentTime);
+	}
+	
+	public java.util.Date getNotUrgentTime() {
+		return get("not_urgent_time");
+	}
+
+}

+ 124 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseMessages.java

@@ -0,0 +1,124 @@
+package com.zskk.model.base;
+
+import com.jfinal.plugin.activerecord.Model;
+import com.jfinal.plugin.activerecord.IBean;
+
+/**
+ * Generated by JFinal, do not modify this file.
+ */
+@SuppressWarnings("serial")
+public abstract class BaseMessages<M extends BaseMessages<M>> extends Model<M> implements IBean {
+
+	public void setId(java.lang.String id) {
+		set("id", id);
+	}
+	
+	public java.lang.String getId() {
+		return getStr("id");
+	}
+
+	public void setTitle(java.lang.String title) {
+		set("title", title);
+	}
+	
+	public java.lang.String getTitle() {
+		return getStr("title");
+	}
+
+	public void setContent(java.lang.String content) {
+		set("content", content);
+	}
+	
+	public java.lang.String getContent() {
+		return getStr("content");
+	}
+
+	public void setIsRead(java.lang.Integer isRead) {
+		set("is_read", isRead);
+	}
+	
+	public java.lang.Integer getIsRead() {
+		return getInt("is_read");
+	}
+
+	public void setCtime(java.util.Date ctime) {
+		set("ctime", ctime);
+	}
+	
+	public java.util.Date getCtime() {
+		return get("ctime");
+	}
+
+	public void setDoctorId(java.lang.String doctorId) {
+		set("doctor_id", doctorId);
+	}
+	
+	public java.lang.String getDoctorId() {
+		return getStr("doctor_id");
+	}
+
+	public void setStatus(java.lang.String status) {
+		set("status", status);
+	}
+	
+	public java.lang.String getStatus() {
+		return getStr("status");
+	}
+
+	public void setInstitutionId(java.lang.String institutionId) {
+		set("institution_id", institutionId);
+	}
+	
+	public java.lang.String getInstitutionId() {
+		return getStr("institution_id");
+	}
+
+	public void setDepartmentId(java.lang.String departmentId) {
+		set("department_id", departmentId);
+	}
+	
+	public java.lang.String getDepartmentId() {
+		return getStr("department_id");
+	}
+
+	public void setCount(java.lang.Integer count) {
+		set("count", count);
+	}
+	
+	public java.lang.Integer getCount() {
+		return getInt("count");
+	}
+
+	public void setUrl(java.lang.String url) {
+		set("url", url);
+	}
+	
+	public java.lang.String getUrl() {
+		return getStr("url");
+	}
+
+	public void setType(java.lang.String type) {
+		set("type", type);
+	}
+	
+	public java.lang.String getType() {
+		return getStr("type");
+	}
+
+	public void setHtime(java.util.Date htime) {
+		set("htime", htime);
+	}
+	
+	public java.util.Date getHtime() {
+		return get("htime");
+	}
+
+	public void setApplicationId(java.lang.String applicationId) {
+		set("application_id", applicationId);
+	}
+	
+	public java.lang.String getApplicationId() {
+		return getStr("application_id");
+	}
+
+}

+ 116 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseOpenApplication.java

@@ -0,0 +1,116 @@
+package com.zskk.model.base;
+
+import com.jfinal.plugin.activerecord.Model;
+import com.jfinal.plugin.activerecord.IBean;
+
+/**
+ * Generated by JFinal, do not modify this file.
+ */
+@SuppressWarnings("serial")
+public abstract class BaseOpenApplication<M extends BaseOpenApplication<M>> extends Model<M> implements IBean {
+
+	public void setId(java.lang.Integer id) {
+		set("id", id);
+	}
+	
+	public java.lang.Integer getId() {
+		return getInt("id");
+	}
+
+	public void setInstitutionName(java.lang.String institutionName) {
+		set("institution_name", institutionName);
+	}
+	
+	public java.lang.String getInstitutionName() {
+		return getStr("institution_name");
+	}
+
+	public void setInstitutionLevel(java.lang.String institutionLevel) {
+		set("institution_level", institutionLevel);
+	}
+	
+	public java.lang.String getInstitutionLevel() {
+		return getStr("institution_level");
+	}
+
+	public void setName(java.lang.String name) {
+		set("name", name);
+	}
+	
+	public java.lang.String getName() {
+		return getStr("name");
+	}
+
+	public void setPhone(java.lang.String phone) {
+		set("phone", phone);
+	}
+	
+	public java.lang.String getPhone() {
+		return getStr("phone");
+	}
+
+	public void setEmail(java.lang.String email) {
+		set("email", email);
+	}
+	
+	public java.lang.String getEmail() {
+		return getStr("email");
+	}
+
+	public void setPosition(java.lang.String position) {
+		set("position", position);
+	}
+	
+	public java.lang.String getPosition() {
+		return getStr("position");
+	}
+
+	public void setTitle(java.lang.String title) {
+		set("title", title);
+	}
+	
+	public java.lang.String getTitle() {
+		return getStr("title");
+	}
+
+	public void setDepartment(java.lang.String department) {
+		set("department", department);
+	}
+	
+	public java.lang.String getDepartment() {
+		return getStr("department");
+	}
+
+	public void setCompany(java.lang.String company) {
+		set("company", company);
+	}
+	
+	public java.lang.String getCompany() {
+		return getStr("company");
+	}
+
+	public void setType(java.lang.Integer type) {
+		set("type", type);
+	}
+	
+	public java.lang.Integer getType() {
+		return getInt("type");
+	}
+
+	public void setStatus(java.lang.Integer status) {
+		set("status", status);
+	}
+	
+	public java.lang.Integer getStatus() {
+		return getInt("status");
+	}
+
+	public void setCtime(java.lang.Integer ctime) {
+		set("ctime", ctime);
+	}
+	
+	public java.lang.Integer getCtime() {
+		return getInt("ctime");
+	}
+
+}

+ 76 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseOperating.java

@@ -0,0 +1,76 @@
+package com.zskk.model.base;
+
+import com.jfinal.plugin.activerecord.Model;
+import com.jfinal.plugin.activerecord.IBean;
+
+/**
+ * Generated by JFinal, do not modify this file.
+ */
+@SuppressWarnings("serial")
+public abstract class BaseOperating<M extends BaseOperating<M>> extends Model<M> implements IBean {
+
+	public void setId(java.lang.String id) {
+		set("id", id);
+	}
+	
+	public java.lang.String getId() {
+		return getStr("id");
+	}
+
+	public void setNums(java.lang.String nums) {
+		set("nums", nums);
+	}
+	
+	public java.lang.String getNums() {
+		return getStr("nums");
+	}
+
+	public void setMonth(java.lang.Integer month) {
+		set("month", month);
+	}
+	
+	public java.lang.Integer getMonth() {
+		return getInt("month");
+	}
+
+	public void setExamNum(java.lang.String examNum) {
+		set("exam_num", examNum);
+	}
+	
+	public java.lang.String getExamNum() {
+		return getStr("exam_num");
+	}
+
+	public void setRemoteNum(java.lang.String remoteNum) {
+		set("remote_num", remoteNum);
+	}
+	
+	public java.lang.String getRemoteNum() {
+		return getStr("remote_num");
+	}
+
+	public void setDangerNum(java.lang.String dangerNum) {
+		set("danger_num", dangerNum);
+	}
+	
+	public java.lang.String getDangerNum() {
+		return getStr("danger_num");
+	}
+
+	public void setRoleId(java.lang.String roleId) {
+		set("role_id", roleId);
+	}
+	
+	public java.lang.String getRoleId() {
+		return getStr("role_id");
+	}
+
+	public void setType(java.lang.String type) {
+		set("type", type);
+	}
+	
+	public java.lang.String getType() {
+		return getStr("type");
+	}
+
+}

+ 188 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BasePatientInfos.java

@@ -0,0 +1,188 @@
+package com.zskk.model.base;
+
+import com.jfinal.plugin.activerecord.Model;
+import com.jfinal.plugin.activerecord.IBean;
+
+/**
+ * Generated by JFinal, do not modify this file.
+ */
+@SuppressWarnings("serial")
+public abstract class BasePatientInfos<M extends BasePatientInfos<M>> extends Model<M> implements IBean {
+
+	public void setId(java.lang.String id) {
+		set("id", id);
+	}
+	
+	public java.lang.String getId() {
+		return getStr("id");
+	}
+
+	public void setName(java.lang.String name) {
+		set("name", name);
+	}
+	
+	public java.lang.String getName() {
+		return getStr("name");
+	}
+
+	public void setSex(java.lang.String sex) {
+		set("sex", sex);
+	}
+	
+	public java.lang.String getSex() {
+		return getStr("sex");
+	}
+
+	public void setCardNum(java.lang.String cardNum) {
+		set("card_num", cardNum);
+	}
+	
+	public java.lang.String getCardNum() {
+		return getStr("card_num");
+	}
+
+	public void setPhone(java.lang.String phone) {
+		set("phone", phone);
+	}
+	
+	public java.lang.String getPhone() {
+		return getStr("phone");
+	}
+
+	public void setCtime(java.util.Date ctime) {
+		set("ctime", ctime);
+	}
+	
+	public java.util.Date getCtime() {
+		return get("ctime");
+	}
+
+	public void setBirthday(java.lang.String birthday) {
+		set("birthday", birthday);
+	}
+	
+	public java.lang.String getBirthday() {
+		return getStr("birthday");
+	}
+
+	public void setAge(java.lang.String age) {
+		set("age", age);
+	}
+	
+	public java.lang.String getAge() {
+		return getStr("age");
+	}
+
+	public void setCardType(java.lang.String cardType) {
+		set("card_type", cardType);
+	}
+	
+	public java.lang.String getCardType() {
+		return getStr("card_type");
+	}
+
+	public void setNationality(java.lang.String nationality) {
+		set("nationality", nationality);
+	}
+	
+	public java.lang.String getNationality() {
+		return getStr("nationality");
+	}
+
+	public void setNation(java.lang.String nation) {
+		set("nation", nation);
+	}
+	
+	public java.lang.String getNation() {
+		return getStr("nation");
+	}
+
+	public void setMarry(java.lang.String marry) {
+		set("marry", marry);
+	}
+	
+	public java.lang.String getMarry() {
+		return getStr("marry");
+	}
+
+	public void setProfessional(java.lang.String professional) {
+		set("professional", professional);
+	}
+	
+	public java.lang.String getProfessional() {
+		return getStr("professional");
+	}
+
+	public void setAddress(java.lang.String address) {
+		set("address", address);
+	}
+	
+	public java.lang.String getAddress() {
+		return getStr("address");
+	}
+
+	public void setTempPatientId(java.lang.String tempPatientId) {
+		set("temp_patient_id", tempPatientId);
+	}
+	
+	public java.lang.String getTempPatientId() {
+		return getStr("temp_patient_id");
+	}
+
+	public void setStatus(java.lang.Integer status) {
+		set("status", status);
+	}
+	
+	public java.lang.Integer getStatus() {
+		return getInt("status");
+	}
+
+	public void setInstitutionId(java.lang.String institutionId) {
+		set("institution_id", institutionId);
+	}
+	
+	public java.lang.String getInstitutionId() {
+		return getStr("institution_id");
+	}
+
+	public void setAnamnesis(java.lang.String anamnesis) {
+		set("anamnesis", anamnesis);
+	}
+	
+	public java.lang.String getAnamnesis() {
+		return getStr("anamnesis");
+	}
+
+	public void setFamilyIll(java.lang.String familyIll) {
+		set("family_ill", familyIll);
+	}
+	
+	public java.lang.String getFamilyIll() {
+		return getStr("family_ill");
+	}
+
+	public void setCreatedAt(java.util.Date createdAt) {
+		set("createdAt", createdAt);
+	}
+	
+	public java.util.Date getCreatedAt() {
+		return get("createdAt");
+	}
+
+	public void setUpdatedAt(java.util.Date updatedAt) {
+		set("updatedAt", updatedAt);
+	}
+	
+	public java.util.Date getUpdatedAt() {
+		return get("updatedAt");
+	}
+
+	public void setExt(java.lang.String ext) {
+		set("ext", ext);
+	}
+	
+	public java.lang.String getExt() {
+		return getStr("ext");
+	}
+
+}

+ 180 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseRemoteApplication.java

@@ -0,0 +1,180 @@
+package com.zskk.model.base;
+
+import com.jfinal.plugin.activerecord.Model;
+import com.jfinal.plugin.activerecord.IBean;
+
+/**
+ * Generated by JFinal, do not modify this file.
+ */
+@SuppressWarnings("serial")
+public abstract class BaseRemoteApplication<M extends BaseRemoteApplication<M>> extends Model<M> implements IBean {
+
+	public void setId(java.lang.String id) {
+		set("id", id);
+	}
+	
+	public java.lang.String getId() {
+		return getStr("id");
+	}
+
+	public void setRemoteInstitutionId(java.lang.String remoteInstitutionId) {
+		set("remote_institution_id", remoteInstitutionId);
+	}
+	
+	public java.lang.String getRemoteInstitutionId() {
+		return getStr("remote_institution_id");
+	}
+
+	public void setRemoteDoctorId(java.lang.String remoteDoctorId) {
+		set("remote_doctor_id", remoteDoctorId);
+	}
+	
+	public java.lang.String getRemoteDoctorId() {
+		return getStr("remote_doctor_id");
+	}
+
+	public void setLocalInstitutionId(java.lang.String localInstitutionId) {
+		set("local_institution_id", localInstitutionId);
+	}
+	
+	public java.lang.String getLocalInstitutionId() {
+		return getStr("local_institution_id");
+	}
+
+	public void setReqDateTime(java.util.Date reqDateTime) {
+		set("req_date_time", reqDateTime);
+	}
+	
+	public java.util.Date getReqDateTime() {
+		return get("req_date_time");
+	}
+
+	public void setReqDoctorId(java.lang.String reqDoctorId) {
+		set("req_doctor_id", reqDoctorId);
+	}
+	
+	public java.lang.String getReqDoctorId() {
+		return getStr("req_doctor_id");
+	}
+
+	public void setIllnessDesc(java.lang.String illnessDesc) {
+		set("illness_desc", illnessDesc);
+	}
+	
+	public java.lang.String getIllnessDesc() {
+		return getStr("illness_desc");
+	}
+
+	public void setClinSymp(java.lang.String clinSymp) {
+		set("clin_symp", clinSymp);
+	}
+	
+	public java.lang.String getClinSymp() {
+		return getStr("clin_symp");
+	}
+
+	public void setPhysSign(java.lang.String physSign) {
+		set("phys_sign", physSign);
+	}
+	
+	public java.lang.String getPhysSign() {
+		return getStr("phys_sign");
+	}
+
+	public void setClinDiag(java.lang.String clinDiag) {
+		set("clin_diag", clinDiag);
+	}
+	
+	public java.lang.String getClinDiag() {
+		return getStr("clin_diag");
+	}
+
+	public void setAnamnesis(java.lang.String anamnesis) {
+		set("anamnesis", anamnesis);
+	}
+	
+	public java.lang.String getAnamnesis() {
+		return getStr("anamnesis");
+	}
+
+	public void setFamilyIll(java.lang.String familyIll) {
+		set("family_ill", familyIll);
+	}
+	
+	public java.lang.String getFamilyIll() {
+		return getStr("family_ill");
+	}
+
+	public void setMarrital(java.lang.String marrital) {
+		set("marrital", marrital);
+	}
+	
+	public java.lang.String getMarrital() {
+		return getStr("marrital");
+	}
+
+	public void setRemark(java.lang.String remark) {
+		set("remark", remark);
+	}
+	
+	public java.lang.String getRemark() {
+		return getStr("remark");
+	}
+
+	public void setExamId(java.lang.String examId) {
+		set("exam_id", examId);
+	}
+	
+	public java.lang.String getExamId() {
+		return getStr("exam_id");
+	}
+
+	public void setIsUrgent(java.lang.String isUrgent) {
+		set("is_urgent", isUrgent);
+	}
+	
+	public java.lang.String getIsUrgent() {
+		return getStr("is_urgent");
+	}
+
+	public void setStatus(java.lang.String status) {
+		set("status", status);
+	}
+	
+	public java.lang.String getStatus() {
+		return getStr("status");
+	}
+
+	public void setCreatedAt(java.util.Date createdAt) {
+		set("createdAt", createdAt);
+	}
+	
+	public java.util.Date getCreatedAt() {
+		return get("createdAt");
+	}
+
+	public void setApplicationDesc(java.lang.String applicationDesc) {
+		set("application_desc", applicationDesc);
+	}
+	
+	public java.lang.String getApplicationDesc() {
+		return getStr("application_desc");
+	}
+
+	public void setAttachment(java.lang.String attachment) {
+		set("attachment", attachment);
+	}
+	
+	public java.lang.String getAttachment() {
+		return getStr("attachment");
+	}
+
+	public void setReportStatus(java.lang.String reportStatus) {
+		set("report_status", reportStatus);
+	}
+	
+	public java.lang.String getReportStatus() {
+		return getStr("report_status");
+	}
+
+}

+ 140 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseReport.java

@@ -0,0 +1,140 @@
+package com.zskk.model.base;
+
+import com.jfinal.plugin.activerecord.Model;
+import com.jfinal.plugin.activerecord.IBean;
+
+/**
+ * Generated by JFinal, do not modify this file.
+ */
+@SuppressWarnings("serial")
+public abstract class BaseReport<M extends BaseReport<M>> extends Model<M> implements IBean {
+
+	public void setId(java.lang.String id) {
+		set("id", id);
+	}
+	
+	public java.lang.String getId() {
+		return getStr("id");
+	}
+
+	public void setReportDatetime(java.util.Date reportDatetime) {
+		set("report_datetime", reportDatetime);
+	}
+	
+	public java.util.Date getReportDatetime() {
+		return get("report_datetime");
+	}
+
+	public void setDescription(java.lang.String description) {
+		set("description", description);
+	}
+	
+	public java.lang.String getDescription() {
+		return getStr("description");
+	}
+
+	public void setImpression(java.lang.String impression) {
+		set("impression", impression);
+	}
+	
+	public java.lang.String getImpression() {
+		return getStr("impression");
+	}
+
+	public void setImgUrl(java.lang.String imgUrl) {
+		set("img_url", imgUrl);
+	}
+	
+	public java.lang.String getImgUrl() {
+		return getStr("img_url");
+	}
+
+	public void setExamId(java.lang.String examId) {
+		set("exam_id", examId);
+	}
+	
+	public java.lang.String getExamId() {
+		return getStr("exam_id");
+	}
+
+	public void setCreatedAt(java.util.Date createdAt) {
+		set("createdAt", createdAt);
+	}
+	
+	public java.util.Date getCreatedAt() {
+		return get("createdAt");
+	}
+
+	public void setReportDoctorId(java.lang.String reportDoctorId) {
+		set("report_doctor_id", reportDoctorId);
+	}
+	
+	public java.lang.String getReportDoctorId() {
+		return getStr("report_doctor_id");
+	}
+
+	public void setReviewDoctorId(java.lang.String reviewDoctorId) {
+		set("review_doctor_id", reviewDoctorId);
+	}
+	
+	public java.lang.String getReviewDoctorId() {
+		return getStr("review_doctor_id");
+	}
+
+	public void setQrCode(java.lang.String qrCode) {
+		set("qr_code", qrCode);
+	}
+	
+	public java.lang.String getQrCode() {
+		return getStr("qr_code");
+	}
+
+	public void setReportResult(java.lang.String reportResult) {
+		set("report_result", reportResult);
+	}
+	
+	public java.lang.String getReportResult() {
+		return getStr("report_result");
+	}
+
+	public void setReviewDatetime(java.util.Date reviewDatetime) {
+		set("review_datetime", reviewDatetime);
+	}
+	
+	public java.util.Date getReviewDatetime() {
+		return get("review_datetime");
+	}
+
+	public void setConfirmDoctorId(java.lang.String confirmDoctorId) {
+		set("confirm_doctor_id", confirmDoctorId);
+	}
+	
+	public java.lang.String getConfirmDoctorId() {
+		return getStr("confirm_doctor_id");
+	}
+
+	public void setConfirmDatetime(java.util.Date confirmDatetime) {
+		set("confirm_datetime", confirmDatetime);
+	}
+	
+	public java.util.Date getConfirmDatetime() {
+		return get("confirm_datetime");
+	}
+
+	public void setType(java.lang.String type) {
+		set("type", type);
+	}
+	
+	public java.lang.String getType() {
+		return getStr("type");
+	}
+
+	public void setRemoteApplicationId(java.lang.String remoteApplicationId) {
+		set("remote_application_id", remoteApplicationId);
+	}
+	
+	public java.lang.String getRemoteApplicationId() {
+		return getStr("remote_application_id");
+	}
+
+}

+ 68 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseReportRecord.java

@@ -0,0 +1,68 @@
+package com.zskk.model.base;
+
+import com.jfinal.plugin.activerecord.Model;
+import com.jfinal.plugin.activerecord.IBean;
+
+/**
+ * Generated by JFinal, do not modify this file.
+ */
+@SuppressWarnings("serial")
+public abstract class BaseReportRecord<M extends BaseReportRecord<M>> extends Model<M> implements IBean {
+
+	public void setId(java.lang.String id) {
+		set("id", id);
+	}
+	
+	public java.lang.String getId() {
+		return getStr("id");
+	}
+
+	public void setImpression(java.lang.String impression) {
+		set("impression", impression);
+	}
+	
+	public java.lang.String getImpression() {
+		return getStr("impression");
+	}
+
+	public void setDescription(java.lang.String description) {
+		set("description", description);
+	}
+	
+	public java.lang.String getDescription() {
+		return getStr("description");
+	}
+
+	public void setReportId(java.lang.String reportId) {
+		set("report_id", reportId);
+	}
+	
+	public java.lang.String getReportId() {
+		return getStr("report_id");
+	}
+
+	public void setCreatedAt(java.util.Date createdAt) {
+		set("createdAt", createdAt);
+	}
+	
+	public java.util.Date getCreatedAt() {
+		return get("createdAt");
+	}
+
+	public void setDoctorId(java.lang.String doctorId) {
+		set("doctor_id", doctorId);
+	}
+	
+	public java.lang.String getDoctorId() {
+		return getStr("doctor_id");
+	}
+
+	public void setType(java.lang.String type) {
+		set("type", type);
+	}
+	
+	public java.lang.String getType() {
+		return getStr("type");
+	}
+
+}

+ 84 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseUser.java

@@ -0,0 +1,84 @@
+package com.zskk.model.base;
+
+import com.jfinal.plugin.activerecord.Model;
+import com.jfinal.plugin.activerecord.IBean;
+
+/**
+ * Generated by JFinal, do not modify this file.
+ */
+@SuppressWarnings("serial")
+public abstract class BaseUser<M extends BaseUser<M>> extends Model<M> implements IBean {
+
+	public void setId(java.lang.String id) {
+		set("id", id);
+	}
+	
+	public java.lang.String getId() {
+		return getStr("id");
+	}
+
+	public void setWxOpenid(java.lang.String wxOpenid) {
+		set("wx_openid", wxOpenid);
+	}
+	
+	public java.lang.String getWxOpenid() {
+		return getStr("wx_openid");
+	}
+
+	public void setWxIcon(java.lang.String wxIcon) {
+		set("wx_icon", wxIcon);
+	}
+	
+	public java.lang.String getWxIcon() {
+		return getStr("wx_icon");
+	}
+
+	public void setWxNickname(java.lang.String wxNickname) {
+		set("wx_nickname", wxNickname);
+	}
+	
+	public java.lang.String getWxNickname() {
+		return getStr("wx_nickname");
+	}
+
+	public void setSource(java.lang.String source) {
+		set("source", source);
+	}
+	
+	public java.lang.String getSource() {
+		return getStr("source");
+	}
+
+	public void setPhone(java.lang.String phone) {
+		set("phone", phone);
+	}
+	
+	public java.lang.String getPhone() {
+		return getStr("phone");
+	}
+
+	public void setIdcard(java.lang.String idcard) {
+		set("idcard", idcard);
+	}
+	
+	public java.lang.String getIdcard() {
+		return getStr("idcard");
+	}
+
+	public void setSubscribeStatus(java.lang.Integer subscribeStatus) {
+		set("subscribe_status", subscribeStatus);
+	}
+	
+	public java.lang.Integer getSubscribeStatus() {
+		return getInt("subscribe_status");
+	}
+
+	public void setCreateAt(java.util.Date createAt) {
+		set("createAt", createAt);
+	}
+	
+	public java.util.Date getCreateAt() {
+		return get("createAt");
+	}
+
+}

+ 76 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseUserBind.java

@@ -0,0 +1,76 @@
+package com.zskk.model.base;
+
+import com.jfinal.plugin.activerecord.Model;
+import com.jfinal.plugin.activerecord.IBean;
+
+/**
+ * Generated by JFinal, do not modify this file.
+ */
+@SuppressWarnings("serial")
+public abstract class BaseUserBind<M extends BaseUserBind<M>> extends Model<M> implements IBean {
+
+	public void setId(java.lang.Integer id) {
+		set("id", id);
+	}
+	
+	public java.lang.Integer getId() {
+		return getInt("id");
+	}
+
+	public void setUserId(java.lang.String userId) {
+		set("user_id", userId);
+	}
+	
+	public java.lang.String getUserId() {
+		return getStr("user_id");
+	}
+
+	public void setExamId(java.lang.String examId) {
+		set("exam_id", examId);
+	}
+	
+	public java.lang.String getExamId() {
+		return getStr("exam_id");
+	}
+
+	public void setPatientId(java.lang.String patientId) {
+		set("patient_id", patientId);
+	}
+	
+	public java.lang.String getPatientId() {
+		return getStr("patient_id");
+	}
+
+	public void setStorageEndtime(java.util.Date storageEndtime) {
+		set("storage_endtime", storageEndtime);
+	}
+	
+	public java.util.Date getStorageEndtime() {
+		return get("storage_endtime");
+	}
+
+	public void setBindWay(java.lang.Integer bindWay) {
+		set("bind_way", bindWay);
+	}
+	
+	public java.lang.Integer getBindWay() {
+		return getInt("bind_way");
+	}
+
+	public void setStatus(java.lang.Integer status) {
+		set("status", status);
+	}
+	
+	public java.lang.Integer getStatus() {
+		return getInt("status");
+	}
+
+	public void setCreateAt(java.util.Date createAt) {
+		set("createAt", createAt);
+	}
+	
+	public java.util.Date getCreateAt() {
+		return get("createAt");
+	}
+
+}

+ 76 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/model/base/BaseWechatBind.java

@@ -0,0 +1,76 @@
+package com.zskk.model.base;
+
+import com.jfinal.plugin.activerecord.Model;
+import com.jfinal.plugin.activerecord.IBean;
+
+/**
+ * Generated by JFinal, do not modify this file.
+ */
+@SuppressWarnings("serial")
+public abstract class BaseWechatBind<M extends BaseWechatBind<M>> extends Model<M> implements IBean {
+
+	public void setId(java.lang.Integer id) {
+		set("id", id);
+	}
+	
+	public java.lang.Integer getId() {
+		return getInt("id");
+	}
+
+	public void setUid(java.lang.String uid) {
+		set("uid", uid);
+	}
+	
+	public java.lang.String getUid() {
+		return getStr("uid");
+	}
+
+	public void setPatientName(java.lang.String patientName) {
+		set("patientName", patientName);
+	}
+	
+	public java.lang.String getPatientName() {
+		return getStr("patientName");
+	}
+
+	public void setPatientCode(java.lang.String patientCode) {
+		set("patientCode", patientCode);
+	}
+	
+	public java.lang.String getPatientCode() {
+		return getStr("patientCode");
+	}
+
+	public void setIdcard(java.lang.String idcard) {
+		set("idcard", idcard);
+	}
+	
+	public java.lang.String getIdcard() {
+		return getStr("idcard");
+	}
+
+	public void setPhone(java.lang.String phone) {
+		set("phone", phone);
+	}
+	
+	public java.lang.String getPhone() {
+		return getStr("phone");
+	}
+
+	public void setCtime(java.lang.Integer ctime) {
+		set("ctime", ctime);
+	}
+	
+	public java.lang.Integer getCtime() {
+		return getInt("ctime");
+	}
+
+	public void setStatus(java.lang.Integer status) {
+		set("status", status);
+	}
+	
+	public java.lang.Integer getStatus() {
+		return getInt("status");
+	}
+
+}

+ 67 - 0
PacsOnline_Wechat_Patient/src/main/java/com/zskk/util/_JFinalDemoGenerator.java

@@ -0,0 +1,67 @@
+package com.zskk.util;
+
+import javax.sql.DataSource;
+import com.jfinal.kit.PathKit;
+import com.jfinal.kit.PropKit;
+import com.jfinal.plugin.activerecord.dialect.MysqlDialect;
+import com.jfinal.plugin.activerecord.generator.Generator;
+import com.jfinal.plugin.druid.DruidPlugin;
+
+/**
+ * 本 demo 仅表达最为粗浅的 jfinal 用法,更为有价值的实用的企业级用法
+ * 详见 JFinal 俱乐部: http://jfinal.com/club
+ * 
+ * 在数据库表有任何变动时,运行一下 main 方法,极速响应变化进行代码重构
+ */
+public class _JFinalDemoGenerator {
+	
+	public static DataSource getDataSource() {
+		PropKit.use("config.properties");
+		DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
+		druidPlugin.start();
+		return druidPlugin.getDataSource();
+	}
+	
+	public static void main(String[] args) {
+		// base model 所使用的包名
+		String baseModelPackageName = "com.zskk.model.base";
+		// base model 文件保存路径
+		String baseModelOutputDir = PathKit.getWebRootPath() + "/src/main/java/com/zskk/model/base";
+		
+		// model 所使用的包名 (MappingKit 默认使用的包名)
+		String modelPackageName = "com.zskk.model";
+		// model 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径)
+		String modelOutputDir = baseModelOutputDir + "/..";
+		
+		// 创建生成器
+		Generator generator = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir);
+		
+		// 配置是否生成备注
+		generator.setGenerateRemarks(false);
+		
+		// 设置数据库方言
+		generator.setDialect(new MysqlDialect());
+		
+		// 设置是否生成链式 setter 方法
+		generator.setGenerateChainSetter(false);
+		
+		// 添加不需要生成的表名
+		generator.addExcludedTable("bbs","sys_logs","bodypart","constant","department","device","doctor_class","doctors","dr_cla_permission","exam_class","exam_project","exam_subclass","images","manager","menu","templates","studies","series","oss_callbacks","version","sys_menus");
+		
+		// 设置是否在 Model 中生成 dao 对象
+		generator.setGenerateDaoInModel(false);
+		
+		// 设置是否生成字典文件
+		generator.setGenerateDataDictionary(false);
+		
+		// 设置需要被移除的表名前缀用于生成modelName。例如表名 "osc_user",移除前缀 "osc_"后生成的model名为 "User"而非 OscUser
+		generator.setRemovedTableNamePrefixes("t_");
+		
+		// 生成
+		generator.generate();
+	}
+}
+
+
+
+

+ 5 - 3
PacsOnline_Wechat_Patient/src/main/resources/config.properties

@@ -2,8 +2,10 @@
 jdbcUrl  = jdbc:mysql://www.pacsonline.cn:3306/pacsonline?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
 user     = pacs
 password = ZSKK@2017~!@#
+devMode  = true
+
 
 #Wechat
-appId=wx1f3dc2c37dce641b
-appSecret=013c469bbd9e892a693f3375fdf4537e
-token=zhongshikangkai2019
+appId    = wxee1c68f8944d357b
+appSecret= 1bc0128b6bbb3907c3bcf4a1704f2a1f
+token    = zhongshikangkai2019

+ 1 - 1
PacsOnline_Wechat_Patient/src/main/resources/log4j.properties

@@ -7,6 +7,6 @@ log4j.appender.stdout.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-
 # Output to the File
 log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
 log4j.appender.file.DatePattern='_'yyyy-MM-dd'.log'
-log4j.appender.file.File=./log/jfinal_demo_for_maven.log
+log4j.appender.file.File=./log/pwp_system.log
 log4j.appender.file.layout=org.apache.log4j.PatternLayout
 log4j.appender.file.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n