Compare commits

..

1 Commits

37
.gitignore vendored

@ -1,34 +1,5 @@
# kdiff3 ignore
*.orig
# maven ignore
target/
# eclipse ignore
.settings/
.project
.classpath
# idea ignore
.idea/
*.ipr
**/target/
**/.idea/
*.iml
*.iws
# temp ignore
*.log
*.cache
*.diff
*.patch
*.tmp
tmp/
# system ignore
.DS_Store
Thumbs.db
# package ignore (optional)
# *.jar
#rebel
rebel.xml
rebel.xml
*.log

8
.idea/.gitignore vendored

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile default="true" name="Default" enabled="true" />
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="jyjz-system-authority" />
<module name="jyjz-system-oa" />
<module name="jyjz-framework-security" />
<module name="jyjz-system-abase" />
<module name="runtest" />
<module name="jyjz-common-mybatisplus" />
<module name="jyjz-common-upload" />
<module name="jyjz-system-admin" />
<module name="jyjz-framework-securityweb" />
<module name="jyjz-common-web" />
<module name="jyjz-system-cms" />
<module name="jyjz-common-redis" />
<module name="jyjz-common-task" />
<module name="jyjz-common-base" />
</profile>
</annotationProcessing>
<bytecodeTargetLevel>
<module name="jyjz-start" target="1.8" />
<module name="ocrproject" target="1.8" />
<module name="runstart" target="1.8" />
</bytecodeTargetLevel>
</component>
<component name="JavacSettings">
<option name="ADDITIONAL_OPTIONS_OVERRIDE">
<module name="jyjz-common" options="" />
<module name="jyjz-common-base" options="-parameters" />
<module name="jyjz-common-mybatisplus" options="-parameters" />
<module name="jyjz-common-redis" options="-parameters" />
<module name="jyjz-common-task" options="-parameters" />
<module name="jyjz-common-upload" options="-parameters" />
<module name="jyjz-common-web" options="-parameters" />
<module name="jyjz-framework" options="" />
<module name="jyjz-framework-security" options="-parameters" />
<module name="jyjz-framework-securityweb" options="-parameters" />
<module name="jyjz-parent" options="" />
<module name="jyjz-system" options="" />
<module name="jyjz-system-abase" options="-parameters" />
<module name="jyjz-system-admin" options="-parameters" />
<module name="jyjz-system-authority" options="-parameters" />
<module name="jyjz-system-cms" options="-parameters" />
<module name="jyjz-system-oa" options="-parameters" />
<module name="runstart" options="-parameters" />
<module name="runtest" options="-parameters" />
</option>
</component>
</project>

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/jyjz-common/jyjz-common-base/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-common/jyjz-common-mybatisplus/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-common/jyjz-common-redis/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-common/jyjz-common-task/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-common/jyjz-common-upload/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-common/jyjz-common-web/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-framework/jyjz-framework-security/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-framework/jyjz-framework-securityweb/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-system/jyjz-system-abase/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-system/jyjz-system-admin/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-system/jyjz-system-cms/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-system/jyjz-system-oa/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/runstart/src/main/java" charset="UTF-8" />
</component>
</project>

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="central" />
<option name="url" value="https://maven.aliyun.com/nexus/content/groups/public" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="rdc-releases" />
<option name="name" value="rdc-releases" />
<option name="url" value="https://packages.aliyun.com/maven/repository/2179753-release-2RMtZe/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="alimaven" />
<option name="name" value="alimaven" />
<option name="url" value="https://maven.aliyun.com/repository/public" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="rdc-snapshots" />
<option name="name" value="rdc-snapshots" />
<option name="url" value="https://packages.aliyun.com/maven/repository/2179753-snapshot-eDoLiX/" />
</remote-repository>
<remote-repository>
<option name="id" value="snapshots" />
<option name="name" value="snapshots" />
<option name="url" value="https://maven.aliyun.com/nexus/content/groups/public" />
</remote-repository>
</component>
</project>

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/jyjz-parent.iml" filepath="$PROJECT_DIR$/jyjz-parent.iml" />
</modules>
</component>
</project>

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

@ -0,0 +1,165 @@
ERROR [2024-03-18 00:02:57,290][] cn.jyjz.xiaoyao.admin.service.impl.UserTokenServiceImpl:122 - token=eyJrZXlfdXNlciI6eyJleHBpcmVzQXQiOjE3MTA2ODgwOTIwMTQsImlzc3VlZEF0IjoxNzEwNjg2MjkyMDEzLCJsb2dpbm5hbWUiOiJ5YW5zaGkwMSIsInJlbWVtYmVyIjpmYWxzZSwic2lnblVzZXIiOm51bGwsInRva2VuaWQiOiI0YmNkMTQwODA0ZTY1OGVkM2Y1Y2Y2NmNiNGVhOThkZSIsInRva2VudXVpZCI6IjAzZDk0NzEzMWI0MjRiZTU4NWVlYzQzMDNiNjVkNWE3IiwidXNlckFnZW50IjpudWxsLCJ1c2VyaWQiOiIyNjE4Nzc0ODQ0OTI5NDg2MDciLCJ1c2VybmFtZSI6Iua8lOekuui0puWPtyJ9LCJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJrZXlfamF2YV9qd3QiLCJleHAiOjE3MTA2ODgwOTIsImlhdCI6MTcxMDY4NjI5Mn0.1E_2tro04oFpwePM2w5lDxOulxVlE52oCwlUJzK3z2kgetUserToken-error={}
cn.jyjz.xiaoyao.common.base.exception.MyTokenExpiredException: token失效。
at cn.jyjz.xiaoyao.framework.security.utils.JwtUtils.parseToken(JwtUtils.java:200)
at cn.jyjz.xiaoyao.admin.service.impl.UserTokenServiceImpl.getUserToken(UserTokenServiceImpl.java:120)
at cn.jyjz.xiaoyao.framework.security.authentication.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:86)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
ERROR [2024-03-18 00:02:57,294][] org.apache.juli.logging.DirectJDKLog:175 - Servlet.service() for servlet [dispatcherServlet] in context with path [/foodapi] threw exception
cn.jyjz.xiaoyao.common.base.exception.ServiceException: token失效。
at cn.jyjz.xiaoyao.admin.service.impl.UserTokenServiceImpl.getUserToken(UserTokenServiceImpl.java:124)
at cn.jyjz.xiaoyao.framework.security.authentication.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:86)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
ERROR [2024-03-22 20:46:37,534][] com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread:2912 - create connection SQLException, url: jdbc:mysql://47.93.59.251:3306/ocrnew?useUnicode=true&nullCatalogMeansCurrent=true&characterEncoding=UTF-8&characterSetResults=utf8&serverTimezone=Asia/Shanghai&useSSL=false, errorCode 0, state 08S01
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828)
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:448)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:118)
at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:232)
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:112)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1703)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1786)
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2910)
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)
at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167)
at com.mysql.cj.protocol.a.NativeProtocol.readMessage(NativeProtocol.java:519)
at com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:683)
at com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:660)
at com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:137)
at com.mysql.cj.protocol.a.NativeAuthenticationProvider.proceedHandshakeWithPluggableAuthentication(NativeAuthenticationProvider.java:462)
at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:209)
at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1352)
at com.mysql.cj.NativeSession.connect(NativeSession.java:132)
at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:948)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:818)
... 9 common frames omitted
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
at com.mysql.cj.protocol.FullReadInputStream.readFully(FullReadInputStream.java:67)
at com.mysql.cj.protocol.a.SimplePacketReader.readHeader(SimplePacketReader.java:63)
at com.mysql.cj.protocol.a.SimplePacketReader.readHeader(SimplePacketReader.java:45)
at com.mysql.cj.protocol.a.NativeProtocol.readMessage(NativeProtocol.java:513)
... 18 common frames omitted

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

@ -1,150 +0,0 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>前端菜单管理</title>
<#include "/head/headaddedit.html" />
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>基本信息</h5>
</div>
<div class="ibox-content">
<div class="main-content">
<form name="SFrontmenuTform" method="post" id="SFrontmenuTform" class="form-horizontal" action="${ctx}/backstage/sfrontmenut/save">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 菜单名称:</label>
<div class="col-sm-9">
<input name="name" id="name" class="form-control" placeholder="菜单名称" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 菜单关键字:</label>
<div class="col-sm-9">
<input name="reskey" id="reskey" class="form-control" placeholder="菜单关键字" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 菜单链接:</label>
<div class="col-sm-9">
<input name="resurl" id="resurl" class="form-control" placeholder="菜单链接" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 描述:</label>
<div class="col-sm-9">
<input name="description" id="description" class="form-control" placeholder="描述" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button id="savebutton" type="submit" class="btn btn-w-m btn-primary">保存</button>
<button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<#include "/head/footadd.html" />
<script type="text/javascript">
$(document).ready(function () {
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
$("#SFrontmenuTform").attr("action","${ctx}/backstage/oa/frontmenu/save");
var form1 = $('#SFrontmenuTform');
var error1 = $('.alert-danger', form1);
form1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: "",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#savebutton").addClass('disabled');
$("#SFrontmenuTform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
parent.toastr.success(data.message);
rolesback();
}else if(data.code == "ERRORM"){
$.each(data.message,function(name,anArray) {
$.each(anArray,function(n,value){
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr( "id", n + "-error" ).addClass("help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
}else{
$("#savebutton").addClass('removeClass');
parent.toastr.error(data.message);
}
}
});
}
});
});
function rolesback() {
parent.closeItem(window.frameElement.name);
}
</script>
</body>
</html>

@ -1,166 +0,0 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>前端菜单管理</title>
<#include "/head/headaddedit.html" />
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>基本信息</h5>
</div>
<div class="ibox-content">
<div class="main-content">
<form name="SFrontmenuTform" method="post" id="SFrontmenuTform" class="form-horizontal" action="${ctx}/backstage/sfrontmenut/edit">
<input type="hidden" id="id" name="id">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 菜单名称:</label>
<div class="col-sm-9">
<input name="name" id="name" class="form-control" placeholder="菜单名称" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 菜单关键字:</label>
<div class="col-sm-9">
<input name="reskey" id="reskey" class="form-control" placeholder="菜单关键字" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 菜单链接:</label>
<div class="col-sm-9">
<input name="resurl" id="resurl" class="form-control" placeholder="菜单链接" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 描述:</label>
<div class="col-sm-9">
<input name="description" id="description" class="form-control" placeholder="描述" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button type="submit" class="btn btn-w-m btn-primary">保存</button>
<button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<#include "/head/footadd.html" />
<script type="text/javascript">
$(document).ready(function () {
parent.axgetXiaoyao('${ctx}/backstage/oa/frontmenu/getdata/${id}',null,false , function(data){
if(data.code == "OK"){
$("#id").val(data.data.id);
$("#name").val(data.data.name);
$("#parentid").val(data.data.parentid);
$("#reskey").val(data.data.reskey);
$("#resurl").val(data.data.resurl);
$("#level").val(data.data.level);
$("#icon").val(data.data.icon);
$("#ordernum").val(data.data.ordernum);
$("#ishide").val(data.data.ishide);
$("#description").val(data.data.description);
}else{
parent.toastr.error("非法请求。");
}
});
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
$("#SFrontmenuTform").attr("action","${ctx}/backstage/oa/frontmenu/edit");
var form1 = $('#SFrontmenuTform');
var error1 = $('.alert-danger', form1);
form1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: ":hidden",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#SFrontmenuTform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
parent.toastr.success(data.message);
rolesback();
}else if(data.code == "ERRORM"){
$.each(data.message,function(name,anArray) {
$.each(anArray,function(n,value){
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr( "id", n + "-error" ).addClass("help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
}else{
parent.toastr.error(data.message);
}
}
});
}
});
});
function rolesback() {
parent.closeItem(window.frameElement.name);
}
</script>
</body>
</html>

@ -1,201 +0,0 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>前端菜单管理</title>
<#include "/head/headlist.html" />
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="ibox ">
<div class="ibox-content">
<div class="ibox-content">
<form id="searcheuser" class="form-inline">
<div class="form-group">
<input name='search_name' id='search_name' class='form-control' placeholder='name'/>
</div>
<div class="form-group">
<a class="btn btn-primary btn-rounded btn-sm" onclick="refreshTable()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$('#searcheuser')[0].reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</div>
</form>
</div>
</div>
</div>
<div class="ibox-content">
<div class="row row-lg">
<div class="col-sm-12">
<div class="container-div">
<div class="btn-group-sm" id="_mybutton" role="group">
</div>
<br/>
</div>
</div>
<div class="col-sm-12 select-table table-striped" >
<table id="SFrontmenuT_list" ></table>
</div>
</div>
</div>
</div>
<#include "/head/footlist.html" />
</body>
</html>
<script type="text/javascript">
var _tableListSFrontmenuT;
var jsptoolbar = '';
var jspOperation = '';
jQuery(document).ready(function($){
parent.axgetXiaoyao("${ctx}/backstage/admin/user/toolsbarOperation?" + "resourceid=${resourceid}",null,true ,
function(data){
if(data.code == "OK"){
jsptoolbar = data.data.Jsptoolbar;
jspOperation = data.data.JspOperation;
$("#_mybutton").empty();
$(jsptoolbar).each(function (i, toolbar) {
if(toolbar.methodid != '104'){
$("#_mybutton").append('<button class="btn sbold ' + toolbar.img + '" onClick="' + toolbar.actionmethod + '(\'${resourceid}' + toolbar.methodid + '\')"> ' + ' <i class="fa ' + toolbar.methodkey + '"></i> ' + toolbar.text + '</button>&nbsp');
}
});
_tableListSFrontmenuT = $('#SFrontmenuT_list').bootstrapTable({
url: '${ctx}/backstage/oa/frontmenu/list' ,
pagination: true, //是否显示分页(*
pageNumber:1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*
sidePagination: "server",
height: "300", pageList: [10, 25, 50],
ajaxOptions:{
headers: {"logintoken": parent.getLoginToken()}
},
queryParams: function queryParams(params) {
return {
sortorder: params.order,
sortname: params.sort,
pagesize: params.limit,
start: (params.offset / params.limit) + 1,
search_name:'{"value":"' + $("#search_name").val() + '","op":"equal","type":"string"}'
};
},
responseHandler:function(res){
return{"rows": res.data.records, "total": res.data.total};
},
columns: [
{checkbox: true},
{ width:150,valign: "middle",field:'name',title:'菜单名称',sortable:true},
{ width:150,valign: "middle",field:'reskey',title:'菜单关键字',sortable:true},
{ width:150,valign: "middle",field:'resurl',title:'菜单链接',sortable:true},
{ width:150,valign: "middle",field:'description',title:'描述',sortable:true},
{
width:200,
field: 'id',
title: '操作',
formatter:function(value,oData,index) {
var listOperation = "";
$(jspOperation).each(function (i, toolbar) {
listOperation = listOperation + "<a href=\"javascript:" + toolbar.actionmethod + "('${resourceid}" + toolbar.methodid + "','" + oData.id + "');\" class=\"btn " + toolbar.img + " btn-xs\")><i class=\"fa " + toolbar.methodkey + "\"></i> " + toolbar.text + " </a>&nbsp;&nbsp;";
});
return listOperation;
}
}
]
});
}
}
);
});
function getIdSelections() {
return $.map(_tableListSFrontmenuT.bootstrapTable('getSelections'), function(row) {
return row.id
});
}
function t_actiongrant(jframeid){
parent._xiaoyaoOpenMenuTab('${ctx}/backstage/oa/userfrontmenuHtml/showlist',"人员授权管理",jframeid + '_action');
}
function _useradd(jframeid){
parent._xiaoyaoOpenMenuTab('${ctx}/backstage/oa/frontmenuHtml/toSave',"添加前端菜单管理",jframeid + '_add');
}
function updateData(jframeid,str){
var url = '${ctx}/backstage/oa/frontmenuHtml/toEdit/' + str ;
parent._xiaoyaoOpenMenuTab(url,"修改前端菜单管理",jframeid + '_edit');
}
function _useredit(jframeid){
var str = getIdSelections() + "";
var tempstr = str.split(",");
if(str.length > 0 && tempstr.length > 1){
parent.toastr.error("每次只能修改一条信息。");
}else{
if (str.length > 0) {
updateData(jframeid,str);
} else {
parent.toastr.error("至少选择一条信息操作。");
}
}
}
function t_delete(str){
parent.layer.closeAll('loading');
parent.axgetXiaoyao('${ctx}/backstage/oa/frontmenu/delmore' , {id:str},false, function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
swal(data.message, "您已经永久删除了这条信息。", "success");
refreshTable();
}else{
swal(data.message, "遇到未知错误!", "error");
}
});
}
function _deletebu(sourceid){
var str = getIdSelections() + "";
var tempstr = str.split(",");
if (str.length > 0 && tempstr.length > 0) {
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "是的,我要删除!",
cancelButtonText: "让我再考虑一下…",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
t_delete(str);
} else {
swal("已取消", "您取消了删除操作!", "error");
}
});
} else {
parent.toastr.error("至少选择一条数据操作");
}
}
function _delete(sourceid,str){
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "是的,我要删除!",
cancelButtonText: "让我再考虑一下…",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
t_delete(str);
} else {
swal("已取消", "您取消了删除操作!", "error");
}
});
}
function refreshTable(sourceid){
_tableListSFrontmenuT.bootstrapTable('refreshOptions',{pageNumber:1});
}
</script>

@ -1,246 +0,0 @@
<#include "../../../common/taglibs.html" />
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>管理员列表</title>
<meta name="keywords" content="管理员列表">
<meta name="description" content="管理员列表">
<#include "/head/headlist.html" />
<link href="${ctx}/static/css/plugins/iCheck/custom.css" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="ibox ">
<div class="ibox-content">
<form id="searcheuser" class="form-inline">
<div class="form-group">
<input name='search_loginname' id='search_loginname' class="form-control" placeholder='登陆账号'/>
</div>
<div class="form-group">
<input name='search_username' id='search_username' class='form-control' placeholder='姓名'/>
</div>
<div class="form-group">
<select class="form-control" name='search_usex' id='search_usex'>
<option value="">性别</option>
<option value="0"></option>
<option value="1"></option>
</select>
</div>
<a class="btn btn-primary btn-rounded btn-sm" onclick="refreshTable()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$('#searcheuser')[0].reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</form>
</div>
</div>
<!-- Panel Other -->
<div class="ibox-content">
<div class="row row-lg">
<div class="col-sm-12 select-table table-striped" >
<table id="user_list" >
</table>
</div>
</div>
</div>
<!-- End Panel Other -->
</div>
<div class="modal inmodal fade" id="frontMenumodal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content animated flipInY">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h6 class="modal-title">选择前端菜单</h6>
</div>
<div class="modal-body" id="frontmenuidCheckboxList">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-white" data-dismiss="modal">关闭</button>
<button type="button" onclick="saveFm()" class="btn btn-primary">保存</button>
</div>
</div>
</div>
</div>
<#include "/head/footlist.html" />
<script src="${ctx}/static/js/plugins/iCheck/icheck.min.js"></script>
<script >
var $frontMenumodal = $('#frontMenumodal');
var _userlisttable;
var selectUserid = "";
function selectFrontMenuTree(){
$frontMenumodal.modal();
$frontMenumodal.css("z-index",(parent.getMaxZIndex() + 1));
}
function closeFrontMenu(){
$frontMenumodal.modal('hide');
}
$(function(){
_userlisttable = $('#user_list').bootstrapTable({
url: '${ctx}/backstage/oa/userfrontmenu/list',
pagination: true, //是否显示分页(*
pageNumber:1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*
sidePagination: "server",
pageList: [10, 25, 50,100],
height: "100%",
ajaxOptions:{
headers: {"logintoken": parent.getLoginToken()}
},
queryParams: function queryParams(params) {
return {
sortorder: params.order,
sortname: params.sort,
pagesize: params.limit,
start: (params.offset / params.limit) + 1,
search_loginname:'{"value":"' + $("#search_loginname").val() + '","op":"like","type":"string"}',
search_username:'{"value":"' + $("#search_username").val() + '","op":"like","type":"string"}',
search_usex:'{"value":"' + $("#search_usex").val() + '","op":"equal","type":"string"}',
};
},
responseHandler:function(res){
//console.log(res)
return{"rows": res.data.records, "total": res.data.total};
},
columns: [
{checkbox: true},
{ width:150,valign: "middle",field:'loginname',title:'登陆账号',sortable:true},
{ width:150,valign: "middle",field:'username',title:'用户名',sortable:true},
{ width:150,valign: "middle",field:'departname',title:'所属部门',sortable:true},
{ width:60,valign: "middle",field:'enabled',title:'是否可用',sortable:true,
formatter:function(value,oData,index) {
var listOperation = "";
if(oData.enabled == 1){
listOperation = "启用";
}else{
listOperation = "禁用";
}
return listOperation;
}
},
{ width:60,valign: "middle",field:'usex',title:'性别',sortable:true,
formatter:function(value,oData,index) {
var listOperation = "";
if(oData.usex == 1){
listOperation = "男";
}else{
listOperation = "女";
}
return listOperation;
}
},
{ width:100,valign: "middle",field:'mobile',title:'手机号',sortable:true},
{ width:150,valign: "middle",field:'email',title:'电子邮箱',sortable:true},
{
width:200,
field: 'caozuo',
title: '操作',
formatter:function(value,oData,index) {
var listOperation = '<a href="javascript:setFrontMenuData(\'' + oData.id + '\',\'' + index + '\');" class="btn btn-primary btn-xs" )=""><i class="fa fa-pencil"></i> 设置权限 </a>'
return [listOperation].join('&nbsp;&nbsp;');
}
}
]
});
});
function setFrontMenuData(usrid,selectIndex){
selectUserid = usrid;
var getdata = _userlisttable.bootstrapTable('getData');
var usermodelinfo = getdata[selectIndex];
var selectMenu = usermodelinfo.tempList;
console.log(usermodelinfo);
parent.axgetXiaoyao('${ctx}/backstage/oa/frontmenu/list' , {pagesize:100},false, function(dataMenu){
if(dataMenu.code == "OK"){
var showcheckstring = '';
var tempcount = 0;//记录循环的次数
var data = dataMenu.data;
$(data.records).each(function(idx,item){
var checked = "";
$(selectMenu).each(function (midx,mitem){
if(mitem.id == item.id){
checked = "checked";
}
})
tempcount++;
showcheckstring = showcheckstring + '<label class="checkbox-inline i-checks">';
showcheckstring = showcheckstring + '<input type="checkbox" name="frontmenuid" id="' + item.id + '" ' + checked + ' value="' + item.id + '" required="true" minlength="1">&nbsp;';
showcheckstring = showcheckstring + item.name + '</label>';
if(tempcount%5 == 0 ){
showcheckstring = showcheckstring + "<br/>";
}
});
console.log(data)
console.log(showcheckstring)
$("#frontmenuidCheckboxList").html(showcheckstring);
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
}
console.log(data);
});
selectFrontMenuTree();
}
function saveFm(){
var fmids = "";
$('input[name="frontmenuid"]:checked').each(function() {
var value = $(this).val();
if(fmids.length >= 1){
fmids = fmids + "," + value;
}else{
fmids = value;
}
});
if(fmids.length < 1){
parent.toastr.error("选择菜单");
return;
}else{
parent.axpostXiaoyao('${ctx}/backstage/oa/userfrontmenu/saveactiongrant' , {menuids:fmids,userid:selectUserid},false, function(data){
if(data.code == "OK"){
parent.toastr.success("设置完毕。");
closeFrontMenu();
refreshTable();
}else{
parent.toastr.error("失败。");
}
});
}
console.log("fmids===================" + fmids)
}
function refreshTable(){
_userlisttable.bootstrapTable('refreshOptions',{pageNumber:1});
}
</script>
</body>
</html>

@ -1,214 +0,0 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数据字典</title>
<#include "/head/headaddedit.html" />
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>基本信息</h5>
</div>
<div class="ibox-content">
<div class="main-content">
<form name="Distionaryform" method="post" id="Distionaryform" class="form-horizontal" action="${ctx}/backstage/distionary/save">
<input name="distionarytypeid" id="distionarytypeid" type="hidden" value="${distionarytypeid}">
<input name="distionatygroupid" id="distionatygroupid" type="hidden" value="${distionatygroupid}">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 数据字典分类主键:</label>
<div class="col-sm-9">
<input name="distionarytypeid" id="distionarytypeid" class="form-control" placeholder="数据字典分类主键" class="form-control" type="text" maxlength='10' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 数据字典分组主键:</label>
<div class="col-sm-9">
<input name="distionatygroupid" id="distionatygroupid" class="form-control" placeholder="数据字典分组主键" class="form-control" type="text" maxlength='10' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 编码:</label>
<div class="col-sm-9">
<input name="codeno" id="codeno" class="form-control" placeholder="编码" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 数据名称:</label>
<div class="col-sm-9">
<input name="name" id="name" class="form-control" placeholder="数据名称" class="form-control" type="text" maxlength='75' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 字典内容:</label>
<div class="col-sm-9">
<input name="content" id="content" class="form-control" placeholder="字典内容" class="form-control" type="text" maxlength='50' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 是否启用:</label>
<div class="col-sm-9">
<input name="enabled" id="enabled" class="form-control" placeholder="是否启用" class="form-control" type="text" required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 排序字段:</label>
<div class="col-sm-9">
<input name="sorting" id="sorting" class="form-control" number="true" placeholder="排序字段" class="form-control" type="text" required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 创建人:</label>
<div class="col-sm-9">
<input name="createuser" id="createuser" class="form-control" placeholder="创建人" class="form-control" type="text" maxlength='95' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 创建时间:</label>
<div class="col-sm-9">
<input name="createdate" id="createdate" class="form-control" placeholder="创建时间" class="form-control" type="text" maxlength='7' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 修改人:</label>
<div class="col-sm-9">
<input name="updateuser" id="updateuser" class="form-control" placeholder="修改人" class="form-control" type="text" maxlength='95' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 更新时间:</label>
<div class="col-sm-9">
<input name="updatetime" id="updatetime" class="form-control" placeholder="更新时间" class="form-control" type="text" maxlength='7' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button id="savebutton" type="submit" class="btn btn-w-m btn-primary">保存</button>
<button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<#include "/head/footadd.html" />
<script type="text/javascript">
$(document).ready(function () {
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
$("#Distionaryform").attr("action","${ctx}/backstage/admin/distionary/save");
var form1 = $('#Distionaryform');
var error1 = $('.alert-danger', form1);
form1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: "",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#savebutton").addClass('disabled');
$("#Distionaryform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
parent.toastr.success(data.message);
rolesback();
}else if(data.code == "ERRORM"){
$.each(data.message,function(name,anArray) {
$.each(anArray,function(n,value){
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr( "id", n + "-error" ).addClass("help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
}else{
$("#savebutton").addClass('removeClass');
parent.toastr.error(data.message);
}
}
});
}
});
});
function rolesback() {
parent.closeItem(window.frameElement.name);
}
</script>
</body>
</html>

@ -1,212 +0,0 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数据字典</title>
<#include "/head/headaddedit.html" />
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>基本信息</h5>
</div>
<div class="ibox-content">
<div class="main-content">
<form name="Distionaryform" method="post" id="Distionaryform" class="form-horizontal" action="${ctx}/backstage/distionary/edit">
<input type="hidden" id="id" name="id">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 数据字典分类主键:</label>
<div class="col-sm-9">
<input name="distionarytypeid" id="distionarytypeid" class="form-control" placeholder="数据字典分类主键" class="form-control" type="text" maxlength='10' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 数据字典分组主键:</label>
<div class="col-sm-9">
<input name="distionatygroupid" id="distionatygroupid" class="form-control" placeholder="数据字典分组主键" class="form-control" type="text" maxlength='10' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 编码:</label>
<div class="col-sm-9">
<input name="codeno" id="codeno" class="form-control" placeholder="编码" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 数据名称:</label>
<div class="col-sm-9">
<input name="name" id="name" class="form-control" placeholder="数据名称" class="form-control" type="text" maxlength='75' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 排序字段:</label>
<div class="col-sm-9">
<input name="sorting" id="sorting" class="form-control" placeholder="排序字段" class="form-control" type="text" required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 创建人:</label>
<div class="col-sm-9">
<input name="createuser" id="createuser" class="form-control" placeholder="创建人" class="form-control" type="text" maxlength='95' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 创建时间:</label>
<div class="col-sm-9">
<input name="createdate" id="createdate" class="form-control" placeholder="创建时间" class="form-control" type="text" maxlength='7' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 修改人:</label>
<div class="col-sm-9">
<input name="updateuser" id="updateuser" class="form-control" placeholder="修改人" class="form-control" type="text" maxlength='95' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 更新时间:</label>
<div class="col-sm-9">
<input name="updatetime" id="updatetime" class="form-control" placeholder="更新时间" class="form-control" type="text" maxlength='7' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button type="submit" class="btn btn-w-m btn-primary">保存</button>
<button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<#include "/head/footadd.html" />
<script type="text/javascript">
$(document).ready(function () {
parent.axgetXiaoyao('${ctx}/backstage/admin/distionary/getdata/' + $("#id").val(),null,false , function(data){
if(data.code == "OK"){
$("#id").val(data.data.id);
$("#distionarytypeid").val(data.data.distionarytypeid);
$("#distionatygroupid").val(data.data.distionatygroupid);
$("#codeno").val(data.data.codeno);
$("#name").val(data.data.name);
$("#content").val(data.data.content);
$("#enabled").val(data.data.enabled);
$("#sorting").val(data.data.sorting);
$("#createuser").val(data.data.createuser);
$("#createdate").val(data.data.createdate);
$("#updateuser").val(data.data.updateuser);
$("#updatetime").val(data.data.updatetime);
}else{
parent.toastr.error("非法请求。");
}
});
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
$("#Distionaryform").attr("action","${ctx}/backstage/admin/distionary/edit" + );
var form1 = $('#Distionaryform');
var error1 = $('.alert-danger', form1);
form1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: ":hidden",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#Distionaryform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
parent.toastr.success(data.message);
rolesback();
}else if(data.code == "ERRORM"){
$.each(data.message,function(name,anArray) {
$.each(anArray,function(n,value){
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr( "id", n + "-error" ).addClass("help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
}else{
parent.toastr.error(data.message);
}
}
});
}
});
});
function rolesback() {
parent.closeItem(window.frameElement.name);
}
</script>
</body>
</html>

@ -1,366 +0,0 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数据字典</title>
<#include "/head/headlist.html" />
<link href="${ctx}/static/css/plugins/iCheck/custom.css" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="ibox ">
<div class="ibox-content">
<div class="ibox-content">
<form id="searcheuser" class="form-inline">
<div class="form-group">
<input name='search_codeno' id='search_codeno' class='form-control' placeholder='编码'/>
</div>
<div class="form-group">
<input name='search_name' id='search_name' class='form-control' placeholder='描述'/>
</div>
<div class="form-group">
<a class="btn btn-primary btn-rounded btn-sm" onclick="refreshTable()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$('#searcheuser')[0].reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</div>
</form>
</div>
</div>
</div>
<div class="ibox-content">
<div class="row row-lg">
<div class="col-sm-12">
<div class="container-div">
<div class="btn-group-sm" id="_mybutton" role="group">
<button class="btn sbold btn-success" onclick="_distionaryAdd()"> <i class="fa fa-plus"></i> 添加</button>&nbsp;
<button class="btn sbold btn-danger" onclick="_distionaryDeletebu()"> <i class="fa fa-close"></i> 删除</button>
</div>
<br/>
</div>
</div>
<div class="col-sm-12 select-table table-striped" >
<table id="Distionary_list" ></table>
</div>
</div>
</div>
</div>
<div class="modal inmodal fade" id="distionaryModelManager" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content animated flipInY modal-lg">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h6 class="modal-title">字典详情管理</h6>
</div>
<div class="modal-body">
<div class="row">
<form name="Distionaryform" method="post" id="Distionaryform" class="form-horizontal" action="${ctx}/ocr/dictionary/save">
<input name="distionarytypeid" id="distionarytypeid" value="${distionarytypeid}" type="hidden">
<input name="groupId" id="distionatygroupid" value="${distionarygroupid}" type="hidden">
<input name="id" id="id" type="hidden">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 编码:</label>
<div class="col-sm-9">
<input name="value" id="value" class="form-control" placeholder="编码" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 描述:</label>
<div class="col-sm-9">
<input name="lable" id="lable" class="form-control" placeholder="描述" class="form-control" type="text" maxlength='75' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 租户:</label>
<div class="col-sm-9">
<select data-placeholder="请选择租户" id="tenantId" name="tenantId" class="chosen-select" style="width:100%;" tabindex="4" required>
<option value=''>选择租户</option>
</select>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="modal-footer">
<button type="button" onClick="closeDistionaryModel()" class="btn btn-w-m btn-default" id="savebuttonUserIcon">关闭</button>
<button type="button" onclick="distionaryModelformSubmit()" class="btn btn-w-m btn-primary">保存</button>
</div>
</div>
</div>
</div>
<#include "/head/footlist.html" />
<script src="${ctx}/static/js/plugins/jquery-form/jquery.form.min.js?v=4.3.0"></script>
<script src="${ctx}/static/js/plugins/validate/jquery.validate.min.js"></script>
<script src="${ctx}/static/js/plugins/validate/localization/messages_zh.js" type="text/javascript"></script>
<!-- iCheck -->
<script src="${ctx}/static/js/plugins/iCheck/icheck.min.js"></script>
</body>
</html>
<script type="text/javascript">
var _tableListDistionary;
var $distionaryModelManager = $("#distionaryModelManager");
function showDistionaryModel() {
$distionaryModelManager.modal();
$distionaryModelManager.css("z-index",(parent.getMaxZIndex() + 1));
}
function closeDistionaryModel() {
$("#Distionaryform")[0].reset();
$("#distionarytypeid").val('${distionarytypeid}');
$("#distionatygroupid").val('${distionarygroupid}');
$distionaryModelManager.modal('hide');
}
jQuery(document).ready(function($){
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
parent.axgetXiaoyao("${ctx}/backstage/admin/department/showDeptJsTree",null,false,function (data) {
$.each(data,function(name,anArray) {
console.log(anArray)
$("#tenantId").append("<option value='" + anArray.deptNo + "'>" + anArray.name + "</option>");
});
});
var config = {
'.chosen-select': {},
'.chosen-select-deselect': {
allow_single_deselect: true
},
'.chosen-select-no-single': {
disable_search_threshold: 10
},
'.chosen-select-no-results': {
no_results_text: 'Oops, nothing found!'
},
'.chosen-select-width': {
width: "95%"
}
}
//for (var selector in config) {
// $(selector).chosen(config[selector]);
//}
_tableListDistionary = $('#Distionary_list').bootstrapTable({
url: '${ctx}/ocr/dictionary/list',
pagination: true, //是否显示分页(*
pageNumber:1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*
sidePagination: "server",
height: "100%", pageList: [10, 25, 50],
ajaxOptions:{
headers: {"logintoken": parent.getLoginToken()}
},
queryParams: function queryParams(params) {
return {
sortorder: "desc",
sortname: "ID",
pagesize: params.limit,
start: (params.offset / params.limit) + 1,
search_codeno:'{"value":"' + $("#search_codeno").val() + '","op":"equal","type":"string"}',
search_distionatygroupid:'{"value":"' + $("#distionatygroupid").val() + '","op":"equal","type":"string"}',
search_name:'{"value":"' + $("#search_name").val() + '","op":"equal","type":"string"}'
};
},
responseHandler:function(res){
return{"rows": res.data.records, "total": res.data.total};
},
columns: [
{checkbox: true},
// { width:150,valign: "middle",field:'distionarytypeid',title:'数据字典分类主键',sortable:true},
// { width:150,valign: "middle",field:'distionatygroupid',title:'数据字典分组主键',sortable:true},
{ width:150,valign: "middle",field:'value',title:'编码',sortable:true},
{ width:150,valign: "middle",field:'lable',title:'描述',sortable:true},
{ width:150,valign: "middle",field:'tenantName',title:'部门名称',sortable:true},
{
width:200,
field: 'id',
title: '操作',
formatter:function(value,oData,index) {
var listOperation = "";
listOperation = listOperation + "<a href=\"javascript:_distionaryDelete('resourceid_distionary','" + oData.id + "');\" class=\"btn btn-danger btn-xs\")><i class=\"fa fa-close\"></i> 删除 </a>&nbsp;&nbsp;";
listOperation = listOperation + "<a href=\"javascript:_distionaryUpdateData('resourceid_distionary','" + oData.id + "');\" class=\"btn btn-primary btn-xs\")><i class=\"fa fa-pencil\"></i> 修改 </a>&nbsp;&nbsp;";
return listOperation;
}
}
]
});
/*
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});*/
$("#Distionaryform").attr("action","${ctx}/ocr/dictionary/save");
var distionaryForm1 = $('#Distionaryform');
var distionaryError1 = $('.alert-danger', distionaryForm1);
distionaryForm1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: ":hidden",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#savebutton").addClass('disabled');
$("#Distionaryform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
parent.toastr.success(data.message);
refreshTable();
closeDistionaryModel();
}else if(data.code == "ERRORM"){
$.each(data.message,function(name,anArray) {
$.each(anArray,function(n,value){
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr( "id", n + "-error" ).addClass("help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
}else{
$("#savebutton").addClass('removeClass');
parent.toastr.error(data.message);
}
}
});
}
});
});
function distionaryModelformSubmit() {
$("#Distionaryform").submit();
}
function getIdSelections() {
return $.map(_tableListDistionary.bootstrapTable('getSelections'), function(row) {
return row.id
});
}
function _distionaryAdd(){
showDistionaryModel();
}
function _distionaryUpdateData(jframeid,str){
parent.axgetXiaoyao('${ctx}/ocr/dictionary/getdata/' + str,null,false , function(data){
if(data.code == "OK"){
$("#id").val(data.data.id);
$("#value").val(data.data.value);
$("#lable").val(data.data.lable);
$("#tenantId option[value='" + data.data.tenantId + "']").attr("selected",true);
showDistionaryModel();
}else{
parent.toastr.error("非法请求。");
}
});
}
function _distionaryEdit(jframeid){
var str = getIdSelections() + "";
var tempstr = str.split(",");
if(str.length > 0 && tempstr.length > 1){
parent.toastr.error("每次只能修改一条信息。");
}else{
if (str.length > 0) {
updateData(jframeid,str);
} else {
parent.toastr.error("至少选择一条信息操作。");
}
}
}
function t_delete(str){
parent.layer.closeAll('loading');
parent.axgetXiaoyao('${ctx}/ocr/dictionary/delmore' , {id:str},false, function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
swal(data.message, "您已经永久删除了这条信息。", "success");
refreshTable();
}else{
swal(data.message, "遇到未知错误!", "error");
}
});
}
function _distionaryDelete(sourceid,str){
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "是的,我要删除!",
cancelButtonText: "让我再考虑一下…",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
t_delete(str);
} else {
swal("已取消", "您取消了删除操作!", "error");
}
});
}
function refreshTable(sourceid){
_tableListDistionary.bootstrapTable('refreshOptions',{pageNumber:1});
}
</script>

@ -1,186 +0,0 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数据字典分组</title>
<#include "/head/headaddedit.html" />
<link href="${ctx}/static/css/plugins/chosen/chosen.css" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>基本信息</h5>
</div>
<div class="ibox-content">
<div class="main-content">
<form name="Distionarygroupform" method="post" id="Distionarygroupform" class="form-horizontal" action="${ctx}/backstage/admin/distionarygroup/save">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 字典字段名:</label>
<div class="col-sm-9">
<input name="field" id="field" class="form-control" placeholder="字典字段名" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 字典组描述:</label>
<div class="col-sm-9">
<input name="label" id="label" class="form-control" placeholder="字典字段名" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 备注:</label>
<div class="col-sm-9">
<input name="remark" id="remark" class="form-control" placeholder="分组名称" class="form-control" type="text" maxlength='75' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button id="savebutton" type="submit" class="btn btn-w-m btn-primary">保存</button>
<button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<#include "/head/footadd.html" />
<!-- Chosen -->
<script src="${ctx}/static/js/plugins/chosen/chosen.jquery.js"></script>
<script type="text/javascript">
var selectConfig = {
'.chosen-select': {},
'.chosen-select-deselect': {
allow_single_deselect: true
},
'.chosen-select-no-single': {
disable_search_threshold: 10
},
'.chosen-select-no-results': {
no_results_text: 'Oops, nothing found!'
},
'.chosen-select-width': {
width: "95%"
}
};
$(document).ready(function () {
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
changeDistionarytype("");
$("#Distionarygroupform").attr("action","${ctx}/ocr/dictionaryGroup/save");
var form1 = $('#Distionarygroupform');
var error1 = $('.alert-danger', form1);
form1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: "",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
console.log("parent.getLoginToken()===" + parent.getLoginToken())
parent.layer.load();
$("#savebutton").addClass('disabled');
$("#Distionarygroupform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
parent.toastr.success(data.message);
rolesback();
}else if(data.code == "ERRORM"){
$.each(data.message,function(name,anArray) {
$.each(anArray,function(n,value){
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr( "id", n + "-error" ).addClass("help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
}else{
$("#savebutton").addClass('removeClass');
parent.toastr.error(data.message);
}
}
});
}
});
});
function changeDistionarytype(distionarytypeid) {
parent.axgetXiaoyao('${ctx}/backstage/admin/distionarytype/listall/',null,false , function(result) {
if(result.code == 'OK'){
var data = result.data;
console.log(data);
var posthtml = "";
$(data).each(function(idx,item){
if(undefined != distionarytypeid && distionarytypeid == item.id){
posthtml = posthtml + '<option value="' + item.id + '" hassubinfo="true" selected>' + item.typename + '</option>';
}else{
posthtml = posthtml + '<option value="' + item.id + '" hassubinfo="true">' + item.typename + '</option>';
}
});
$("#distionarytypeid").append(posthtml);
}
});
$("#distionarytypeid").chosen(selectConfig[$("#distionarytypeid")]);
}
function rolesback() {
parent.closeItem(window.frameElement.name);
}
</script>
</body>
</html>

@ -1,197 +0,0 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数据字典分组</title>
<#include "/head/headaddedit.html" />
<link href="${ctx}/static/css/plugins/chosen/chosen.css" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>基本信息</h5>
</div>
<div class="ibox-content">
<div class="main-content">
<form name="Distionarygroupform" method="post" id="Distionarygroupform" class="form-horizontal" action="${ctx}/backstage/admin/distionarygroup/edit">
<input type="hidden" id="id" name="id">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 字典字段名:</label>
<div class="col-sm-9">
<input name="field" id="field" class="form-control" placeholder="字典字段名" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 字典组描述:</label>
<div class="col-sm-9">
<input name="label" id="label" class="form-control" placeholder="字典字段名" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 备注:</label>
<div class="col-sm-9">
<input name="remark" id="remark" class="form-control" placeholder="分组名称" class="form-control" type="text" maxlength='75' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button type="submit" class="btn btn-w-m btn-primary">保存</button>
<button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<#include "/head/footadd.html" />
<script src="${ctx}/static/js/plugins/chosen/chosen.jquery.js"></script>
<script type="text/javascript">
var selectConfig = {
'.chosen-select': {},
'.chosen-select-deselect': {
allow_single_deselect: true
},
'.chosen-select-no-single': {
disable_search_threshold: 10
},
'.chosen-select-no-results': {
no_results_text: 'Oops, nothing found!'
},
'.chosen-select-width': {
width: "95%"
}
};
$(document).ready(function () {
parent.axgetXiaoyao('${ctx}/ocr/dictionaryGroup/getdata/${id}',null,false , function(data){
if(data.code == "OK"){
$("#id").val(data.data.id);
$("#field").val(data.data.field);
$("#label").val(data.data.label);
$("#remark").val(data.data.remark);
changeDistionarytype(data.data.distionarytypeid);
}else{
parent.toastr.error("非法请求。");
}
});
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
$("#Distionarygroupform").attr("action","${ctx}/ocr/dictionaryGroup/save");
var form1 = $('#Distionarygroupform');
var error1 = $('.alert-danger', form1);
form1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: ":hidden",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#Distionarygroupform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
parent.toastr.success(data.message);
rolesback();
}else if(data.code == "ERRORM"){
$.each(data.message,function(name,anArray) {
$.each(anArray,function(n,value){
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr( "id", n + "-error" ).addClass("help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
}else{
parent.toastr.error(data.message);
}
}
});
}
});
});
function changeDistionarytype(distionarytypeid) {
parent.axgetXiaoyao('${ctx}/backstage/admin/distionarytype/listall/',null,false , function(result) {
if(result.code == 'OK'){
var data = result.data;
console.log(data);
var posthtml = "";
$(data).each(function(idx,item){
if(undefined != distionarytypeid && distionarytypeid == item.id){
posthtml = posthtml + '<option value="' + item.id + '" hassubinfo="true" selected>' + item.typename + '</option>';
}else{
posthtml = posthtml + '<option value="' + item.id + '" hassubinfo="true">' + item.typename + '</option>';
}
});
$("#distionarytypeid").append(posthtml);
}
});
$("#distionarytypeid").chosen(selectConfig[$("#distionarytypeid")]);
}
function rolesback() {
parent.closeItem(window.frameElement.name);
}
</script>
</body>
</html>

@ -1,496 +0,0 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数据字典分组</title>
<#include "/head/headlist.html" />
<link href="${ctx}/static/css/plugins/iCheck/custom.css" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="col-sm-9">
<div class="ibox ">
<div class="ibox-content">
<div class="ibox-content">
<form id="searcheuser" class="form-inline">
<div class="form-group">
<input name='search_codeno' id='search_codeno' class='form-control' placeholder='字典组名称'/>
</div>
<div class="form-group">
<input name='search_groupname' id='search_groupname' class='form-control' placeholder='字典组描述'/>
</div>
<div class="form-group">
<a class="btn btn-primary btn-rounded btn-sm" onclick="refreshTable()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$('#searcheuser')[0].reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</div>
</form>
</div>
</div>
</div>
<div class="ibox-content">
<div class="row row-lg">
<div class="col-sm-12">
<div class="container-div">
<div class="btn-group-sm" id="_mybutton" role="group">
</div>
<br/>
</div>
</div>
<div class="col-sm-12 select-table table-striped" >
<table id="Distionarygroup_list" ></table>
</div>
</div>
</div>
</div>
</div>
<div class="modal inmodal fade" id="distionaryManager" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content animated flipInY modal-lg">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h6 class="modal-title">字典详情管理</h6>
</div>
<div class="modal-body">
<div class="row">
<form name="userImageform" method="post" id="userImageform" class="form-horizontal" enctype="multipart/form-data">
<div class="col-sm-8">
<div class="form-group">
<img src="" id="usericonImage" />
<input type="file" id="headPhoto" name="headPhoto" onchange="changeFile()" style="display: none;"/>
</div>
</div>
<div class="col-sm-4">
<div class="form-group">
<div id="preview-pane">
<div class="preview-container">
<img src="" id="usericonImageCut" class="jcrop-preview" />
</div>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="modal-footer">
<button type="button" onClick="" class="btn btn-w-m btn-primary" id="savebuttonUserIcon">选择图片</button>
<button type="button" onclick="" class="btn btn-w-m btn-primary">保存</button>
</div>
</div>
</div>
</div>
<div class="modal inmodal fade" id="distionaryTypeManager" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content animated flipInY modal-lg">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h6 class="modal-title">字典分类管理</h6>
</div>
<div class="modal-body">
<div class="row">
<form name="Distionarytypeform" method="post" id="Distionarytypeform" class="form-horizontal" >
<input name="id" id="id" type="hidden">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 编码:</label>
<div class="col-sm-9">
<input name="codeno" id="codeno" class="form-control" placeholder="编码" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 分类名称:</label>
<div class="col-sm-9">
<input name="typename" id="typename" class="form-control" placeholder="分类名称" class="form-control" type="text" maxlength='75' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 是否启用:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="enabled"> <i></i>启用
</label>
<label>
<input type="radio" value="0" name="enabled"> <i></i>禁用
</label>
</div>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 排序:</label>
<div class="col-sm-9">
<input name="sorting" id="sorting" class="form-control" number="true" placeholder="排序" class="form-control" type="text" required>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="modal-footer">
<button type="button" onClick="closeTypeModel()" class="btn btn-w-m btn-default" id="savebuttonUserIcon">关闭</button>
<button type="button" onclick="distionarytypeformSubmit()" class="btn btn-w-m btn-primary">保存</button>
</div>
</div>
</div>
</div>
<#include "/head/footlist.html" />
<script src="${ctx}/static/js/plugins/jquery-form/jquery.form.min.js?v=4.3.0"></script>
<script src="${ctx}/static/js/plugins/validate/jquery.validate.min.js"></script>
<script src="${ctx}/static/js/plugins/validate/localization/messages_zh.js" type="text/javascript"></script>
<!-- iCheck -->
<script src="${ctx}/static/js/plugins/iCheck/icheck.min.js"></script>
</body>
</html>
<script type="text/javascript">
var $distionaryTypeManager = $("#distionaryTypeManager");
var $distionaryManager = $("#distionaryManager");
function showTypeModel() {
$distionaryTypeManager.modal();
$distionaryTypeManager.css("z-index",(parent.getMaxZIndex() + 1));
}
function closeTypeModel() {
$("#Distionarytypeform")[0].reset();
$distionaryTypeManager.modal('hide');
}
function showManagerModel() {
$distionaryManager.modal();
$distionaryManager.css("z-index",(parent.getMaxZIndex() + 1));
}
function closeManagerModel() {
$distionaryManager.modal('hide');
}
var _distionarytype_list;
var _tableListDistionarygroup;
var jsptoolbar = '';
var jspOperation = '';
jQuery(document).ready(function($){
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
parent.axgetXiaoyao("${ctx}/backstage/admin/user/toolsbarOperation?" + "resourceid=${resourceid}",null,true ,
function(data){
if(data.code == "OK"){
jsptoolbar = data.data.Jsptoolbar;
jspOperation = data.data.JspOperation;
$("#_mybutton").empty();
$(jsptoolbar).each(function (i, toolbar) {
if(toolbar.methodid != '104'){
$("#_mybutton").append('<button class="btn sbold ' + toolbar.img + '" onClick="' + toolbar.actionmethod + '(\'${resourceid}' + toolbar.methodid + '\')"> ' + ' <i class="fa ' + toolbar.methodkey + '"></i> ' + toolbar.text + '</button>&nbsp');
}
});
_tableListDistionarygroup = $('#Distionarygroup_list').bootstrapTable({
url: '${ctx}/ocr/dictionaryGroup/list' ,
pagination: true, //是否显示分页(*
pageNumber:1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*
sidePagination: "server",
height: "100%", pageList: [10, 25, 50],
ajaxOptions:{
headers: {"logintoken": parent.getLoginToken()}
},
queryParams: function queryParams(params) {
return {
sortorder: "desc",
sortname: "ID",
pagesize: params.limit,
start: (params.offset / params.limit) + 1,
search_codeno:'{"value":"' + $("#search_codeno").val() + '","op":"equal","type":"string"}',
search_groupname:'{"value":"' + $("#search_groupname").val() + '","op":"equal","type":"string"}'
};
},
responseHandler:function(res){
return{"rows": res.data.records, "total": res.data.total};
},
columns: [
{checkbox: true},
{ width:150,valign: "middle",field:'field',title:'字典组字段名',sortable:true},
{ width:150,valign: "middle",field:'label',title:'字典组描述',sortable:false},
{ width:150,valign: "middle",field:'remark',title:'备注',sortable:true},
{
width:200,
field: 'id',
title: '操作',
formatter:function(value,oData,index) {
var listOperation = "";
$(jspOperation).each(function (i, toolbar) {
listOperation = listOperation + "<a href=\"javascript:" + toolbar.actionmethod + "('${resourceid}" + toolbar.methodid + "','" + oData.id + "');\" class=\"btn " + toolbar.img + " btn-xs\")><i class=\"fa " + toolbar.methodkey + "\"></i> " + toolbar.text + " </a>&nbsp;&nbsp;";
});
return listOperation;
}
}
]
});
}
}
);
$("#Distionarytypeform").attr("action","${ctx}/backstage/admin/distionarytype/save");
var formType = $('#Distionarytypeform');
var errorType = $('.alert-danger', formType);
formType.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: ":hidden",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#savebutton").addClass('disabled');
$("#Distionarytypeform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
parent.toastr.success(data.message);
refreshTableType();
closeTypeModel();
}else if(data.code == "ERRORM"){
$.each(data.message,function(name,anArray) {
$.each(anArray,function(n,value){
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr( "id", n + "-error" ).addClass("help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
}else{
$("#savebutton").addClass('removeClass');
parent.toastr.error(data.message);
}
}
});
}
});
});
function distionarytypeformSubmit() {
$("#Distionarytypeform").submit();
}
function getIdSelections() {
return $.map(_tableListDistionarygroup.bootstrapTable('getSelections'), function(row) {
return row.id
});
}
function getIdSelectionsType() {
return $.map(_distionarytype_list.bootstrapTable('getSelections'), function(row) {
return row.id
});
}
function _editType(sourceid,dataid){
parent.axgetXiaoyao('${ctx}/backstage/admin/distionarytype/getdata/' + dataid,null,false , function(data){
if(data.code == "OK"){
$("#id").val(data.data.id);
$("#codeno").val(data.data.codeno);
$("#typename").val(data.data.typename);
$("#sorting").val(data.data.sorting);
if(data.data.enabled == 1){
$("input:radio[name='enabled']").eq(0).attr('checked',true);
}else if(data.data.enabled == 0){
$("input:radio[name='enabled']").eq(1).attr('checked',true);
}
showTypeModel();
}else{
parent.toastr.error("非法请求。");
}
});
}
function _addtType(sourceid,dataid){
showTypeModel();
}
function _useradd(jframeid){
parent._xiaoyaoOpenMenuTab('${ctx}/backstage/admin/ocrDistionarygroupHtml/toSave',"添加字典分组",jframeid + '_add');
}
function viewManager(sourceid,distionarygroupid) {
parent._xiaoyaoOpenMenuTab('${ctx}/backstage/admin/ocrDistionaryHtml/toList?distionarygroupid=' + distionarygroupid + "#sourceid=" +sourceid,"详情管理",distionarygroupid + '_list_child');
}
function updateData(jframeid,str){
var url = '${ctx}/backstage/admin/ocrDistionarygroupHtml/toEdit/' + str ;
parent._xiaoyaoOpenMenuTab(url,"修改数据字典分组",jframeid + '_edit');
}
function _useredit(jframeid){
var str = getIdSelections() + "";
var tempstr = str.split(",");
if(str.length > 0 && tempstr.length > 1){
parent.toastr.error("每次只能修改一条信息。");
}else{
if (str.length > 0) {
updateData(jframeid,str);
} else {
parent.toastr.error("至少选择一条信息操作。");
}
}
}
function t_delete(str){
parent.layer.closeAll('loading');
parent.axgetXiaoyao('${ctx}/ocr/dictionaryGroup/delmore' , {id:str},false, function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
swal(data.message, "您已经永久删除了这条信息。", "success");
refreshTable();
}else{
swal(data.message, "遇到未知错误!", "error");
}
});
}
function _deleteType(sourceid,str){
var tempstr = str.split(",");
if (str.length > 0 && tempstr.length > 0) {
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "是的,我要删除!",
cancelButtonText: "让我再考虑一下…",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
parent.axgetXiaoyao('${ctx}/backstage/admin/distionarytype/delmore' , {id:str},false, function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
swal(data.message, "您已经永久删除了这条信息。", "success");
refreshTableType();
closeTypeModel();
}else{
swal(data.message, "遇到未知错误!", "error");
}
});
} else {
swal("已取消", "您取消了删除操作!", "error");
}
});
} else {
parent.toastr.error("至少选择一条数据操作");
}
}
function _deletebu(sourceid){
var str = getIdSelections() + "";
var tempstr = str.split(",");
if (str.length > 0 && tempstr.length > 0) {
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "是的,我要删除!",
cancelButtonText: "让我再考虑一下…",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
t_delete(str);
} else {
swal("已取消", "您取消了删除操作!", "error");
}
});
} else {
parent.toastr.error("至少选择一条数据操作");
}
}
function _delete(sourceid,str){
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "是的,我要删除!",
cancelButtonText: "让我再考虑一下…",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
t_delete(str);
} else {
swal("已取消", "您取消了删除操作!", "error");
}
});
}
function refreshTable(sourceid){
_tableListDistionarygroup.bootstrapTable('refreshOptions',{pageNumber:1});
}
function refreshTableType(){
_distionarytype_list.bootstrapTable('refreshOptions',{pageNumber:1});
}
</script>

@ -1,247 +0,0 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>前端配置管理</title>
<#include "/head/headaddedit.html" />
<link href="${ctx}/static/css/plugins/switchery/switchery.css" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>基本信息</h5>
</div>
<div class="ibox-content">
<div class="main-content">
<form name="OcrConfigurationform" method="post" id="OcrConfigurationform" class="form-horizontal" action="${ctx}/ocr/ocrFrontConf/save">
<input type="hidden" id="id" name="id">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required"> 当前环境:</label>
<div class="col-sm-9">
<input name="env" id="env" class="form-control" disabled placeholder="当前环境" class="form-control" type="text" value="" >
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required"> 无量云域名:</label>
<div class="col-sm-9">
<input name="wlyInterfaceDomain" id="wlyInterfaceDomain" class="form-control" placeholder="无量云域名" class="form-control" type="text" value="" >
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required"> 无量云AccessKey:</label>
<div class="col-sm-9">
<input name="wlyAccessKey" id="wlyAccessKey" class="form-control" placeholder="无量云AccessKey" class="form-control" type="text" value="" >
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required"> 无量云AccessCode:</label>
<div class="col-sm-9">
<input name="wlyAccessCode" id="wlyAccessCode" class="form-control" placeholder="无量云AccessCode" class="form-control" type="text" value="" >
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required"> 无量云连接超时时间:</label>
<div class="col-sm-9">
<input name="wlyConnectTimeout" id="wlyConnectTimeout" class="form-control" placeholder="无量云连接超时时间" class="form-control" type="text" number="true" value="0" >
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required"> 无量云读取超时时间:</label>
<div class="col-sm-9">
<input name="wlyReadTimeout" id="wlyReadTimeout" class="form-control" placeholder="无量云读取超时时间" class="form-control" type="text" number="true" value="100" >
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required"> 本地转储路径:</label>
<div class="col-sm-9">
<input name="wlyLocalImagePath" id="wlyLocalImagePath" class="form-control" placeholder="本地转储路径" class="form-control" type="text" value="" >
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required"> 无量云数据url:</label>
<div class="col-sm-9">
<input name="wlyDataUrl" id="wlyDataUrl" class="form-control" placeholder="无量云数据url" class="form-control" type="text" value="" >
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required"> 拉取图片接口:</label>
<div class="col-sm-9">
<input name="pictureSourceUrl" id="pictureSourceUrl" class="form-control" placeholder="拉取图片接口" class="form-control" type="text" value="" >
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required"> 审核回传接口:</label>
<div class="col-sm-9">
<input name="sendResultUrl" id="sendResultUrl" class="form-control" placeholder="审核回传接口" class="form-control" type="text" value="" >
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required"> 拉取项目接口:</label>
<div class="col-sm-9">
<input name="projectSourceUrl" id="projectSourceUrl" class="form-control" placeholder="拉取项目接口" class="form-control" type="text" value="" >
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required"> 拉取业务主体接口:</label>
<div class="col-sm-9">
<input name="tenantSourceUrl" id="tenantSourceUrl" class="form-control" placeholder="拉取业务主体接口" class="form-control" type="text" value="" >
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required"> 默认任务图片:</label>
<div class="col-sm-9">
<input name="defaultPictureImg" id="defaultPictureImg" class="form-control" placeholder="默认任务图片" class="form-control" type="text" value="" >
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button type="submit" class="btn btn-w-m btn-primary">保存</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<#include "/head/footadd.html" />
<script src="${ctx}/static/js/plugins/switchery/switchery.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var elem = document.querySelector('.js-switch');
var switchery = new Switchery(elem, {
color: '#1AB394'
});
parent.axgetXiaoyao('${ctx}/ocr/ocrFrontConf/get',null,false , function(data){
if(data.code == "OK"){
$("#id").val(data.data.id);
$("#env").val(data.data.env);
$("#wlyInterfaceDomain").val(data.data.wlyInterfaceDomain);
$("#wlyAccessKey").val(data.data.wlyAccessKey);
$("#wlyAccessCode").val(data.data.wlyAccessCode);
$("#wlyConnectTimeout").val(data.data.wlyConnectTimeout);
$("#wlyReadTimeout").val(data.data.wlyReadTimeout);
$("#wlyLocalImagePath").val(data.data.wlyLocalImagePath);
$("#wlyDataUrl").val(data.data.wlyDataUrl);
$("#pictureSourceUrl").val(data.data.pictureSourceUrl);
$("#sendResultUrl").val(data.data.sendResultUrl);
$("#projectSourceUrl").val(data.data.projectSourceUrl);
$("#tenantSourceUrl").val(data.data.tenantSourceUrl);
}else{
parent.toastr.error("非法请求。");
}
});
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
$("#OcrConfigurationform").attr("action","${ctx}/ocr/ocrFrontConf/save");
var form1 = $('#OcrConfigurationform');
var error1 = $('.alert-danger', form1);
form1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: ":hidden",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#OcrConfigurationform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
parent.toastr.success(data.message);
}else if(data.code == "ERRORM"){
$.each(data.message,function(name,anArray) {
$.each(anArray,function(n,value){
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr( "id", n + "-error" ).addClass("help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
}else{
parent.toastr.error(data.message);
}
}
});
}
});
});
</script>
</body>
</html>

@ -1,294 +0,0 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>信息字段管理添加</title>
<#include "/head/headaddedit.html" />
<link href="${ctx}/static/js/plugins/jqueryzTree/css/metroStyle/metroStyle.css" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>信息字段新增</h5>
</div>
<div class="ibox-content">
<div class="main-content">
<form name="Postform" method="post" id="Postform" class="form-horizontal" action="${ctx}/backstage/post/save">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 字段名称:</label>
<div class="col-sm-9">
<input name="name" id="name" class="form-control" placeholder="字段名称" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 页面类型:</label>
<div class="col-sm-9">
<select class="form-control" name='reviewType' id='reviewType'>
<option value="0">任务终审</option>
<option value="1">图鉴审批</option>
<option value="2">任务审核</option>
<option value="3">审核填报</option>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 字段描述:</label>
<div class="col-sm-9">
<input name="fieldDesc" id="fieldDesc" class="form-control" placeholder="字段描述" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">是否必选:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="isrequired"> <i></i>
</label>
<label>
<input type="radio" value="0" name="isrequired"> <i></i>
</label>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 排序字段:</label>
<div class="col-sm-9">
<input name="sort" id="sort" class="form-control" placeholder="排序字段" class="form-control" type="text" maxlength='20' required>
</div>
</div>
</div>
<div class="col-sm-6" >
<div class="form-group">
<label class="col-sm-3 control-label is-required">是否高亮:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="isHighlight"> <i></i>
</label>
<label>
<input type="radio" value="0" name="isHighlight"> <i></i>
</label>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6" >
<div class="form-group">
<label class="col-sm-3 control-label is-required">是否可点击:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="isTap"> <i></i>
</label>
<label>
<input type="radio" value="0" name="isTap"> <i></i>
</label>
</div>
</div>
</div>
</div>
<div class="col-sm-6" >
<div class="form-group">
<label class="col-sm-3 control-label is-required">是否隐藏:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="isHide"> <i></i>
</label>
<label>
<input type="radio" value="0" name="isHide"> <i></i>
</label>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6" >
<div class="form-group">
<label class="col-sm-3 control-label is-required">是否启用:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="isEnable"> <i></i>启用
</label>
<label>
<input type="radio" value="0" name="isEnable"> <i></i>停用
</label>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button id="savebutton" type="submit" class="btn btn-w-m btn-primary">保存</button>
<button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="ajaxDeptTreemodal" class="modal fade" tabindex="-1" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
<h4 class="modal-title">选择机构</h4>
</div>
<div class="modal-body" style=" padding: 15px 50px; ">
<ul id="departZtreeUl" class="ztree"></ul>
</div>
<div class="modal-footer">
<button type="button" data-dismiss="modal" class="btn btn-white">取消</button>
<button type="button" onclick="closedept()" class="btn btn-primary">确认</button>
</div>
</div>
</div>
</div>
<#include "/head/footadd.html" />
<script src="${ctx}/static/js/plugins/layer/layer.min.js"></script>
<script src="${ctx}/static/js/plugins/jqueryzTree/js/jquery.ztree.all.min.js"></script>
<script type="text/javascript">
var $ajaxDeptTreemodal = $('#ajaxDeptTreemodal');
function selectDeptTree(){
$ajaxDeptTreemodal.modal();
$ajaxDeptTreemodal.css("z-index",(parent.getMaxZIndex() + 1));
}
function closedept(){
$ajaxDeptTreemodal.modal('hide');
}
var _deptTree;
var setting = {
data: {
simpleData: {
enable: true
}
}, callback: {onClick: zTreeOnClick }
};
function zTreeOnClick(event, treeId, treeNode) {
$("#reviewType").val(treeNode.name);
$("#deptid").val(treeNode.id);
closedept();
};
$(document).ready(function () {
if(parent.$("#index_user_issys").val() == 0){
$("#systemAdminUse").hide();
}
parent.axgetXiaoyao("${ctx}/backstage/admin/department/showDeptJsTree",null,false,function (data) {
_deptTree = $.fn.zTree.init($("#departZtreeUl"),setting, data);
_deptTree.expandAll(true);
});
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
$("#Postform").attr("action","${ctx}/ocr/field/saveOrUpdate");
var form1 = $('#Postform');
var error1 = $('.alert-danger', form1);
form1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: "",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#savebutton").addClass('disabled');
$("#Postform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data) {
parent.layer.closeAll('loading');
if (data.code == "OK") {
parent.toastr.success(data.message);
rolesback();
} else if (data.code == "ERRORM") {
$.each(data.message, function (name, anArray) {
$.each(anArray, function (n, value) {
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr("id", n + "-error").addClass(
"help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
} else {
$("#savebutton").addClass('removeClass');
parent.toastr.error(data.message);
}
}
});
}
});
});
function rolesback() {
parent.closeItem(window.frameElement.name);
}
</script>
</body>
</html>

@ -1,353 +0,0 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>岗位信息</title>
<#include "/head/headaddedit.html" />
<link href="${ctx}/static/js/plugins/jqueryzTree/css/metroStyle/metroStyle.css" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>信息字段编辑</h5>
</div>
<div class="ibox-content">
<div class="main-content">
<form name="Postform" method="post" id="Postform" class="form-horizontal" action="${ctx}/backstage/post/edit">
<input type="hidden" id="id" name="id" value="${id}">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 字段名称:</label>
<div class="col-sm-9">
<input name="name" id="name" class="form-control" placeholder="字段名称" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 页面类型:</label>
<div class="col-sm-9">
<select class="form-control" name='reviewType' id='reviewType'>
<option value="0">任务终审</option>
<option value="1">图鉴审批</option>
<option value="2">任务审核</option>
<option value="3">审核填报</option>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 字段描述:</label>
<div class="col-sm-9">
<input name="fieldDesc" id="fieldDesc" class="form-control" placeholder="字段描述" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">是否必选:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="isrequired"> <i></i>
</label>
<label>
<input type="radio" value="0" name="isrequired"> <i></i>
</label>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 排序字段:</label>
<div class="col-sm-9">
<input name="sort" id="sort" class="form-control" placeholder="排序字段" class="form-control" type="text" maxlength='20' required>
</div>
</div>
</div>
<div class="col-sm-6" >
<div class="form-group">
<label class="col-sm-3 control-label is-required">是否高亮:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="isHighlight" > <i></i>
</label>
<label>
<input type="radio" value="0" name="isHighlight" > <i></i>
</label>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6" >
<div class="form-group">
<label class="col-sm-3 control-label is-required">是否可点击:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="isTap"> <i></i>
</label>
<label>
<input type="radio" value="0" name="isTap"> <i></i>
</label>
</div>
</div>
</div>
</div>
<div class="col-sm-6" >
<div class="form-group">
<label class="col-sm-3 control-label is-required">是否隐藏:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="isHide"> <i></i>
</label>
<label>
<input type="radio" value="0" name="isHide"> <i></i>
</label>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6" >
<div class="form-group">
<label class="col-sm-3 control-label is-required">是否启用:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="isEnable"> <i></i>启用
</label>
<label>
<input type="radio" value="0" name="isEnable"> <i></i>停用
</label>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button type="submit" class="btn btn-w-m btn-primary">保存</button>
<button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="ajaxDeptTreemodal" class="modal fade" tabindex="-1" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
<h4 class="modal-title">选择机构</h4>
</div>
<div class="modal-body" style=" padding: 15px 50px; ">
<ul id="departZtreeUl" class="ztree"></ul>
</div>
<div class="modal-footer">
<button type="button" data-dismiss="modal" class="btn btn-white">取消</button>
<button type="button" onclick="closedept()" class="btn btn-primary">确认</button>
</div>
</div>
</div>
</div>
<#include "/head/footadd.html" />
<script src="${ctx}/static/js/plugins/layer/layer.min.js"></script>
<script src="${ctx}/static/js/plugins/jqueryzTree/js/jquery.ztree.all.min.js"></script>
<script type="text/javascript">
var $ajaxDeptTreemodal = $('#ajaxDeptTreemodal');
function selectDeptTree(){
$ajaxDeptTreemodal.modal();
$ajaxDeptTreemodal.css("z-index",(parent.getMaxZIndex() + 1));
}
function closedept(){
$ajaxDeptTreemodal.modal('hide');
}
var _deptTree;
var setting = {
data: {
simpleData: {
enable: true
}
}, callback: {onClick: zTreeOnClick }
};
function zTreeOnClick(event, treeId, treeNode) {
$("#parentname").val(treeNode.name);
$("#deptid").val(treeNode.id);
closedept();
};
$(document).ready(function () {
if(parent.$("#index_user_issys").val() == 0){
$("#systemAdminUse").hide();
}
$.ajaxSettings.async = false;
parent.axgetXiaoyao("${ctx}/backstage/admin/department/showDeptJsTree",null,false,function (data) {
_deptTree = $.fn.zTree.init($("#departZtreeUl"),setting, data);
_deptTree.expandAll(true);
});
$.ajaxSettings.async = true;
parent.axgetXiaoyao('${ctx}/ocr/field/getData/' + $("#id").val(),null,false , function(data){
if(data.code == "OK"){
$("#id").val(data.data.id);
$("#name").val(data.data.name);
$("#reviewType").val(data.data.reviewType)
// if(data.data.reviewType == '0') {
// $("#reviewType").val('终审');
// }
// else if(data.data.reviewType == '1'){
// $("#reviewType").val('工单');
// }
// else if(data.data.reviewType == '2'){
// $("#reviewType").val('一审二审');
// }
// else if(data.data.reviewType == '3'){
// $("#reviewType").val('审核填报');
// }
$("#fieldDesc").val(data.data.fieldDesc);
$("#sort").val(data.data.sort);
if (data.data.isTap == 1) {
$("input:radio[name='isTap']").eq(0).attr('checked', true);
} else if (data.data.isTap == 0) {
$("input:radio[name='isTap']").eq(1).attr('checked', true);
}
if (data.data.isHide == 1) {
$("input:radio[name='isHide']").eq(0).attr('checked', true);
} else if (data.data.isHide == 0) {
$("input:radio[name='isHide']").eq(1).attr('checked', true);
}
if (data.data.isHighlight == 1) {
$("input:radio[name='isHighlight']").eq(0).attr('checked', true);
} else if (data.data.isHighlight == 0) {
$("input:radio[name='isHighlight']").eq(1).attr('checked', true);
}
if (data.data.isrequired == 1) {
$("input:radio[name='isrequired']").eq(0).attr('checked', true);
} else if (data.data.isrequired == 0) {
$("input:radio[name='isrequired']").eq(1).attr('checked', true);
}
if (data.data.isEnable == 1) {
$("input:radio[name='isEnable']").eq(0).attr('checked', true);
} else if (data.data.isEnable == 0) {
$("input:radio[name='isEnable']").eq(1).attr('checked', true);
}
}else{
parent.toastr.error("非法请求。");
}
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
});
$("#Postform").attr("action","${ctx}/ocr/field/saveOrUpdate");
var form1 = $('#Postform');
var error1 = $('.alert-danger', form1);
form1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: ":hidden",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#Postform").ajaxSubmit({
headers: {"logintoken": parent.getLoginToken()},
success: function (data) {
parent.layer.closeAll('loading');
if (data.code == "OK") {
parent.toastr.success(data.message);
rolesback();
} else if (data.code == "ERRORM") {
$.each(data.message, function (name, anArray) {
$.each(anArray, function (n, value) {
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr("id", n + "-error").addClass(
"help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
} else {
parent.toastr.error(data.message);
}
}
});
}
});
});
function rolesback() {
parent.closeItem(window.frameElement.name);
}
</script>
</body>
</html>

@ -1,232 +0,0 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>信息字段管理</title>
<#include "/head/headlist.html" />
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="ibox ">
<div class="ibox-content">
<div class="ibox-content">
<form id="searcheuser" class="form-inline">
<div class="form-group">
<input name='search_name' id='search_name' class='form-control' placeholder='字段名称'/>
</div>
<div class="form-group">
<select class="form-control" name='search_reviewType' id='search_reviewType'>
<option value="0">任务终审</option>
<option value="1">图鉴审批</option>
<option value="2">任务审核</option>
<option value="3">审核填报</option>
</select>
</div>
<div class="form-group">
<a class="btn btn-primary btn-rounded btn-sm" onclick="refreshTable()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$('#searcheuser')[0].reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</div>
</form>
</div>
</div>
</div>
<div class="ibox-content">
<div class="row row-lg">
<div class="col-sm-12">
<div class="container-div">
<div class="btn-group-sm" id="_mybutton" role="group">
</div>
<br/>
</div>
</div>
<div class="col-sm-12 select-table table-striped" >
<table id="Post_list" ></table>
</div>
</div>
</div>
</div>
<#include "/head/footlist.html" />
</body>
</html>
<script type="text/javascript">
var _tableListPost;
var jsptoolbar = '';
var jspOperation = '';
jQuery(document).ready(function($){
parent.axgetXiaoyao("${ctx}/backstage/admin/user/toolsbarOperation?" + "resourceid=${resourceid}",null,true ,
function(data){
if(data.code == "OK"){
jsptoolbar = data.data.Jsptoolbar;
jspOperation = data.data.JspOperation;
$("#_mybutton").empty();
$(jsptoolbar).each(function (i, toolbar) {
if(toolbar.methodid != '104'){
$("#_mybutton").append('<button class="btn sbold ' + toolbar.img + '" onClick="' + toolbar.actionmethod + '(\'${resourceid}' + toolbar.methodid + '\')"> ' + ' <i class="fa ' + toolbar.methodkey + '"></i> ' + toolbar.text + '</button>&nbsp');
}
});
_tableListPost = $('#Post_list').bootstrapTable({
url: '${ctx}/ocr/field/page',
pagination: true, //是否显示分页(*
pageNumber:1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*
sidePagination: "server",
pageList: [10, 25, 50],
ajaxOptions:{
headers: {"logintoken": parent.getLoginToken()}
},
queryParams: function queryParams(params) {
return {
sortorder: params.order,
sortname: params.sort,
pageSize: params.limit,
start: (params.offset / params.limit) + 1,
search_name:'{"value":"' + $("#search_name").val() + '","op":"equal","type":"string"}',
search_reviewType:'{"value":"' + $("#search_reviewType").val() + '","op":"equal","type":"string"}',
};
},
responseHandler:function(res){
return{"rows": res.data.records, "total": res.data.total};
},
columns: [
{checkbox: true},
{ width:100,valign: "middle",field:'name',title:'字段名称',sortable:true},
{ width:150,valign: "middle",field:'fieldDesc',title:'字段描述',sortable:true},
{ width:150,valign: "middle",field:'reviewType',title:'字段类型',sortable:true,
formatter:function(value,oData,index) {
var listOperation = "";
if(oData.reviewType == 0){
listOperation = "任务终审";
}
else if(oData.reviewType == 1) {
listOperation = "图鉴审批";
}
else if(oData.reviewType == 2) {
listOperation = "任务审核";
}
else{
listOperation = "审核填报";
}
return listOperation;
}
},
{ width:80,valign: "middle",field:'isEnable',title:'是否启用',sortable:true,
formatter:function(value,oData,index) {
return (oData.isEnable == '1'?'启用':'停用');
}
},
{ width:80,valign: "middle",field:'sort',title:'排序字段',sortable:true},
{
width:200,
field: 'id',
title: '操作',
formatter:function(value,oData,index) {
var listOperation = "";
$(jspOperation).each(function (i, toolbar) {
listOperation = listOperation + "<a href=\"javascript:" + toolbar.actionmethod + "('${resourceid}','" + oData.id + "');\" class=\"btn " + toolbar.img + " btn-xs\")><i class=\"fa " + toolbar.methodkey + "\"></i> " + toolbar.text + " </a>&nbsp;&nbsp;";
});
return listOperation;
}
}
]
});
}
}
);
});
function getIdSelections() {
return $.map(_tableListPost.bootstrapTable('getSelections'), function(row) {
return row.id
});
}
function _useradd(jframeid){
parent._xiaoyaoOpenMenuTab('${ctx}/backstage/oa/ocrfieldconfigurationHtml/toSave',"添加字段信息",jframeid + '_add');
}
function updateData(jframeid,str){
var url = '${ctx}/backstage/oa/ocrfieldconfigurationHtml/toEdit/' + str ;
parent._xiaoyaoOpenMenuTab(url,"修改字段信息",jframeid + '_edit');
}
function _useredit(jframeid){
var str = getIdSelections() + "";
var tempstr = str.split(",");
if(str.length > 0 && tempstr.length > 1){
parent.toastr.error("每次只能修改一条信息。");
}else{
if (str.length > 0) {
updateData(jframeid,str);
} else {
parent.toastr.error("至少选择一条信息操作。");
}
}
}
function t_delete(str){
parent.layer.closeAll('loading');
// $.getJSON('${ctx}/ocr/field/delete?logintoken=' + parent.document.getElementById("logintoken").value, {id:str}, function(data){
parent.axgetXiaoyao('${ctx}/ocr/field/delete' , {id:str},false, function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
swal(data.message, "您已经永久删除了这条信息。", "success");
refreshTable();
}else{
swal(data.message, "遇到未知错误!", "error");
}
});
}
function _deletebu(sourceid){
var str = getIdSelections() + "";
var tempstr = str.split(",");
if (str.length > 0 && tempstr.length > 0) {
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "是的,我要删除!",
cancelButtonText: "让我再考虑一下…",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
t_delete(str);
} else {
swal("已取消", "您取消了删除操作!", "error");
}
});
} else {
parent.toastr.error("至少选择一条数据操作");
}
}
function _delete(sourceid,str){
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "是的,我要删除!",
cancelButtonText: "让我再考虑一下…",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
t_delete(str);
} else {
swal("已取消", "您取消了删除操作!", "error");
}
});
}
function refreshTable(sourceid){
_tableListPost.bootstrapTable('refreshOptions',{pageNumber:1});
}
</script>

@ -1,144 +0,0 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>查重模型日志</title>
<#include "/head/headlist.html" />
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="ibox ">
<div class="ibox-content">
<div class="ibox-content">
<form id="searcheuser" class="form-inline">
<!-- <div class="form-group">
<input name='search_callTime' id='search_callTime' class='form-control' placeholder='字段名称'/>
</div>-->
<div class="form-group">
<select class="form-control" name='callStatus' id='callStatus'>
<option value="1">成功</option>
<option value="2">失败</option>
<option value="3">异常</option>
</select>
</div>
<div class="form-group">
<a class="btn btn-primary btn-rounded btn-sm" onclick="refreshTable()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$('#searcheuser')[0].reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</div>
</form>
</div>
</div>
</div>
<div class="ibox-content">
<div class="row row-lg">
<div class="col-sm-12">
<div class="container-div">
<div class="btn-group-sm" id="_mybutton" role="group">
</div>
<br/>
</div>
</div>
<div class="col-sm-12 select-table table-striped" >
<table id="Post_list" ></table>
</div>
</div>
</div>
</div>
<#include "/head/footlist.html" />
</body>
</html>
<script type="text/javascript">
var _tableListPost;
var jsptoolbar = '';
var jspOperation = '';
jQuery(document).ready(function($){
parent.axgetXiaoyao("${ctx}/backstage/admin/user/toolsbarOperation?" + "resourceid=${resourceid}",null,true ,
function(data){
if(data.code == "OK"){
jsptoolbar = data.data.Jsptoolbar;
jspOperation = data.data.JspOperation;
$("#_mybutton").empty();
$(jsptoolbar).each(function (i, toolbar) {
if(toolbar.methodid != '104'){
$("#_mybutton").append('<button class="btn sbold ' + toolbar.img + '" onClick="' + toolbar.actionmethod + '(\'${resourceid}' + toolbar.methodid + '\')"> ' + ' <i class="fa ' + toolbar.methodkey + '"></i> ' + toolbar.text + '</button>&nbsp');
}
});
_tableListCommontword = $('#Post_list').bootstrapTable({
url: '${ctx}/ocr/picturelog/page',
pagination: true, //是否显示分页(*
pageNumber:1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*
sidePagination: "server",
pageList: [10, 25, 50],
ajaxOptions:{
headers: {"logintoken": parent.getLoginToken()}
},
queryParams: function queryParams(params) {
return {
sortorder: params.order,
sortname: params.sort,
pageSize: params.limit,
start: (params.offset / params.limit) + 1,
callStatus: $("#callStatus").val(),
callTimeStart: params.callTimeStart,
callTimeEnd: params.callTimeEnd,
};
},
responseHandler:function(res){
return{"rows": res.data.records, "total": res.data.total};
},
columns: [
{checkbox: true},
{ width:100,valign: "middle",field:'callTime',title:'调用时间',sortable:true},
{ width:150,valign: "middle",field:'pictureUrl',title:'图片地址',sortable:true,
formatter: function(value,row,index){
/*if(undefined != row.pictureUrl && null != row.pictureUrl && "null" != row.pictureUrl ){
return '<img src="' + row.pictureUrl + '" style="width:34px;height: 50px;" onerror="noheadimg(this)">';
}else{
return row.pictureUrl;
}*/
return row.pictureUrl
}},
{ width:80,valign: "middle",field:'callStatus',title:'调用状态',sortable:true,
formatter:function(value,oData,index) {
var listOperation = "";
if(oData.callStatus == 1){
listOperation = "成功";
}
else if(oData.callStatus == 2) {
listOperation = "失败";
}
else if(oData.callStatus == 3) {
listOperation = "异常";
}
else{
listOperation = "成功";
}
return listOperation;
}
},
{ width:150,valign: "middle",field:'callMsg',title:'调用信息',sortable:true,}
]
});
}
}
);
});
function getIdSelections() {
return $.map(_tableListPost.bootstrapTable('getSelections'), function(row) {
return row.id
});
}
function refreshTable(sourceid){
_tableListPost.bootstrapTable('refreshOptions',{pageNumber:1});
}
</script>

@ -89,10 +89,20 @@
<div class="main-content">
<form name="Userdistionaryform" method="post" id="Userdistionaryform" class="form-horizontal" action="${ctx}/backstage/userdistionary/save">
<input type="hidden" id="search_parentid">
<input type="hidden" id="userlist" name="userlist">
<input type="hidden" id="deptlist" name="deptlist">
<input type="hidden" value="1" name="usertype">
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label class="col-sm-2 control-label is-required">* 选择租户:</label>
<div class="col-sm-10">
<select data-placeholder="选择租户..." class="chosen-select" name='userDisId' id='userDisId' class="chosen-select" style="width:80%;" tabindex="2">
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
@ -104,14 +114,14 @@
</div>
</div>
</div>
<!-- <div class="row">-->
<!-- <div class="form-group">-->
<!-- <div class="col-sm-offset-5">-->
<!-- <button id="savebutton" type="submit" class="btn btn-w-m btn-primary">保存</button>-->
<!-- <button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button id="savebutton" type="submit" class="btn btn-w-m btn-primary">保存</button>
<button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>
</div>
</div>
</div>
</form>
</div>
</div>
@ -208,6 +218,19 @@
}
};
parent.axgetXiaoyao("${ctx}/backstage/admin/tenant/listall",null,false,function (data) {
if(data.code == "OK"){
$.each(data.data,function(name,anArray) {
console.log(anArray)
$("#userDisId").append("<option value='" + anArray.id + "'>" + anArray.name + "</option>");
});
$("#userDisId").chosen(selectConfig[$("#userDisId")]);
$("#userDisId").change(function (e){
refreshAddTable();
});
}
});
_tableAddListUserdistionary = $('#Userdistionary_add_list').bootstrapTable({
url: '${ctx}/backstage/oa/userdistionary/listnoin' ,
@ -260,7 +283,6 @@
return row.id + "_" + row.departmentId;
});
func = $.inArray(e.type, ['check', 'check-all']) > -1 ? 'union' : 'difference';
selectionIds = _[func](selectionIds, ids);
selectionIdDepts = _[func](selectionIdDepts, idDepts);
@ -305,11 +327,13 @@
},
submitHandler: function (){
if(selectionIdDepts.length < 1){
if(selectionIds.length < 1){
parent.toastr.success("选择要添加的用户。");
return;
}
$("#userlist").val(selectionIds.join());
$("#deptlist").val(selectionIdDepts.join());
parent.layer.load();

@ -4,11 +4,11 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>人员归属关系</title>
<#include "/head/headaddedit.html" />
<link href="${ctx}/static/css/plugins/bootstrap-table/bootstrap-table.min.css" rel="stylesheet">
<#include "/head/headlist.html" />
<link rel="stylesheet" href="${ctx}/static/js/plugins/jcrop/css/jquery.Jcrop.css" type="text/css" />
<link href="${ctx}/static/css/plugins/chosen/chosen.css" rel="stylesheet">
<link href="${ctx}/static/js/plugins/jqueryzTree/css/metroStyle/metroStyle.css" rel="stylesheet">
<link href="${ctx}/static/css/plugins/iCheck/custom.css" rel="stylesheet">
<style type="text/css">
.jcrop-holder #preview-pane {
@ -56,74 +56,49 @@
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>设置流程权限</h5>
</div>
<div class="col-sm-3" id="departDivTree">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>组织机构</h5>
<div class="ibox-tools">
<a class="collapse-link" title="折叠" id="collapes_linkclose">
<i class="fa fa-chevron-up" ></i>
</a>
<a class="collapse-link" title="展开" id="collapes_linkopen" style="display:none;">
<i class="fa fa fa-chevron-down" ></i>
</a>
</div>
</div>
<div class="ibox-content">
<div id="zTreeDemoBackground left">
<ul id="departZtreeUl" class="ztree"></ul>
</div>
<div class="ibox ">
<div class="ibox-content">
<div class="ibox-content">
<form id="searcheuserform" name="searcheuserform" class="form-inline">
<div class="form-group">
<div class="input-group">
<select data-placeholder="选择租户..." class="chosen-select" name='userDisId' id='userDisId' class="chosen-select" style="width:350px;" tabindex="2">
</select>
</div>
</div>
</div>
<div class="col-sm-9">
<div class="ibox ">
<div class="ibox-content">
<div class="main-content">
<form name="Userdistionaryform" method="post" id="Userdistionaryform" class="form-horizontal" action="${ctx}/backstage/userdistionary/save">
<input type="hidden" id="search_parentid">
<input type="hidden" id="deptlist" name="deptlist">
<input type="hidden" value="1" name="usertype">
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label class="col-sm-2 control-label is-required">* 用户列表:</label>
<div class="col-sm-10">
<table id="Userdistionary_add_list" ></table>
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button id="savebutton" type="submit" class="btn btn-w-m btn-primary">保存</button>
<button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>
</div>
</div>
</div>
</form>
</div>
<div class="form-group">
<div class="input-group">
<select data-placeholder="审批角色..." class="chosen-select" name='userDisRolesid' id='userDisRolesid' class="chosen-select" style="width:350px;" tabindex="2">
<option value="">请选择审批角色</option>
</select>
</div>
</div>
<div class="form-group">
<input name='search_username' id='search_username' class='form-control' placeholder='姓名--'/>
</div>
<div class="form-group">
<a class="btn btn-primary btn-rounded btn-sm" onclick="refreshTable()"><i class="fa fa-search"></i>&nbsp;搜索</a>
</div>
</form>
</div>
</div>
</div>
<div class="ibox-content">
<div class="row row-lg">
<div class="col-sm-12">
<div class="container-div">
<div class="btn-group-sm" id="_mybutton" role="group">
</div>
<br/>
</div>
</div>
<div class="col-sm-12 select-table table-striped" >
<table id="Userdistionary_list" ></table>
</div>
</div>
</div>
</div>
<!-- 展示流程图的 窗口 -->
<div id="modal-candidate-user-role" class="modal fade" aria-hidden="true">
<div class="modal-dialog" role="document" style="width: auto">
@ -135,8 +110,7 @@
<div class="modal-body">
<form id="candidateUserFrom">
<input type="hidden" id="fromUserId">
<input type="hidden" id="fromDeptId">
<input type="hidden" id="fromUserDisId">
<input type="hidden" value="1" name="fromUserTyped" id="fromUserTyped">
<div class="form-group">
<div class="input-group" id="fromUserNameDiv">
@ -160,92 +134,47 @@
</div>
</div>
</div>
<#include "/head/footadd.html" />
<script src="${ctx}/static/js/plugins/bootstrap-table/bootstrap-table.min.js"></script>
<script src="${ctx}/static/js/plugins/bootstrap-table/bootstrap-table-mobile.min.js"></script>
<script src="${ctx}/static/js/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="${ctx}/static/js/plugins/jqueryzTree/js/jquery.ztree.all.min.js"></script>
<script src="${ctx}/static/js/plugins/jqueryzTree/js/jquery.ztree.all.min.js"></script>
<#include "/head/footlist.html" />
<script src="${ctx}/static/js/plugins/jcrop/js/jquery.color.js" type="text/javascript"></script>
<script src="${ctx}/static/js/plugins/jcrop/js/jquery.Jcrop.js" type="text/javascript"></script>
<script src="${ctx}/static/js/plugins/iCheck/icheck.min.js"></script>
<!-- Chosen -->
<script src="${ctx}/static/js/plugins/chosen/chosen.jquery.js"></script>
<script type="text/javascript">
</body>
</html>
<script type="text/javascript">
var _tableListUserdistionary;
var _tableAddListUserdistionary;
var selectionIds = []; //保存选中ids
var selectionIdDepts = []; //保存选中用户机构主键
var _deptTree;
var setting = {
data: {
simpleData: {
enable: true
}
}, callback: {onClick: zTreeOnClick }
};
function zTreeOnClick(event, treeId, treeNode) {
if(treeNode.id != '0'){
$("#search_parentid").val(treeNode.id);
}else{
$("#search_parentid").val("");
var jsptoolbar = '';
var jspOperation = '';
var userDisRolesidarray;
var selectConfig = {
'.chosen-select': {},
'.chosen-select-deselect': {
allow_single_deselect: true
},
'.chosen-select-no-single': {
disable_search_threshold: 10
},
'.chosen-select-no-results': {
no_results_text: 'Oops, nothing found!'
},
'.chosen-select-width': {
width: "95%"
}
refreshAddTable();
};
//折叠ibox
$('#collapes_linkopen').click(function () {
_deptTree.expandAll(true);
$(this).hide();
$("#collapes_linkclose").show();
});
jQuery(document).ready(function($){
$("#collapes_linkclose").click(function () {
_deptTree.expandAll(false);
$(this).hide();
$("#collapes_linkopen").show();
});
//选中事件操作数组
var union = function(array,ids){
$.each(ids, function (i, id) {
if($.inArray(id,array)==-1){
array[array.length] = id;
}
});
return array;
};
//取消选中事件操作数组
var difference = function(array,ids){
$.each(ids, function (i, id) {
var index = $.inArray(id,array);
if(index!=-1){
array.splice(index, 1);
parent.axgetXiaoyao("${ctx}/backstage/admin/tenant/listall",null,false,function (data) {
if(data.code == "OK"){
$.each(data.data,function(name,anArray) {
console.log(anArray)
$("#userDisId").append("<option value='" + anArray.id + "'>" + anArray.name + "</option>");
});
$("#userDisId").chosen(selectConfig[$("#userDisId")]);
}
});
return array;
};
var _ = {"union":union,"difference":difference};
$(document).ready(function () {
initDepartTree()
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
var selectConfig = {
'.chosen-select': {},
'.chosen-select-deselect': {
allow_single_deselect: true
},
'.chosen-select-no-single': {
disable_search_threshold: 10
},
'.chosen-select-no-results': {
no_results_text: 'Oops, nothing found!'
},
'.chosen-select-width': {
width: "95%"
}
};
//审批角色
parent.axgetXiaoyao('${ctx}/backstage/oa/candidate/list',null,false , function(result) {
@ -261,190 +190,83 @@
}
});
_tableAddListUserdistionary = $('#Userdistionary_add_list').bootstrapTable({
url: '${ctx}/backstage/oa/userdistionary/listnoin' ,
pagination: true, //是否显示分页(*
pageNumber:1, //初始化加载第一页,默认第一页
pageSize: 20, //每页的记录行数(*
sidePagination: "server",
idField:"id",
height: "100%",
striped:true, //奇偶行渐色表
clickToSelect:true, //是否选中
maintainSelected:true,
pageList: [20, 50, 100],
ajaxOptions:{
headers: {"logintoken": parent.getLoginToken()}
},
queryParams: function queryParams(params) {
return {
sortorder: params.order,
sortname: params.sort,
pagesize: params.limit,
start: (params.offset / params.limit) + 1,
parentid: $("#search_parentid").val(),
userDisId: $("#userDisId").val()
};
},
responseHandler:function(res){
//表格分页之前处理多选框数据
$.each(res.data.records, function (i, row) {
row.checkStatus = $.inArray(row.id, selectionIds) != -1; //判断当前行的数据id是否存在与选中的数组存在则将多选框状态变为true
});
return{"rows": res.data.records, "total": res.data.total};
},
columns: [
{ width:150,valign: "middle",field:'username',title:'用户名',sortable:true},
{ width:150,valign: "middle",field:'loginname',title:'登录账号',sortable:true},
{ width:150,valign: "middle",field:'departname',title:'所属部门',sortable:true},
{ width:150,valign: "middle",field:'candidatename',title:'审批权限组',sortable:false},
{
width:200,
field: 'id',
title: '操作',
formatter:function(value,oData,index) {
var listOperation = "<a href=\"javascript:void(0)\" onclick=\"setCandiRole('" + index +"')\" class=\"btn btn-primary btn-xs\" ><i class=\"fa fa-pencil\"></i> 设置审批组 </a>&nbsp;&nbsp;&nbsp;&nbsp;";
return listOperation;
}
}
]
});
//绑定选中事件、取消事件、全部选中、全部取消
_tableAddListUserdistionary.on('check.bs.table check-all.bs.table uncheck.bs.table uncheck-all.bs.table', function (e, rows) {
var ids = $.map(!$.isArray(rows) ? [rows] : rows, function (row) {
return row.id;
});
var idDepts = $.map(!$.isArray(rows) ? [rows] : rows, function (row) {
return row.id + "_" + row.departmentId;
});
func = $.inArray(e.type, ['check', 'check-all']) > -1 ? 'union' : 'difference';
selectionIds = _[func](selectionIds, ids);
selectionIdDepts = _[func](selectionIdDepts, idDepts);
});
$("#Userdistionaryform").attr("action","${ctx}/backstage/oa/userdistionary/save");
var form1 = $('#Userdistionaryform');
var error1 = $('.alert-danger', form1);
form1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: ":hidden",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
if(selectionIdDepts.length < 1){
parent.toastr.success("选择要添加的用户。");
return;
}
$("#deptlist").val(selectionIdDepts.join());
parent.layer.load();
$("#savebutton").addClass('disabled');
$("#Userdistionaryform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
parent.toastr.success(data.message);
rolesback();
}else if(data.code == "ERRORM"){
$.each(data.message,function(name,anArray) {
$.each(anArray,function(n,value){
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr( "id", n + "-error" ).addClass("help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
}else{
$("#savebutton").addClass('removeClass');
parent.toastr.error(data.message);
parent.axgetXiaoyao("${ctx}/backstage/admin/user/toolsbarOperation?" + "resourceid=${resourceid}",null,true ,
function(data){
if(data.code == "OK"){
jsptoolbar = data.data.Jsptoolbar;
jspOperation = data.data.JspOperation;
$("#_mybutton").empty();
$(jsptoolbar).each(function (i, toolbar) {
if(toolbar.methodid != '104'){
$("#_mybutton").append('<button class="btn sbold ' + toolbar.img + '" onClick="' + toolbar.actionmethod + '(\'${resourceid}' + toolbar.methodid + '\')"> ' + ' <i class="fa ' + toolbar.methodkey + '"></i> ' + toolbar.text + '</button>&nbsp');
}
}
});
});
_tableListUserdistionary = $('#Userdistionary_list').bootstrapTable({
url: '${ctx}/backstage/oa/userdistionary/list' ,
pagination: true, //是否显示分页(*
pageNumber:1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*
sidePagination: "server",
height: "100%",
pageList: [10, 25, 50],
ajaxOptions:{
headers: {"logintoken": parent.getLoginToken()}
},
queryParams: function queryParams(params) {
return {
sortorder: params.order,
sortname: params.sort,
pagesize: params.limit,
start: (params.offset / params.limit) + 1,
userDisId:$("#userDisId").val() ,
search_username:'{"value":"' + $("#search_username").val() + '","op":"equal","type":"string"}',
userDisRolesid: $("#userDisRolesid").val()
};
},
responseHandler:function(res){
return{"rows": res.data.records, "total": res.data.total};
},
columns: [
{checkbox: true},
{ width:150,valign: "middle",field:'username',title:'用户名',sortable:false},
{ width:150,valign: "middle",field:'loginname',title:'登录账号',sortable:false},
{ width:150,valign: "middle",field:'departname',title:'所属部门',sortable:false},
{ width:150,valign: "middle",field:'candidatename',title:'审批权限组',sortable:false},
{
width:200,
field: 'id',
title: '操作',
formatter:function(value,oData,index) {
var listOperation = "<a href=\"javascript:void(0)\" onclick=\"setCandiRole('" + index +"')\" class=\"btn btn-primary btn-xs\" ><i class=\"fa fa-pencil\"></i> 设置审批组 </a>&nbsp;&nbsp;&nbsp;&nbsp;";
return listOperation;
}
}
]
});
}
}
});
);
});
function saveUserCandidateForm(){
var chk_value =[];//定义一个数组
$('input[name="userCandRolesid"]:checked').each(function(){//遍历每一个名字为nodes的复选框其中选中的执行函数
chk_value.push($(this).val());//将选中的值添加到数组chk_value中
function getIdSelections() {
return $.map(_tableListUserdistionary.bootstrapTable('getSelections'), function(row) {
return row.userdistionaryid
});
var selectId = chk_value.join(",");
//审批角色
parent.axpostXiaoyao('${ctx}/backstage/oa/userdistionary/saveupdate',
{
userid:$("#fromUserId").val(),
userdeptid:$("#fromDeptId").val(),
fromUserTyped:1,
fromUserDisRolesid:selectId
},
false ,
function(result) {
if(result.code == 'OK'){
parent.toastr.success(result.message);
refreshAddTable();
}else{
parent.toastr.error(result.message);
}
$("#modal-candidate-user-role").modal("hide");
});
}
function _useradd(jframeid){
parent._xiaoyaoOpenMenuTab('${ctx}/backstage/oa/userdistionaryHtml/toSave',"添加人员",jframeid + '_add');
}
function setCandiRole(index){
$("#modal-candidate-user-role").modal();
$("#modal-candidate-user-role").css("z-index",(parent.getMaxZIndex() + 1));
var getdata = _tableAddListUserdistionary.bootstrapTable('getData');
var getdata = _tableListUserdistionary.bootstrapTable('getData');
var task = getdata[index];
$("#fromUserId").val(task.id);
$("#fromDeptId").val(task.departid);
console.log(task)
console.log("--------------------------------")
//查询当前人员已经设置的角色
var candidateid = task.candidateid;
var candidateidArray = candidateid.split(",");
@ -484,24 +306,119 @@
$("#fromUserNameDiv").html("姓名:" + task.username);
}
function initDepartTree() {
if(undefined != _deptTree){
_deptTree.destroy();
}
parent.axgetXiaoyao("${ctx}/backstage/admin/department/showDeptJsTree",null,true ,function (data) {
_deptTree = $.fn.zTree.init($("#departZtreeUl"),setting, data);
_deptTree.expandAll(true);
function setCandiDept(index){
var getdata = _tableListUserdistionary.bootstrapTable('getData');
var task = getdata[index];
//查询当前人员已经设置的角色
var candidateid = task.candidateid;
var username = task.username;
var userid = task.id;
var usertype = task.userOsudType;
var userdistionaryid = task.userdistionaryid;
parent._xiaoyaoOpenMenuTab('${ctx}/backstage/oa/userdistionaryHtml/tolinkdept?candidateid=' + candidateid + "&username=" + username + "&userid=" + userid + "&usertype=" + usertype + "&userdistionaryid=" + userdistionaryid,"设置分管部门",userdistionaryid + '_add');
}
function t_delete(str){
parent.layer.closeAll('loading');
parent.axgetXiaoyao('${ctx}/backstage/oa/userdistionary/delmore' , {id:str},false, function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
swal(data.message, "您已经永久删除了这条信息。", "success");
refreshTable();
}else{
swal(data.message, "遇到未知错误!", "error");
}
});
}
function saveUserCandidateForm(){
var chk_value =[];//定义一个数组
$('input[name="userCandRolesid"]:checked').each(function(){//遍历每一个名字为nodes的复选框其中选中的执行函数
chk_value.push($(this).val());//将选中的值添加到数组chk_value中
});
var selectId = chk_value.join(",");
//审批角色
parent.axpostXiaoyao('${ctx}/backstage/oa/userdistionary/saveupdate',
{
fromUserDisId:$("#fromUserDisId").val(),
fromUserDisRolesid:selectId,
fromUserTyped:$("#fromUserTyped").val()
},
false ,
function(result) {
if(result.code == 'OK'){
var userDisRolesidarray = result.data;
var posthtml = "";
$(userDisRolesidarray).each(function(idx,item){
posthtml = posthtml + '<option value="' + item.id + '" hassubinfo="true">' + item.candidatename + '</option>';
});
$("#userDisRolesid").append(posthtml);
$("#userDisRolesid").chosen(selectConfig[$("#userDisRolesid")]);
parent.toastr.success(result.message);
refreshTable();
}else{
parent.toastr.error(result.message);
}
$("#modal-candidate-user-role").modal("hide");
});
}
function refreshAddTable(){
_tableAddListUserdistionary.bootstrapTable('refreshOptions',{pageNumber:1});
function _deletebu(sourceid){
var str = getIdSelections() + "";
var tempstr = str.split(",");
if (str.length > 0 && tempstr.length > 0) {
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "是的,我要删除!",
cancelButtonText: "让我再考虑一下…",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
t_delete(str);
} else {
swal("已取消", "您取消了删除操作!", "error");
}
});
} else {
parent.toastr.error("至少选择一条数据操作");
}
}
function _delete(sourceid,str){
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "是的,我要删除!",
cancelButtonText: "让我再考虑一下…",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
t_delete(str);
} else {
swal("已取消", "您取消了删除操作!", "error");
}
});
}
function rolesback() {
parent.closeItem(window.frameElement.name);
function refreshTable(){
_tableListUserdistionary.bootstrapTable('refreshOptions',{pageNumber:1});
}
</script>
</body>
</html>
</script>

@ -3,7 +3,7 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>公司主表</title>
<title>部门主表</title>
@ -25,9 +25,9 @@
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 公司名称:</label>
<label class="col-sm-3 control-label is-required">* 部门名称:</label>
<div class="col-sm-9">
<input name="departname" id="departname" class="form-control" placeholder="公司名称" class="form-control" type="text" maxlength='100' required>
<input name="departname" id="departname" class="form-control" placeholder="部门名称" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
@ -45,9 +45,9 @@
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 公司描述:</label>
<label class="col-sm-3 control-label is-required">* 部门描述:</label>
<div class="col-sm-9">
<input name="departdesc" id="departdesc" class="form-control" placeholder="公司描述" class="form-control" type="text" maxlength='100' required>
<input name="departdesc" id="departdesc" class="form-control" placeholder="部门描述" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
@ -81,9 +81,9 @@
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">公司地址:</label>
<label class="col-sm-3 control-label is-required">部门地址:</label>
<div class="col-sm-9">
<input name="departaddress" id="departaddress" class="form-control" placeholder="公司地址" class="form-control" type="text" maxlength='100' required>
<input name="departaddress" id="departaddress" class="form-control" placeholder="部门地址" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
@ -91,47 +91,20 @@
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">业务主体编码:</label>
<label class="col-sm-3 control-label is-required">机构编号:</label>
<div class="col-sm-9">
<input type="text" id="deptno" name="deptno" placeholder="业务主体编码" data-required="1" class="form-control" required minlength="2" maxlength="50"/>
<input type="text" id="deptno" name="deptno" placeholder="机构编号" data-required="1" class="form-control" required checkENG="true" minlength="2" maxlength="50"/>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">企业编码:</label>
<div class="col-sm-9">
<input type="text" id="description" name="description" placeholder="企业编码" data-required="1" class="form-control" required minlength="2" maxlength="50"/>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">业务主体/租户:</label>
<div class="col-sm-9">
<div class="input-group">
<div class="radio i-checks">
<label>
<input type="radio" id="typedept1" checked="" value="1" name="typedept"> <i></i>业务主体
</label>
<label>
<input type="radio" id="typedept0" value="0" name="typedept"> <i></i>租户
</label>
</div>
</div>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">

@ -3,7 +3,7 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>公司主表</title>
<title>部门主表</title>
@ -27,9 +27,9 @@
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 公司名称:</label>
<label class="col-sm-3 control-label is-required">* 部门名称:</label>
<div class="col-sm-9">
<input name="departname" id="departname" class="form-control" placeholder="公司名称" class="form-control" type="text" maxlength='100' required>
<input name="departname" id="departname" class="form-control" placeholder="部门名称" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
@ -47,9 +47,9 @@
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 公司描述:</label>
<label class="col-sm-3 control-label is-required">* 部门描述:</label>
<div class="col-sm-9">
<input name="departdesc" id="departdesc" class="form-control" placeholder="公司描述" class="form-control" type="text" maxlength='100' required>
<input name="departdesc" id="departdesc" class="form-control" placeholder="部门描述" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
@ -84,9 +84,9 @@
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">公司地址:</label>
<label class="col-sm-3 control-label is-required">部门地址:</label>
<div class="col-sm-9">
<input name="departaddress" id="departaddress" class="form-control" placeholder="公司地址" class="form-control" type="text" maxlength='100' required>
<input name="departaddress" id="departaddress" class="form-control" placeholder="部门地址" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
@ -94,41 +94,13 @@
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">业务主体编码:</label>
<label class="col-sm-3 control-label is-required">机构编号:</label>
<div class="col-sm-9">
<input type="text" id="deptno" name="deptno" placeholder="业务主体编码" data-required="1" class="form-control" required minlength="2" maxlength="50"/>
<input type="text" id="deptno" name="deptno" placeholder="机构编号" data-required="1" readonly="readonly" class="form-control" required checkENG="true" minlength="2" maxlength="50"/>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">企业编码:</label>
<div class="col-sm-9">
<input type="text" id="description" name="description" placeholder="企业编码" data-required="1" class="form-control" required minlength="2" maxlength="50"/>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">业务主体/租户:</label>
<div class="col-sm-9">
<div class="input-group">
<div class="radio i-checks">
<label>
<input type="radio" id="typedept1" value="1" name="typedept"> <i></i>业务主体
</label>
<label>
<input type="radio" id="typedept0" value="0" name="typedept"> <i></i>租户
</label>
</div>
</div>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
@ -208,8 +180,8 @@
$(document).ready(function () {
parent.axgetXiaoyao("${ctx}/backstage/admin/department/showDeptJsTree" ,null,false,function (datatree) {
_deptTree = $.fn.zTree.init($("#departZtreeUl"),setting, datatree);
parent.axgetXiaoyao("${ctx}/backstage/admin/department/showDeptJsTree" ,null,false,function (data) {
_deptTree = $.fn.zTree.init($("#departZtreeUl"),setting, data);
_deptTree.expandAll(true);
@ -222,8 +194,6 @@
$("#departdesc").val(data.data.departdesc);
$("#deptno").val(data.data.deptno);
$("#description").val(data.data.description);
var node = _deptTree.getNodesByParam("id",String(data.data.parentid));
@ -239,12 +209,6 @@
$("input:radio[name='enabled']").eq(1).attr('checked',true);
}
if(data.data.typedept == 1){
$("input:radio[name='typedept']").eq(0).attr('checked',true);
}else if(data.data.typedept == 0){
$("input:radio[name='typedept']").eq(1).attr('checked',true);
}
checkeradio();
$("#sorting").val(data.data.sorting);

@ -3,7 +3,7 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>公司主表</title>
<title>部门主表</title>
@ -53,7 +53,7 @@
<input name='search_parentid' id='search_parentid' type="hidden"/>
<div class="form-group">
<input name='search_departname' id='search_departname' class='form-control' placeholder='公司名称'/>
<input name='search_departname' id='search_departname' class='form-control' placeholder='部门名称'/>
</div>
<div class="form-group">
<select class="form-control input-s-sm inline" name="search_enabled" id="search_enabled">
@ -89,43 +89,12 @@
</div>
</div>
<!-- 展示流程图的 窗口 -->
<div id="modal_flowable_list" class="modal fade" aria-hidden="true">
<div class="modal-dialog" role="document" style="width: auto">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="flowImgModalLabel">部署工作流:<span id="flowName"></span></h4>
</div>
<div class="modal-body">
<form id="candidateUserFrom">
<input type="hidden" name="deptid" id="deptid">
<input type="hidden" name="category" id="category">
<input type="hidden" name="caProcessdefinitionid" id="caProcessdefinitionid">
<div class="form-group">
<table id="flowable_list" ></table>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" onclick="saveUserCandidateForm()" class="btn btn-primary">设置</button>
<button type="button" class="btn btn-default" data-dismiss="modal">关闭窗口</button>
</div>
</div>
</div>
</div>
<#include "/head/footlist.html" />
<script src="${ctx}/static/js/plugins/jqueryzTree/js/jquery.ztree.all.min.js"></script>
</body>
</html>
<script type="text/javascript">
var _tableListDefinition;
var _deptTree;
var setting = {
data: {
@ -154,106 +123,13 @@
$("#collapes_linkopen").show();
});
function isNull(data){
return (data == "" || data == undefined || data == null || data == 'null') ? true : false;
}
function playFlow(processdefinitionid,deptid){
$("#caProcessdefinitionid").val(processdefinitionid);
$("#deptid").val(deptid);
$("#modal_flowable_list").modal();
$("#modal_flowable_list").css("z-index",(parent.getMaxZIndex() + 1));
_tableListDefinition.bootstrapTable('refreshOptions',{pageNumber:1});
}
function saveUserCandidateForm(){
//流程主键
var Processdefinitionid = $("#caProcessdefinitionid").val();
//机构主键
var deptid = $("#deptid").val();
//流程关键,对应流程的”目标命名空间“
var category = $("#category").val();
if(isNull(category)){
parent.toastr.error("未选择流程。");
}else{
parent.axpostXiaoyao("${ctx}/backstage/admin/department/updateflowable",{"Processdefinitionid":Processdefinitionid,"deptid":deptid,"category":category},true ,function (data) {
if(data.code == "OK"){
parent.toastr.success("设置成功。");
refreshTable();
}else{
parent.toastr.error("失败。");
}
});
}
}
function changeFlowRadio(category,processdefinitionid){
$("#caProcessdefinitionid").val(processdefinitionid);
$("#category").val(category);
}
var _tableListDepartment;
var _tableListDepartment;
var jsptoolbar = '';
var jspOperation = '';
jQuery(document).ready(function($){
_tableListDefinition = $('#flowable_list').bootstrapTable({
url: '${ctx}/flow/definition/latestList' ,
pagination: true, //是否显示分页(*
pageNumber:1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*
sidePagination: "server",
height: "100%", pageList: [10, 25, 50],
ajaxOptions:{
headers: {"logintoken": parent.getLoginToken()}
},
queryParams: function queryParams(params) {
return {
sortorder: params.order,
sortname: params.sort,
pageSize: params.limit,
currPage: (params.offset / params.limit) + 1
};
},
responseHandler:function(res){
return{"rows": res.data.list, "total": res.data.totalCount};
},
onLoadSuccess: function(data) {
$(data.rows).each(function (fli, fldata) {
if (fldata.id == $("#caProcessdefinitionid").val()) {
$("input[type='radio'][value='" + $("#caProcessdefinitionid").val() + "']").prop('checked', true);
$("#category").val(fldata.category);
}
});
},
columns: [
{
width:10,
field: 'radio',
formatter: function(value, row, index) {
return '<input type="radio" name="radioItem" onclick="changeFlowRadio(\'' + row.category + '\',\'' + row.id + '\')" value="' + row.id + '">';
}
},
{ width:150,valign: "middle",field:'id',title:'流程定义ID',sortable:false},
{ width:150,valign: "middle",field:'name',title:'流程名称',sortable:false},
{ width:150,valign: "middle",field:'flowKey',title:'流程key',sortable:false},
{ width:150,valign: "middle",field:'description',title:'流程描述',sortable:false},
{
width:90,
field: 'id',
title: '关联的流程',
formatter:function(value,oData,index) {
var listOperation = '无';
if($("#caProcessdefinitionid").val() == oData.id){
listOperation = '关联';
}
return listOperation;
}
}
]
});
initDepartTree();
parent.axgetXiaoyao("${ctx}/backstage/admin/user/toolsbarOperation?" + "resourceid=${resourceid}",null,true ,
function(data){
@ -292,42 +168,23 @@
},
columns: [
{checkbox: true},
{ width:150,valign: "middle",field:'departname',title:'公司名称',sortable:true},
{ width:150,valign: "middle",field:'enabled',title:'公司类型',sortable:true,
formatter:function (value,oData,index) {
var listOperation = "";
if(oData.typedept == 1){
listOperation = "主体";
}else {
listOperation = "租户";
}
return listOperation;
}
},
{ width:150,valign: "middle",field:'deptno',title:'业务主体编码',sortable:true},
{ width:150,valign: "middle",field:'description',title:'企业编码',sortable:true},
{ width:50,valign: "middle",field:'processdefinitionid',title:'是否关联流程',sortable:false,
formatter:function(value,oData,index) {
var listOperation = oData.processdefinitionid == null ? "否" : "是";
{ width:150,valign: "middle",field:'departname',title:'部门名称',sortable:true},
{ width:150,valign: "middle",field:'departdesc',title:'部门描述',sortable:true},
{ width:150,valign: "middle",field:'enabled',title:'是否启用',sortable:true,
formatter:function (value,oData,index) {
var listOperation = "";
return listOperation;
}
},
{ width:150,valign: "middle",field:'enabled',title:'是否启用',sortable:true,
formatter:function (value,oData,index) {
var listOperation = "";
if(oData.enabled == 1){
listOperation = "启用";
}else {
listOperation = "停用";
}
if(oData.enabled == 1){
listOperation = "启用";
}else {
listOperation = "停用";
return listOperation;
}
return listOperation;
}
},
{ width:150,valign: "middle",field:'sorting',title:'排序',sortable:true},
},
{ width:150,valign: "middle",field:'sorting',title:'排序',sortable:true},
{
width:200,
field: 'id',
@ -339,8 +196,6 @@
$(jspOperation).each(function (i, toolbar) {
listOperation = listOperation + "<a href=\"javascript:" + toolbar.actionmethod + "('${resourceid}','" + tempid + "');\" class=\"btn " + toolbar.img + " btn-xs\")><i class=\"fa " + toolbar.methodkey + "\"></i> " + toolbar.text + " </a>&nbsp;&nbsp;";
});
listOperation = listOperation + "<a href=\"javascript:playFlow('" + oData.processdefinitionid + "','" + oData.id + "');\" class=\"btn btn-success btn-xs\")><i class=\"fa fa-map-signs\"></i>查看流程</a>&nbsp;&nbsp;";
return listOperation;
}
}
@ -367,11 +222,11 @@
});
}
function _useradd(sourceid){
parent._xiaoyaoOpenMenuTab('${ctx}/backstage/admin/departmentHtml/toSave',"添加公司",sourceid);
parent._xiaoyaoOpenMenuTab('${ctx}/backstage/admin/departmentHtml/toSave',"添加部门",sourceid);
}
function updateData(sourceid,str){
var url = '${ctx}/backstage/admin/departmentHtml/toEdit/' + str ;
parent._xiaoyaoOpenMenuTab(url,"修改公司",sourceid + "_edit");
parent._xiaoyaoOpenMenuTab(url,"修改部门",sourceid + "_edit");
}
function _useredit(sourceid){
var str = getIdSelections() + "";

@ -1,277 +0,0 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>信息字段管理添加</title>
<#include "/head/headaddedit.html" />
<link href="${ctx}/static/js/plugins/jqueryzTree/css/metroStyle/metroStyle.css" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>信息字段新增</h5>
</div>
<div class="ibox-content">
<div class="main-content">
<form name="Postform" method="post" id="Postform" class="form-horizontal" action="${ctx}/backstage/post/save">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 字段名称:</label>
<div class="col-sm-9">
<input name="name" id="name" class="form-control" placeholder="字段名称" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 页面类型:</label>
<div class="col-sm-9">
<select class="form-control" name='reviewType' id='reviewType'>
<option value="0">终审</option>
<option value="1">工单</option>
<option value="2">一审二审</option>
<option value="3">审核填报</option>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 字段描述:</label>
<div class="col-sm-9">
<input name="fieldDesc" id="fieldDesc" class="form-control" placeholder="字段描述" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">是否必选:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="isrequired"> <i></i>启用
</label>
<label>
<input type="radio" value="0" name="isrequired"> <i></i>停用
</label>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 排序字段:</label>
<div class="col-sm-9">
<input name="sort" id="sort" class="form-control" placeholder="排序字段" class="form-control" type="text" maxlength='20' required>
</div>
</div>
</div>
<div class="col-sm-6" >
<div class="form-group">
<label class="col-sm-3 control-label is-required">是否高亮:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="isHighlight"> <i></i>
</label>
<label>
<input type="radio" value="0" name="isHighlight"> <i></i>
</label>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6" >
<div class="form-group">
<label class="col-sm-3 control-label is-required">是否可点击:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="isTap"> <i></i>
</label>
<label>
<input type="radio" value="0" name="isTap"> <i></i>
</label>
</div>
</div>
</div>
</div>
<div class="col-sm-6" >
<div class="form-group">
<label class="col-sm-3 control-label is-required">是否隐藏:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="isHide"> <i></i>
</label>
<label>
<input type="radio" value="0" name="isHide"> <i></i>
</label>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button id="savebutton" type="submit" class="btn btn-w-m btn-primary">保存</button>
<button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="ajaxDeptTreemodal" class="modal fade" tabindex="-1" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
<h4 class="modal-title">选择机构</h4>
</div>
<div class="modal-body" style=" padding: 15px 50px; ">
<ul id="departZtreeUl" class="ztree"></ul>
</div>
<div class="modal-footer">
<button type="button" data-dismiss="modal" class="btn btn-white">取消</button>
<button type="button" onclick="closedept()" class="btn btn-primary">确认</button>
</div>
</div>
</div>
</div>
<#include "/head/footadd.html" />
<script src="${ctx}/static/js/plugins/layer/layer.min.js"></script>
<script src="${ctx}/static/js/plugins/jqueryzTree/js/jquery.ztree.all.min.js"></script>
<script type="text/javascript">
var $ajaxDeptTreemodal = $('#ajaxDeptTreemodal');
function selectDeptTree(){
$ajaxDeptTreemodal.modal();
$ajaxDeptTreemodal.css("z-index",(parent.getMaxZIndex() + 1));
}
function closedept(){
$ajaxDeptTreemodal.modal('hide');
}
var _deptTree;
var setting = {
data: {
simpleData: {
enable: true
}
}, callback: {onClick: zTreeOnClick }
};
function zTreeOnClick(event, treeId, treeNode) {
$("#reviewType").val(treeNode.name);
$("#deptid").val(treeNode.id);
closedept();
};
$(document).ready(function () {
if(parent.$("#index_user_issys").val() == 0){
$("#systemAdminUse").hide();
}
parent.axgetXiaoyao("${ctx}/backstage/admin/department/showDeptJsTree",null,false,function (data) {
_deptTree = $.fn.zTree.init($("#departZtreeUl"),setting, data);
_deptTree.expandAll(true);
});
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
$("#Postform").attr("action","${ctx}/backstage/ocr/field/add");
var form1 = $('#Postform');
var error1 = $('.alert-danger', form1);
form1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: "",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#savebutton").addClass('disabled');
$("#Postform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data) {
parent.layer.closeAll('loading');
if (data.code == "OK") {
parent.toastr.success(data.message);
rolesback();
} else if (data.code == "ERRORM") {
$.each(data.message, function (name, anArray) {
$.each(anArray, function (n, value) {
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr("id", n + "-error").addClass(
"help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
} else {
$("#savebutton").addClass('removeClass');
parent.toastr.error(data.message);
}
}
});
}
});
});
function rolesback() {
parent.closeItem(window.frameElement.name);
}
</script>
</body>
</html>

@ -1,317 +0,0 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>岗位信息</title>
<#include "/head/headaddedit.html" />
<link href="${ctx}/static/js/plugins/jqueryzTree/css/metroStyle/metroStyle.css" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>信息字段编辑</h5>
</div>
<div class="ibox-content">
<div class="main-content">
<form name="Postform" method="post" id="Postform" class="form-horizontal" action="${ctx}/backstage/post/edit">
<input type="hidden" id="id" name="id" value="${id}">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 字段名称:</label>
<div class="col-sm-9">
<input name="name" id="name" class="form-control" placeholder="字段名称" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 页面类型:</label>
<div class="col-sm-9">
<select class="form-control" name='reviewType' id='reviewType'>
<option value="0">终审</option>
<option value="1">工单</option>
<option value="2">一审二审</option>
<option value="3">审核填报</option>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 字段描述:</label>
<div class="col-sm-9">
<input name="fieldDesc" id="fieldDesc" class="form-control" placeholder="字段描述" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">是否必选:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="isrequired"> <i></i>启用
</label>
<label>
<input type="radio" value="0" name="isrequired"> <i></i>停用
</label>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 排序字段:</label>
<div class="col-sm-9">
<input name="sort" id="sort" class="form-control" placeholder="字段描述" class="form-control" type="text" maxlength='20' required>
</div>
</div>
</div>
<div class="col-sm-6" >
<div class="form-group">
<label class="col-sm-3 control-label is-required">是否高亮:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="isHighlight"> <i></i>
</label>
<label>
<input type="radio" value="0" name="isHighlight"> <i></i>
</label>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6" >
<div class="form-group">
<label class="col-sm-3 control-label is-required">是否可点击:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="isTap"> <i></i>
</label>
<label>
<input type="radio" value="0" name="isTap"> <i></i>
</label>
</div>
</div>
</div>
</div>
<div class="col-sm-6" >
<div class="form-group">
<label class="col-sm-3 control-label is-required">是否隐藏:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="isHide"> <i></i>
</label>
<label>
<input type="radio" value="0" name="isHide"> <i></i>
</label>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button type="submit" class="btn btn-w-m btn-primary">保存</button>
<button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="ajaxDeptTreemodal" class="modal fade" tabindex="-1" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
<h4 class="modal-title">选择机构</h4>
</div>
<div class="modal-body" style=" padding: 15px 50px; ">
<ul id="departZtreeUl" class="ztree"></ul>
</div>
<div class="modal-footer">
<button type="button" data-dismiss="modal" class="btn btn-white">取消</button>
<button type="button" onclick="closedept()" class="btn btn-primary">确认</button>
</div>
</div>
</div>
</div>
<#include "/head/footadd.html" />
<script src="${ctx}/static/js/plugins/layer/layer.min.js"></script>
<script src="${ctx}/static/js/plugins/jqueryzTree/js/jquery.ztree.all.min.js"></script>
<script type="text/javascript">
var $ajaxDeptTreemodal = $('#ajaxDeptTreemodal');
function selectDeptTree(){
$ajaxDeptTreemodal.modal();
$ajaxDeptTreemodal.css("z-index",(parent.getMaxZIndex() + 1));
}
function closedept(){
$ajaxDeptTreemodal.modal('hide');
}
var _deptTree;
var setting = {
data: {
simpleData: {
enable: true
}
}, callback: {onClick: zTreeOnClick }
};
function zTreeOnClick(event, treeId, treeNode) {
$("#parentname").val(treeNode.name);
$("#deptid").val(treeNode.id);
closedept();
};
$(document).ready(function () {
if(parent.$("#index_user_issys").val() == 0){
$("#systemAdminUse").hide();
}
$.ajaxSettings.async = false;
parent.axgetXiaoyao("${ctx}/backstage/admin/department/showDeptJsTree",null,false,function (data) {
_deptTree = $.fn.zTree.init($("#departZtreeUl"),setting, data);
_deptTree.expandAll(true);
});
$.ajaxSettings.async = true;
parent.axgetXiaoyao('${ctx}/backstage/admin/post/getdata/' + $("#id").val(),null,false , function(data){
if(data.code == "OK"){
$("#id").val(data.data.id);
$("#postname").val(data.data.postname);
$("#postdesc").val(data.data.postdesc);
var node = _deptTree.getNodesByParam("id",String(data.data.deptid));
console.log("--node--------------" + data.data.deptid)
console.log(node)
if(undefined != node && node.length > 0){
_deptTree.selectNode(node[0]);
$("#parentname").val(node[0].name);
}
$("#sorting").val(data.data.sorting);
if(data.data.enabled == 1){
$("input:radio[name='enabled']").eq(0).attr('checked',true);
}else if(data.data.enabled == 0){
$("input:radio[name='enabled']").eq(1).attr('checked',true);
}
if(data.data.issys == 1){
$("input:radio[name='issys']").eq(0).attr('checked',true);
}else if(data.data.issys == 0){
$("input:radio[name='issys']").eq(1).attr('checked',true);
}
$("#postcode").val(data.data.postcode);
}else{
parent.toastr.error("非法请求。");
}
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
});
$("#Postform").attr("action","${ctx}/backstage/ocr/field/edit");
var form1 = $('#Postform');
var error1 = $('.alert-danger', form1);
form1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: ":hidden",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#Postform").ajaxSubmit({
headers: {"logintoken": parent.getLoginToken()},
success: function (data) {
parent.layer.closeAll('loading');
if (data.code == "OK") {
parent.toastr.success(data.message);
rolesback();
} else if (data.code == "ERRORM") {
$.each(data.message, function (name, anArray) {
$.each(anArray, function (n, value) {
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr("id", n + "-error").addClass(
"help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
} else {
parent.toastr.error(data.message);
}
}
});
}
});
});
function rolesback() {
parent.closeItem(window.frameElement.name);
}
</script>
</body>
</html>

@ -1,233 +0,0 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>信息字段管理</title>
<#include "/head/headlist.html" />
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="ibox ">
<div class="ibox-content">
<div class="ibox-content">
<form id="searcheuser" class="form-inline">
<div class="form-group">
<input name='search_name' id='search_name' class='form-control' placeholder='字段名称'/>
</div>
<div class="form-group">
<select class="form-control" name='search_reviewType' id='search_reviewType'>
<option value="0">终审</option>
<option value="1">工单</option>
<option value="2">一审二审</option>
<option value="3">审核填报</option>
</select>
</div>
<div class="form-group">
<a class="btn btn-primary btn-rounded btn-sm" onclick="refreshTable()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$('#searcheuser')[0].reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</div>
</form>
</div>
</div>
</div>
<div class="ibox-content">
<div class="row row-lg">
<div class="col-sm-12">
<div class="container-div">
<div class="btn-group-sm" id="_mybutton" role="group">
</div>
<br/>
</div>
</div>
<div class="col-sm-12 select-table table-striped" >
<table id="Post_list" ></table>
</div>
</div>
</div>
</div>
<#include "/head/footlist.html" />
</body>
</html>
<script type="text/javascript">
var _tableListPost;
var jsptoolbar = '';
var jspOperation = '';
jQuery(document).ready(function($){
parent.axgetXiaoyao("${ctx}/backstage/admin/user/toolsbarOperation?" + "resourceid=${resourceid}",null,true ,
function(data){
if(data.code == "OK"){
jsptoolbar = data.data.Jsptoolbar;
jspOperation = data.data.JspOperation;
$("#_mybutton").empty();
$(jsptoolbar).each(function (i, toolbar) {
if(toolbar.methodid != '104'){
$("#_mybutton").append('<button class="btn sbold ' + toolbar.img + '" onClick="' + toolbar.actionmethod + '(\'${resourceid}' + toolbar.methodid + '\')"> ' + ' <i class="fa ' + toolbar.methodkey + '"></i> ' + toolbar.text + '</button>&nbsp');
}
});
_tableListPost = $('#Post_list').bootstrapTable({
url: '${ctx}/ocr/field/list',
pagination: true, //是否显示分页(*
pageNumber:1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*
sidePagination: "server",
pageList: [10, 25, 50],
ajaxOptions:{
headers: {"logintoken": parent.getLoginToken()}
},
queryParams: function queryParams(params) {
return {
sortorder: params.order,
sortname: params.sort,
pagesize: params.limit,
start: (params.offset / params.limit) + 1,
search_name:'{"value":"' + $("#search_name").val() + '","op":"equal","type":"string"}',
search_reviewType:'{"value":"' + $("#search_reviewType").val() + '","op":"equal","type":"string"}',
};
},
responseHandler:function(res){
return{"rows": res.data.records, "total": res.data.total};
},
columns: [
{checkbox: true},
{ width:100,valign: "middle",field:'name',title:'字段名称',sortable:true},
{ width:150,valign: "middle",field:'reviewType',title:'字段类型',sortable:true,
formatter:function(value,oData,index) {
var listOperation = "";
if(oData.reviewType == 0){
listOperation = "终审";
}
else if(oData.reviewType == 1) {
listOperation = "工单";
}
else if(oData.reviewType == 2) {
listOperation = "一审二审";
}
else{
listOperation = "审核填报";
}
return listOperation;
}
},
{ width:150,valign: "middle",field:'fieldDesc',title:'字段描述',sortable:true},
{ width:80,valign: "middle",field:'isrequired',title:'是否必选',sortable:true,
formatter:function(value,oData,index) {
// var listOperation = "";
return (oData.data.isrequired == '1'?'启用':'停用');
}
},
{ width:80,valign: "middle",field:'sort',title:'排序字段',sortable:true},
{
width:200,
field: 'id',
title: '操作',
formatter:function(value,oData,index) {
var listOperation = "";
$(jspOperation).each(function (i, toolbar) {
listOperation = listOperation + "<a href=\"javascript:" + toolbar.actionmethod + "('${resourceid}','" + oData.id + "');\" class=\"btn " + toolbar.img + " btn-xs\")><i class=\"fa " + toolbar.methodkey + "\"></i> " + toolbar.text + " </a>&nbsp;&nbsp;";
});
return listOperation;
}
}
]
});
}
}
);
});
function getIdSelections() {
return $.map(_tableListPost.bootstrapTable('getSelections'), function(row) {
return row.id
});
}
function _useradd(jframeid){
parent._xiaoyaoOpenMenuTab('${ctx}/backstage/admin/postHtml/toSave',"添加字段信息",jframeid + '_add');
}
function updateData(jframeid,str){
var url = '${ctx}/backstage/admin/postHtml/toEdit/' + str ;
parent._xiaoyaoOpenMenuTab(url,"修改字段信息",jframeid + '_edit');
}
function _useredit(jframeid){
var str = getIdSelections() + "";
var tempstr = str.split(",");
if(str.length > 0 && tempstr.length > 1){
parent.toastr.error("每次只能修改一条信息。");
}else{
if (str.length > 0) {
updateData(jframeid,str);
} else {
parent.toastr.error("至少选择一条信息操作。");
}
}
}
function t_delete(str){
parent.layer.closeAll('loading');
// $.getJSON('${ctx}/backstage/ocr/field/delete?logintoken=' + parent.document.getElementById("logintoken").value, {id:str}, function(data){
parent.axgetXiaoyao('${ctx}/backstage/ocr/field/delete' , {id:str},false, function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
swal(data.message, "您已经永久删除了这条信息。", "success");
refreshTable();
}else{
swal(data.message, "遇到未知错误!", "error");
}
});
}
function _deletebu(sourceid){
var str = getIdSelections() + "";
var tempstr = str.split(",");
if (str.length > 0 && tempstr.length > 0) {
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "是的,我要删除!",
cancelButtonText: "让我再考虑一下…",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
t_delete(str);
} else {
swal("已取消", "您取消了删除操作!", "error");
}
});
} else {
parent.toastr.error("至少选择一条数据操作");
}
}
function _delete(sourceid,str){
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "是的,我要删除!",
cancelButtonText: "让我再考虑一下…",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
t_delete(str);
} else {
swal("已取消", "您取消了删除操作!", "error");
}
});
}
function refreshTable(sourceid){
_tableListPost.bootstrapTable('refreshOptions',{pageNumber:1});
}
</script>

@ -121,7 +121,7 @@
<div class="col-sm-9">
<div class="input-group">
<input name="treeDeptName" id="treeDeptName" type="text" placeholder="请选择归属部门" onclick="selectDeptTree()" readonly="true" required class="form-control">
<input name="departmentIds" id="departmentIds" type="hidden">
<input name="departmentId" id="departmentId" type="hidden">
<span class="input-group-addon"><i class="fa fa-search"></i></span>
</div>
</div>
@ -139,7 +139,7 @@
<input name="email" id="email" placeholder="电子邮箱" class="form-control" type="text" maxlength="30" required>
</div>
</div>
<div class="form-group" style="display: none">
<div class="form-group">
<label class="col-sm-3 control-label">岗位</label>
<div class="col-sm-9">
<select data-placeholder="选择岗位..." name="userpost" id="userpost" class="chosen-select" style="width:350px;" tabindex="2">
@ -154,7 +154,11 @@
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label"> 关联公司:</label>
<div class="col-sm-9">
<select data-placeholder="请选择公司" id="tenantselect" name="tenantselect" class="chosen-select" multiple style="width:350px;" tabindex="4">
</select>
</div>
</div>
</div>
@ -290,41 +294,8 @@
simpleData: {
enable: true
}
},
check: {
enable: true,
chkStyle: "checkbox",
chkboxType: { "Y": "", "N": "" }
},
callback: {
onCheck: zOnCheck
}
}, callback: {onClick: zTreeOnClick }
};
// 全局变量
var checks = [];
// 复选框调用
function zOnCheck(event, treeId, treeNode) {
if (treeNode.checked) {//如果是选中节点
checks.push({id: treeNode.id, name: treeNode.name});
} else {//如果是取消选中
removeCheck(treeNode.id);
}
console.log(checks)
}
// 移除元素
function removeCheck(chkid) {
$.each(checks, function (idx, item) {
if (item != undefined && item.id == chkid) {
checks.splice(idx, 1);
}
})
}
function showuserIconModel() {
$userIconModel.modal();
$userIconModel.css("z-index",(parent.getMaxZIndex() + 1));
@ -337,22 +308,6 @@
$modalDeptTree.css("z-index",(parent.getMaxZIndex() + 1));
}
function closedept(){
var tempName = "";
var tempId = "";
$.each(checks,function(name,anArray) {
if(tempName.length > 1){
tempName = tempName + "," + anArray.name;
tempId = tempId + "," + anArray.id;
}else{
tempName = tempName + anArray.name;
tempId = tempId + anArray.id;
}
});
$("#treeDeptName").val(tempName);
$("#departmentIds").val(tempId);
$modalDeptTree.modal('hide');
}
//折叠ibox
@ -368,7 +323,13 @@
$(this).hide();
$("#collapes_linkopen").show();
});
function zTreeOnClick(event, treeId, treeNode) {
$("#treeDeptName").val(treeNode.name);
$("#departmentId").val(treeNode.id);
closedept();
}
var selectConfig = {
'.chosen-select': {},
'.chosen-select-deselect': {
@ -394,7 +355,16 @@
changeRoles(userdepartmentId);
changePost(userdepartmentId);
parent.axgetXiaoyao("${ctx}/backstage/admin/tenant/listall",null,false,function (data) {
if(data.code == "OK"){
console.log(data.data)
$.each(data.data,function(name,anArray) {
console.log(anArray)
$("#tenantselect").append("<option value='" + anArray.id + "'>" + anArray.name + "</option>");
});
}
});
var config = {

@ -123,7 +123,7 @@
<div class="col-sm-9">
<div class="input-group">
<input name="treeDeptName" id="treeDeptName" type="text" placeholder="请选择归属部门" onclick="selectDeptTree()" readonly="true" required class="form-control">
<input name="departmentIds" id="departmentIds" type="hidden">
<input name="departmentId" id="departmentId" type="hidden">
<span class="input-group-addon"><i class="fa fa-search"></i></span>
</div>
</div>
@ -141,7 +141,7 @@
<input name="email" id="email" placeholder="电子邮箱" class="form-control" type="text" maxlength="30" required>
</div>
</div>
<div class="form-group" style="display: none">
<div class="form-group">
<label class="col-sm-3 control-label">岗位:</label>
<div class="col-sm-9">
<select data-placeholder="选择岗位..." name="userpost" id="userpost" class="form-control" style="width:350px;" tabindex="2">
@ -157,7 +157,11 @@
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label"> 关联公司:</label>
<div class="col-sm-9">
<select data-placeholder="请选择公司" id="tenantselect" name="tenantselect" class="chosen-select" multiple style="width:350px;" tabindex="4">
</select>
</div>
</div>
</div>
@ -282,40 +286,8 @@
simpleData: {
enable: true
}
},
check: {
enable: true,
chkStyle: "checkbox",
chkboxType: { "Y": "", "N": "" }
},
callback: {
onCheck: zOnCheck
}
}, callback: {onClick: zTreeOnClick }
};
// 全局变量
var checks = [];
// 复选框调用
function zOnCheck(event, treeId, treeNode) {
if (treeNode.checked) {//如果是选中节点
checks.push({id: treeNode.id, name: treeNode.name});
} else {//如果是取消选中
removeCheck(treeNode.id);
}
console.log(checks)
}
// 移除元素
function removeCheck(chkid) {
$.each(checks, function (idx, item) {
if (item != undefined && item.id == chkid) {
checks.splice(idx, 1);
}
})
}
var selectConfig = {
'.chosen-select': {},
'.chosen-select-deselect': {
@ -344,21 +316,6 @@
$modalDeptTree.css("z-index",(parent.getMaxZIndex() + 1));
}
function closedept(){
var tempName = "";
var tempId = "";
$.each(checks,function(name,anArray) {
if(tempName.length > 1){
tempName = tempName + "," + anArray.name;
tempId = tempId + "," + anArray.id;
}else{
tempName = tempName + anArray.name;
tempId = tempId + anArray.id;
}
});
$("#treeDeptName").val(tempName);
$("#departmentIds").val(tempId);
$modalDeptTree.modal('hide');
}
//折叠ibox
@ -374,7 +331,13 @@
$(this).hide(); F
$("#collapes_linkopen").show();
});
function zTreeOnClick(event, treeId, treeNode) {
$("#treeDeptName").val(treeNode.name);
$("#departmentId").val(treeNode.id);
closedept();
}
$(document).ready(function () {
@ -384,6 +347,20 @@
changePost(userdepartmentId);
parent.axgetXiaoyao("${ctx}/backstage/admin/tenant/listall",null,false,function (data) {
if(data.code == "OK"){
console.log(data.data)
$.each(data.data,function(name,anArray) {
console.log(anArray)
$("#tenantselect").append("<option value='" + anArray.id + "'>" + anArray.name + "</option>");
});
}
});
parent.axgetXiaoyao("${ctx}/backstage/admin/department/showDeptJsTree",null,false,function (data) {
_deptTree = $.fn.zTree.init($("#departZtreeUl"),setting, data);
_deptTree.expandAll(true);
@ -402,23 +379,16 @@
$("#email").val(usermodel.email);
$("#nationid").val(usermodel.nationid);
var tempId = "";
$.each(usermodel.deptlist,function (index,deptDate){
if(null != deptDate){
var node = _deptTree.getNodeByParam("id",deptDate.id);
// _deptTree.selectNode(node);
_deptTree.checkNode(node,true,true,true);
}
if(tempId.length > 1){
tempId = tempId + "," + deptDate.id;
}else{
tempId = tempId + deptDate.id;
}
});
var nodeId = usermodel.departmentId;
if(undefined != nodeId && null != nodeId){
var node = _deptTree.getNodeByParam("id",nodeId);
_deptTree.selectNode(node);
}
$("#departmentIds").val(tempId);
$("#treeDeptName").val(usermodel.departname);
$("#departmentId").val(usermodel.departmentId);
if(usermodel.enabled == 1){
$("input:radio[name='enabled']").eq(0).attr('checked',true);
@ -432,6 +402,12 @@
$("input:radio[name='usex']").eq(1).attr('checked',true);
}
$.each(usermodel.tenantList,function(name,anArray) {
$("#tenantselect option[value='" + anArray.id + "']").attr("selected",true);
});
}else{
parent.toastr.error("非法请求。");
//rolesback();

@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<title>[OCR]后台管理 - 登录</title>
<title>[xiaoyao]后台管理 - 登录</title>
<meta name="keywords" content="后台管理">
<meta name="description" content="后台管理">
<link href="${ctx}/static/css/bootstrap.min.css" rel="stylesheet">
@ -34,10 +34,10 @@
<div class="col-sm-7">
<div class="signin-info">
<div class="logopanel m-b">
<h1>[OCR]</h1>
<h1>[xiaoyao]</h1>
</div>
<div class="m-b"></div>
<h4>欢迎使用 <strong>[OCR]后台管理</strong></h4>
<h4>欢迎使用 <strong>[xiaoyao]后台管理</strong></h4>
<ul class="m-b">
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> 优势一</li>
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> 优势二</li>
@ -52,7 +52,7 @@
<input type="hidden" name="projectpath" id="projectpath" value="${ctx}">
<form name="signupForm" method="post">
<h4 class="no-margins">登录:</h4>
<p class="m-t-md">登录到 [OCR] 后台管理</p>
<p class="m-t-md">登录到 [xiaoyao] 后台管理</p>
<input name="txtUsername" type="text" class="form-control uname" placeholder="用户名" />
<input name="txtPassword" type="password" class="form-control pword" placeholder="密码" />
<div class="input-group m-t m-b">

@ -5,7 +5,6 @@ import cn.jyjz.xiaoyao.common.base.vo.User;
import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@ -24,8 +23,6 @@ public interface UserTokenService {
*/
User findByLoginname(String loginname);
List<User> findByLoginNameList(String[] loginname);
/**
*
* @param phone

@ -1,36 +1,32 @@
package cn.jyjz.xiaoyao.common.base.util;
import com.sun.xml.messaging.saaj.util.ByteOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.*;
import java.util.List;
import java.util.Map;
public class ObjectUtils extends org.springframework.util.ObjectUtils {
public static boolean isNotEmpty(Object obj) {
return !isEmpty(obj);
}
public class ObjectUtils {
public static Object clone(Map obj) {
public static Object clone(Map obj){
Object cloneObj = null;
ByteOutputStream bos = new ByteOutputStream();
try {
ObjectOutputStream oss = new ObjectOutputStream(bos);
oss.writeObject(obj);
oss.close();
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bis);
cloneObj = ois.readObject();
ois.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
return cloneObj;
}
}

@ -124,9 +124,6 @@ public class SearchQuery implements java.io.Serializable{
public void addGreaterEqual(String field,Date value){
addQuery(field,value, SearchQueryConstant.SEARCH_GREATER_EQUAL);
}
public void addGreaterEqual(String field,Long value){
addQuery(field,value, SearchQueryConstant.SEARCH_GREATER_EQUAL);
}
public void addLess(String field,Integer value){
addQuery(field,value, SearchQueryConstant.SEARCH_LESS);
}
@ -158,10 +155,6 @@ public class SearchQuery implements java.io.Serializable{
addQuery(field,value, SearchQueryConstant.SEARCH_LESS_EQUAL);
}
public void addLessEqual(String field,Long value){
addQuery(field,value, SearchQueryConstant.SEARCH_LESS_EQUAL);
}
public void addRulesOp(String field,String rulesOp){
SearchQueryForm searchQueryForm = new SearchQueryForm();
if(query.get(field)!=null){

@ -151,9 +151,8 @@ public class SearchQueryFormat {
if(StringUtils.isNotBlank(searchQueryForm.getOp())
&& searchQueryForm.getOp().equals(SearchQueryConstant.SEARCH_EQUAL)){
String upperCase = entry.getKey().toUpperCase();
String queryFiled = obj.getQueryFiled(upperCase);
queryWrapper.eq(queryFiled,searchQueryForm.getValue());
queryWrapper.eq(obj.getQueryFiled(entry.getKey().toUpperCase()),searchQueryForm.getValue());
}else if(StringUtils.isNotBlank(searchQueryForm.getOp())
&& searchQueryForm.getOp().equals(SearchQueryConstant.SEARCH_LIKE)){

@ -60,7 +60,7 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
String[] excludespath = systemopenurlService.getOpenUrl();
//不需要过滤的url
String[] excludesOther = {"/static","/json",".js",".css",".ico",".jpg",".png",".pcm","/druid","/doc.html","/swagger-ui.html","/swagger-resources","/webjars/**","/v2/api-docs","/modeler","/app"};
String[] excludesOther = {"/static","/json",".js",".css",".ico",".jpg",".png",".pcm","/druid","/doc.html","/swagger-ui.html","/swagger-resources","/webjars/**","/v2/api-docs"};
String[] urls = ArrayUtils.addAll(excludespath, excludesOther);

@ -136,7 +136,7 @@ public class MyAuthenticationProvider implements AuthenticationProvider {
//判断账号是否存在
if(!"admin".equals(loginname) && userTokenService.listLoginNameCount(agentcode,loginname).intValue() <= 0){
throw new AuthenticationServiceException("账号或企业编码不存在!");
throw new AuthenticationServiceException("账号不存在!");
}
//数据库查询用户对象

@ -101,36 +101,7 @@ public class DepartmentController extends BaseController{
this.departmentService.clearDeptCacheById(tab.getId().toString());
return ResultVoUtil.success();
}
/**
*form
*mail.zhangyong@gmail.com
*2021-11-30 18:01:02
**/
@PostMapping("/updateflowable")
public ResultVo updateflowable(HttpServletResponse response,HttpServletRequest request) throws IOException{
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
//流程主键
String processdefinitionid = request.getParameter("Processdefinitionid");
//机构主键
String deptid = request.getParameter("deptid");
//流程关键,对应流程的”目标命名空间“
String category = request.getParameter("category");
Department department = this.departmentService.selectDeptById(deptid);
department.setProcessdefinitionid(processdefinitionid);
department.setCategory(category);
department.setUpdatetime(System.currentTimeMillis());
department.setUpdateuser(userToken.getLoginname());
if(this.departmentService.updateById(department)){
//清理缓存信息
this.departmentService.clearDeptCacheById(department.getId().toString());
return ResultVoUtil.success();
}
return ResultVoUtil.error();
}
/**
*
*mail.zhangyong@gmail.com

@ -196,10 +196,8 @@ public class UserController extends BaseController{
//角色主键数组
String[] rolesid = request.getParameterValues("rolesid");
String departmentIds = request.getParameter("departmentIds");
//保存用户信息
int isok = this.userService.save(tab, rolesid,departmentIds);
int isok = this.userService.save(tab, rolesid);
if (isok > 0) {
String[] tenantselect = request.getParameterValues("tenantselect");
@ -254,10 +252,8 @@ public class UserController extends BaseController{
//角色主键数组
String[] rolesid = request.getParameterValues("rolesid");
String departmentIds = request.getParameter("departmentIds");
//保存用户信息
int isok = this.userService.editUser(tab, rolesid,departmentIds);
int isok = this.userService.editUser(tab, rolesid);
if (isok > 0) {
String[] tenantselect = request.getParameterValues("tenantselect");

@ -52,7 +52,6 @@ public class Department implements BaseDto,java.io.Serializable {
@Schema(description = "上一级部门主键默认为0表示为第一级数据对象非0情况表示为有上一级数据对象")
@TableField(value="PARENTID")
@JsonSerialize(using = ToStringSerializer.class)
private Long parentid;
@Schema(description = "记录根级部门主键用于记录子部门所属根节点主键默认为0只有一层节点记录上一级节点主键")
@ -130,38 +129,7 @@ public class Department implements BaseDto,java.io.Serializable {
@Schema(description = "更新时间")
@TableField(value="UPDATETIME")
private Long updatetime;
@Schema(description = "对应的Service名主要是spring的service名")
@TableField(value="SERVICENAME")
private String servicename;
@Schema(description = "内置表单使用flowable表单0使用本地数据1使用flowable表单3:外置表单4其他自定义表单")
@TableField(value="BUILTFORM")
private Integer builtform;
@Schema(description = "表单地址,用户展示用户表单使用")
@TableField(value="FORMURL")
private String formurl;
@Schema(description = "表单详情")
@TableField(value="FORMDETAIL")
private String formdetail;
@Schema(description = "表单分类")
@TableField(value="FORMTYPE")
private String formtype;
@Schema(description = "流程定义id")
@TableField(value="PROCESSDEFINITIONID")
private String processdefinitionid;
@Schema(description = "公司类型0租户1主体")
@TableField(value="TYPEDEPT")
private Integer typedept;
@Schema(description = "对应的工作流编码,与工作流中的命名空间对应")
@TableField(value="CATEGORY")
private String category;
//子集机构的集合
@TableField(exist = false)
private List<Department> listchilddept;
@ -197,15 +165,7 @@ public class Department implements BaseDto,java.io.Serializable {
new SimpleEntry<>("CREATEUSER","createuser"),
new SimpleEntry<>("CREATEDATE","createdate"),
new SimpleEntry<>("UPDATEUSER","updateuser"),
new SimpleEntry<>("UPDATETIME","updatetime"),
new SimpleEntry<>("SERVICENAME","servicename"),
new SimpleEntry<>("BUILTFORM","builtform"),
new SimpleEntry<>("FORMURL","formurl"),
new SimpleEntry<>("FORMDETAIL","formdetail"),
new SimpleEntry<>("FORMTYPE","formtype"),
new SimpleEntry<>("PROCESSDEFINITIONID","processdefinitionid"),
new SimpleEntry<>("TYPEDEPT","typedept"),
new SimpleEntry<>("CATEGORY","category")
new SimpleEntry<>("UPDATETIME","updatetime")
)
.collect(Collectors.toMap(SimpleEntry::getKey, SimpleEntry::getValue));
@Override

@ -172,22 +172,18 @@ public class User implements BaseDto,java.io.Serializable {
//用于记录用户对应的顶级机构主键
@TableField(exist = false)
private Long departmentRootId = 0L;
//
// //租户关系
// @TableField(exist = false)
// List<Tenant> tenantList;
//用户对应的部门信息,映射文件中对应的字段信息
//租户关系
@TableField(exist = false)
List<Tenant> tenantList;
//用户对应的部门信息,映射文件中对应的字段信息
@JsonIgnore
@TableField(exist = false)
private List<Department> deptlist = new ArrayList<Department>(0);
//前端菜单展示列表权限
@TableField(exist = false)
private List<SFrontmenuT> frontmenuTList = new ArrayList<>();
//临时保存集合使用
@TableField(exist = false)
private List tempList = new ArrayList<>();
public UserToken getUserToken(){
@ -219,7 +215,7 @@ public class User implements BaseDto,java.io.Serializable {
Iterator<Department> it = deptlist.iterator();
StringBuffer sb = new StringBuffer();
while (it.hasNext()) {
if (it.hasNext()) {
Department dept = it.next();
if (null != sb && sb.length() > 0) {

@ -32,13 +32,7 @@ public interface DepartmentService extends BaseService<Department> {
* ,false
*/
public List<Department> listDepartByUser(User user, boolean enabled);
/**
*
* @param category
* @return
*/
List<Department> listByDeptNo(String category);
/**
* ,
* @param id

@ -87,7 +87,7 @@ public interface UserService extends BaseService<User> {
* @param rolesid
* @return
*/
int save(User user, String[] rolesid,String departmentIds);
int save(User user, String[] rolesid);
/**
* ,
@ -108,7 +108,7 @@ public interface UserService extends BaseService<User> {
* @param user
* @return
*/
int editUser(User user, String[] rolesid,String departmentIds);
int editUser(User user, String[] rolesid);
/**
* userDefaultPassword123456

@ -205,18 +205,7 @@ public class DepartmentServiceImpl extends BaseServiceImpl<DepartmentMybatisDao,
return list;
}
/**
*
* @param category
* @return
*/
public List<Department> listByDeptNo(String category){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("CATEGORY",category);
return this.selectSearchList(queryWrapper);
}
/**
*
* @param roleid
@ -288,7 +277,7 @@ public class DepartmentServiceImpl extends BaseServiceImpl<DepartmentMybatisDao,
jsoncell.put("id", departmentVo.getId().toString());
jsoncell.put("pId",departmentVo.getpId().toString());
jsoncell.put("name",departmentVo.getName());
jsoncell.put("deptNo",departmentVo.getDeptNo());
jsoncells.add(jsoncell);
}

@ -171,7 +171,7 @@ public class ResourcesServiceImpl extends BaseServiceImpl<ResourcesMybatisDao,Re
//缓存中获取资源集合
Map<Long,List<Resources>> mapResources = iCacheManager.get(CacheAdminConstants.SYS_RESOURCE_ALL,CacheAdminConstants.SYS_RESOURCE_ALL_KEY);
// if(null == mapResources){
if(null == mapResources){
synchronized (this){
//获取角色集合
@ -205,7 +205,7 @@ public class ResourcesServiceImpl extends BaseServiceImpl<ResourcesMybatisDao,Re
//查询角色和资源对应的方法集合
}
// }
}
return mapResources;
}

@ -105,7 +105,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMybatisDao,User> imple
List<Department> departmentList = this.departmentMybatisDao.selectDeptByUserid(user.getId());
user.formatDeptlist(departmentList);
//user.setTenantList(this.userTenantService.listUserTenant(user.getId()));
user.setTenantList(this.userTenantService.listUserTenant(user.getId()));
//返回用户前端菜单权限列表
List<SFrontmenuT> frontmenuTList1 = isFrontmenuTService.queryUserMenuById(user.getLoginname());
@ -136,7 +136,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMybatisDao,User> imple
List<Department> departmentList = this.departmentMybatisDao.selectDeptByUserid(user.getId());
user.formatDeptlist(departmentList);
//user.setTenantList(this.userTenantService.listUserTenant(user.getId()));
user.setTenantList(this.userTenantService.listUserTenant(user.getId()));
//返回用户前端菜单权限列表
List<SFrontmenuT> frontmenuTList1 = isFrontmenuTService.queryUserMenuById(user.getLoginname());
@ -283,7 +283,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMybatisDao,User> imple
*/
@Override
@Transactional
public int save(User user, String[] rolesid,String departmentIds){
public int save(User user, String[] rolesid){
//spring密码加密啊算法
BCryptPasswordEncoder bcryptPasswordEncoder = new BCryptPasswordEncoder();
@ -299,18 +299,12 @@ public class UserServiceImpl extends BaseServiceImpl<UserMybatisDao,User> imple
isok = this.usermybatisdao.insert(user);
//保存用户是否成功
if(isok > 0){
String[] deptids = departmentIds.split(",");
for(String dids:deptids){
Userobject uo = new Userobject();
uo.setUserid(user.getId());
uo.setDepartid(Long.parseLong(dids));
//保存用户与部门的关系
this.userobjectMybatisDao.insert(uo);
}
Userobject uo = new Userobject();
uo.setUserid(user.getId());
uo.setDepartid(user.getDepartmentId());
//保存用户与部门的关系
this.userobjectMybatisDao.insert(uo);
//判断接收的角色是否为空,如果为空用户角色使用默认角色
if(null != rolesid && rolesid.length > 0){
@ -432,7 +426,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMybatisDao,User> imple
*/
@Override
@Transactional
public int editUser(User user,String[] rolesid,String departmentIds){
public int editUser(User user,String[] rolesid){
//获得数据库中用户信息
User olduser = this.usermybatisdao.selectById(user.getId());
@ -448,27 +442,17 @@ public class UserServiceImpl extends BaseServiceImpl<UserMybatisDao,User> imple
queryWrapper.eq("USERID",user.getId());
//判断修改前用户的机构主键是否一致,如果不一致需要修改
// if(!user.getDepartmentId().equals(olduser.getDepartmentId())){
if(!user.getDepartmentId().equals(olduser.getDepartmentId())){
//删除原有用户与机构的关联关系
this.userobjectMybatisDao.delete(queryWrapper);
String[] deptids = departmentIds.split(",");
for(String dids:deptids){
Userobject uo = new Userobject();
uo.setUserid(user.getId());
uo.setDepartid(Long.parseLong(dids));
//保存用户与部门的关系
this.userobjectMybatisDao.insert(uo);
}
// Userobject uo = new Userobject();
// uo.setUserid(user.getId());
// uo.setDepartid(user.getDepartmentId());
// //保存用户与部门的关系
// this.userobjectMybatisDao.insert(uo);
// }
Userobject uo = new Userobject();
uo.setUserid(user.getId());
uo.setDepartid(user.getDepartmentId());
//保存用户与部门的关系
this.userobjectMybatisDao.insert(uo);
}
//判断接收的角色是否为空
if(null != rolesid && rolesid.length > 0){
@ -630,11 +614,9 @@ public class UserServiceImpl extends BaseServiceImpl<UserMybatisDao,User> imple
User user = this.usermybatisdao.selectById(id);
if(null != user){
List<SFrontmenuT> frontmenuTList1 = isFrontmenuTService.queryUserMenuById(user.getLoginname());
user.setFrontmenuTList(frontmenuTList1);
List<Department> departmentList = this.departmentMybatisDao.selectDeptByUserid(user.getId());
user.formatDeptlist(departmentList);
//user.setTenantList(this.userTenantService.listUserTenant(user.getId()));
user.setTenantList(this.userTenantService.listUserTenant(user.getId()));
}
return user;

@ -26,8 +26,10 @@ import cn.jyjz.xiaoyao.common.base.exception.MyTokenExpiredException;
import cn.jyjz.xiaoyao.framework.security.model.AdminUserModel;
import cn.jyjz.xiaoyao.framework.security.service.FlowableUserLoginService;
import cn.jyjz.xiaoyao.framework.security.utils.JwtUtils;
import java.util.*;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@ -73,16 +75,16 @@ public class UserTokenServiceImpl implements UserTokenService {
private UserTenantService userTenantService;
@Resource
private DepartmentService departmentService;
@Resource
private OauthuserService oauthuserService;
@Resource
private UserTokenOnlineService userTokenOnlineService;
@Autowired
private TenantService tenantService;
public User findByLoginname(String loginname) {
cn.jyjz.xiaoyao.admin.dataobject.User userData = userService.findByLoginname(loginname);
@ -100,16 +102,6 @@ public class UserTokenServiceImpl implements UserTokenService {
return user;
}
@Override
public List<User> findByLoginNameList(String[] loginname) {
List<User> userList = new ArrayList<>();
for (String userName : loginname) {
User user = this.findByLoginname(userName);
userList.add(user);
}
return userList;
}
public User findByPhone(String phone) {
cn.jyjz.xiaoyao.admin.dataobject.User userData = userService.findByPhone(phone);
@ -128,7 +120,7 @@ public class UserTokenServiceImpl implements UserTokenService {
}
public User findByUserid(Long userid) {
cn.jyjz.xiaoyao.admin.dataobject.User userData = userService.findById(userid);
if(null == userData){
return null;
@ -138,7 +130,7 @@ public class UserTokenServiceImpl implements UserTokenService {
//userData.setDepartname(department.getDepartname());
userData.setDepartmentRootId(department.getId());
}
User user = BeanUtil.copyProperties(userData,User.class);
return user;
}
@ -182,7 +174,7 @@ public class UserTokenServiceImpl implements UserTokenService {
return null;
}
AdminUserModel adminUserModel = (AdminUserModel) this.getSessionUserFromCache(userToken.getTokenid());
if(null != adminUserModel){
return adminUserModel;
}
@ -246,11 +238,11 @@ public class UserTokenServiceImpl implements UserTokenService {
Map<String,Object> rolesShowleave = this.rolesService.getRolesConditionMap(user);
SearchQuery searchQueryrolesShowleave = this.rolesService.getRolesCondition(rolesShowleave);
user.setRolesShowleave(rolesShowleave);
//user.setTenantList(this.userTenantService.listUserTenant(user.getId()));
user.setTenantList(this.userTenantService.listUserTenant(user.getId()));
user.setSearchQueryrolesShowleave(searchQueryrolesShowleave);
userVo = BeanUtil.copyProperties(user,User.class);
//查询第三方登录用户对象
List<Oauthuser> oauthuserList = oauthuserService.selectByUserId(userVo.getId().toString());
userVo.setOauthUserList(oauthuserList);
@ -270,7 +262,7 @@ public class UserTokenServiceImpl implements UserTokenService {
Object objectflow = flowableUserLoginService.flowableUserLogin(adminUserModel.getUser());
adminUserModel.setFlowableUser(objectflow);
}
return adminUserModel;
}
@ -297,39 +289,39 @@ public class UserTokenServiceImpl implements UserTokenService {
*/
public ResultVo refreshToken(UserToken userToken, String logintoken, HttpServletRequest request){
userToken = JwtUtils.decode(logintoken);
log.error("TokenExpiredException-------刷新token===============================2====logintoken==={}--",logintoken);
//原始缓存
String sourcetokenid = userToken.getTokenid();
//删除原缓存信息
iCacheManager.remove(CacheConstants.USER_MODEL_NAME,sourcetokenid);
log.error("TokenExpiredException-------刷新token===============================4====userToken==={}--",userToken);
if(!UserUtils.validateId(userToken)){
return ResultVoUtil.error();
}
//刷新缓存
String newToken = JwtUtils.getRefreshToken(userToken);
log.error("TokenExpiredException-------刷新token===============================3====newToken==={}--",newToken);
if(StringUtils.isBlank(newToken)){
SecurityContextHolder.getContext().setAuthentication(null);
return ResultVoUtil.error();
}
//重新查询用户基本信息
User user = this.findByLoginname(userToken.getLoginname());
AdminUserModel adminUserModel = (AdminUserModel) this.formatUserToAdminUserModel(user);
//用户信息缓存
this.saveSessionUser(adminUserModel);
//更新S_USERONLINE_T 表信息
this.userTokenOnlineService.updateModel(sourcetokenid,adminUserModel.getId());
//用户名不等于空 并且未认证过 进行登录验证
if (adminUserModel != null) {
// 验证通过 构建Secruity登录对象
@ -339,14 +331,14 @@ public class UserTokenServiceImpl implements UserTokenService {
log.error("TokenExpiredException-------刷新token===============================1={}",token);
return ResultVoUtil.success(token);
}
/**
* spring
* @param obj
* @param request
*/
public void updateAuthentication(Object obj,HttpServletRequest request){
AdminUserModel adminUserModel = (AdminUserModel) obj;
//用户名不等于空 并且未认证过 进行登录验证
if (adminUserModel != null) {
@ -391,7 +383,7 @@ public class UserTokenServiceImpl implements UserTokenService {
return true;
}
/**
*
* @param otherno
@ -422,7 +414,7 @@ public class UserTokenServiceImpl implements UserTokenService {
return userTenantService.listLoginNameCount(otherno,loginname);
}
/**
*
* @param otherno
@ -440,9 +432,9 @@ public class UserTokenServiceImpl implements UserTokenService {
*/
@Override
public boolean getTenantStatus(String agentcode){
LambdaQueryWrapper<Department> tenantLambdaQueryWrapper = new LambdaQueryWrapper<>();
tenantLambdaQueryWrapper.eq(Department::getDescription,agentcode);
Department department = departmentService.getOne(tenantLambdaQueryWrapper);
return department != null && department.getEnabled() == 1;
LambdaQueryWrapper<Tenant> tenantLambdaQueryWrapper = new LambdaQueryWrapper<>();
tenantLambdaQueryWrapper.eq(Tenant::getOtherno,agentcode);
Tenant tenant = tenantService.getOne(tenantLambdaQueryWrapper);
return tenant != null && tenant.getStatus() == 0;
}
}

@ -15,9 +15,6 @@ public class DepartmentVo implements Serializable{
private String name;
private String deptNo;
@JsonSerialize(using = ToStringSerializer.class)
public Long getId() {
return id;
@ -43,12 +40,4 @@ public class DepartmentVo implements Serializable{
public void setName(String name) {
this.name = name;
}
public String getDeptNo() {
return deptNo;
}
public void setDeptNo(String deptNo) {
this.deptNo = deptNo;
}
}

@ -26,14 +26,6 @@
<result column="CREATEDATE" property="createdate" jdbcType="BIGINT"/>
<result column="UPDATEUSER" property="updateuser" jdbcType="VARCHAR"/>
<result column="UPDATETIME" property="updatetime" jdbcType="BIGINT"/>
<result column="SERVICENAME" property="servicename" jdbcType="VARCHAR"/>
<result column="BUILTFORM" property="builtform" jdbcType="INTEGER"/>
<result column="FORMURL" property="formurl" jdbcType="VARCHAR"/>
<result column="FORMDETAIL" property="formdetail" jdbcType="VARCHAR"/>
<result column="FORMTYPE" property="formtype" jdbcType="VARCHAR"/>
<result column="PROCESSDEFINITIONID" property="processdefinitionid" jdbcType="VARCHAR"/>
<result column="TYPEDEPT" property="typedept" jdbcType="INTEGER"/>
<result column="CATEGORY" property="category" jdbcType="VARCHAR"/>
<collection property="listchilddept" select="selectChildDeptEnabled" javaType="java.util.ArrayList" column="{id=id}"/>
</resultMap>
<resultMap id="BaseResultMap_only" type="cn.jyjz.xiaoyao.admin.dataobject.Department">
@ -61,14 +53,6 @@
<result column="CREATEDATE" property="createdate" jdbcType="BIGINT"/>
<result column="UPDATEUSER" property="updateuser" jdbcType="VARCHAR"/>
<result column="UPDATETIME" property="updatetime" jdbcType="BIGINT"/>
<result column="SERVICENAME" property="servicename" jdbcType="VARCHAR"/>
<result column="BUILTFORM" property="builtform" jdbcType="INTEGER"/>
<result column="FORMURL" property="formurl" jdbcType="VARCHAR"/>
<result column="FORMDETAIL" property="formdetail" jdbcType="VARCHAR"/>
<result column="FORMTYPE" property="formtype" jdbcType="VARCHAR"/>
<result column="PROCESSDEFINITIONID" property="processdefinitionid" jdbcType="VARCHAR"/>
<result column="TYPEDEPT" property="typedept" jdbcType="INTEGER"/>
<result column="CATEGORY" property="category" jdbcType="VARCHAR"/>
<collection property="listchilddept" select="selectChildDeptEnabled" javaType="java.util.ArrayList" column="{id=id}"/>
</resultMap>
<sql id="Base_Column_List">
@ -95,15 +79,7 @@
CREATEUSER AS createuser,
CREATEDATE AS createdate,
UPDATEUSER AS updateuser,
UPDATETIME AS updatetime,
SERVICENAME AS servicename,
BUILTFORM AS builtform,
FORMURL AS formurl,
FORMDETAIL AS formdetail,
FORMTYPE AS formtype,
PROCESSDEFINITIONID AS processdefinitionid,
TYPEDEPT AS typedept,
CATEGORY AS category
UPDATETIME AS updatetime
</sql>
<sql id="Base_Where">
@ -133,14 +109,6 @@
<if test="createdate != null"> and CREATEDATE ${createdate.dataOp} ${createdate.likestar}#{createdate.value}${createdate.likeend}</if>
<if test="updateuser != null"> and UPDATEUSER ${updateuser.dataOp} ${updateuser.likestar}#{updateuser.value}${updateuser.likeend}</if>
<if test="updatetime != null"> and UPDATETIME ${updatetime.dataOp} ${updatetime.likestar}#{updatetime.value}${updatetime.likeend}</if>
<if test="servicename != null"> and SERVICENAME ${servicename.dataOp} ${servicename.likestar}#{servicename.value}${servicename.likeend}</if>
<if test="builtform != null"> and BUILTFORM ${builtform.dataOp} ${builtform.likestar}#{builtform.value}${builtform.likeend}</if>
<if test="formurl != null"> and FORMURL ${formurl.dataOp} ${formurl.likestar}#{formurl.value}${formurl.likeend}</if>
<if test="formdetail != null"> and FORMDETAIL ${formdetail.dataOp} ${formdetail.likestar}#{formdetail.value}${formdetail.likeend}</if>
<if test="formtype != null"> and FORMTYPE ${formtype.dataOp} ${formtype.likestar}#{formtype.value}${formtype.likeend}</if>
<if test="processdefinitionid != null"> and PROCESSDEFINITIONID ${processdefinitionid.dataOp} ${processdefinitionid.likestar}#{processdefinitionid.value}${processdefinitionid.likeend}</if>
<if test="typedept != null"> and TYPEDEPT ${typedept.dataOp} ${typedept.likestar}#{typedept.value}${typedept.likeend}</if>
<if test="category != null"> and CATEGORY ${category.dataOp} ${category.likestar}#{category.value}${category.likeend}</if>
<if test="userid != null"> and USERID ${userid.dataOp} ${userid.likestar}#{userid.value}${userid.likeend}</if>
<if test="listdept != null">
and DEPARTID in
@ -168,8 +136,7 @@
select
ID AS id,
DEPARTNAME AS name,
PARENTID AS pId,
DEPTNO AS deptNo
PARENTID AS pId
from S_DEPARTMENT_T WHERE 1=1
<if test="enabled != null"> and ENABLED ${enabled.dataOp} ${enabled.likestar}#{enabled.value}${enabled.likeend}</if>
<if test="parentid != null"> and PARENTID ${parentid.dataOp} ${parentid.likestar}#{parentid.value}${parentid.likeend}</if>
@ -186,8 +153,7 @@
select
ID AS id,
DEPARTNAME AS name,
PARENTID AS pId,
DEPTNO AS deptNo
PARENTID AS pId
from S_DEPARTMENT_T WHERE ID = #{id}
</select>
<select id="selectRootidById" resultMap="BaseResultMap_only" parameterType="java.lang.Long">
@ -221,15 +187,7 @@
d.CREATEUSER AS createuser,
d.CREATEDATE AS createdate,
d.UPDATEUSER AS updateuser,
d.UPDATETIME AS updatetime,
d.SERVICENAME AS servicename,
d.BUILTFORM AS builtform,
d.FORMURL AS formurl,
d.FORMDETAIL AS formdetail,
d.FORMTYPE AS formtype,
d.PROCESSDEFINITIONID AS processdefinitionid,
d.TYPEDEPT AS typedept,
d.CATEGORY AS category
d.UPDATETIME AS updatetime
from S_DEPARTMENT_T d,S_USEROBJECT_T uo where uo.DEPARTID=d.ID and uo.USERID=#{id}
</select>
<!-- 查询机构启用的子集的机构信息 start-->
@ -258,15 +216,7 @@
dm.CREATEUSER AS createuser,
dm.CREATEDATE AS createdate,
dm.UPDATEUSER AS updateuser,
dm.UPDATETIME AS updatetime,
dm.SERVICENAME AS servicename,
dm.BUILTFORM AS builtform,
dm.FORMURL AS formurl,
dm.FORMDETAIL AS formdetail,
dm.FORMTYPE AS formtype,
dm.PROCESSDEFINITIONID AS processdefinitionid,
dm.TYPEDEPT AS typedept,
dm.CATEGORY AS category
dm.UPDATETIME AS updatetime
from S_DEPARTMENT_T dm,S_DEPARTMENTCHILD_T dmc where dm.ID = dmc.CHILDID and dmc.PARENTID = #{id} ORDER BY dm.SORTING DESC
</select>
</mapper>

@ -107,7 +107,7 @@
u.UPDATEUSER AS updateuser,
u.UPDATETIME AS updatetime,
u.PSDUPDATETIME AS psdupdatetime
from S_USER_T u
from S_USER_T u RIGHT JOIN S_USEROBJECT_T uo ON uo.USERID = u.ID
${ew.customSqlSegment}
</select>

@ -42,41 +42,66 @@
</trim>
</where>
<if test="page != null">
<if test="page.sortname != null"> order by ${page.sortname} ${page.sortorder}</if>
<if test="page.sortname != null"> order by ${page.sortname} ${page.sortorder}</if>
limit ${page.start}, ${page.Pagesize}
</if>
</sql>
<select id="listCount" resultType="java.lang.Long" parameterType="java.util.Map">
select count(u.ID) from s_user_t u
left join s_userobject_t uo on u.id = uo.USERID
left join s_department_t dm on dm.id = uo.DEPARTID
where u.LOGINNAME =#{loginname} and dm.DESCRIPTION = #{otherno}
select
count(ten.ID)
from
S_TENANT_T ten
where
ten.OTHERNO = #{otherno}
and
ten.ID in (
select ue.TENANTID from
S_USER_T us,
S_USER_TENANT_T ue where us.LOGINNAME = #{loginname}
)
</select>
<select id="listOthernoCount" resultType="java.lang.Long" parameterType="java.util.Map">
select
count(dm.ID)
count(ten.ID)
from
s_department_t dm
S_TENANT_T ten
where
dm.DESCRIPTION = #{otherno}
ten.OTHERNO = #{otherno}
</select>
<select id="listLoginNameCount" resultType="java.lang.Long" parameterType="java.util.Map">
select count(u.ID) from s_user_t u
left join s_userobject_t uo on u.id = uo.USERID
left join s_department_t dm on dm.id = uo.DEPARTID
where u.LOGINNAME =#{loginname} and dm.DESCRIPTION = #{otherno}
select
count(ten.ID)
from
S_TENANT_T ten
where
ten.OTHERNO = #{otherno}
and
ten.ID in (
select ue.TENANTID from
S_USER_T us,
S_USER_TENANT_T ue where us.LOGINNAME = #{loginname}
)
</select>
<select id="listMobileCount" resultType="java.lang.Long" parameterType="java.util.Map">
select count(u.ID) from s_user_t u
left join s_userobject_t uo on u.id = uo.USERID
left join s_department_t dm on dm.id = uo.DEPARTID
where u.MOBILE =#{mobile} and dm.DESCRIPTION = #{otherno}
select
count(ten.ID)
from
S_TENANT_T ten
where
ten.OTHERNO = #{otherno}
and
ten.ID in (
select ue.TENANTID from
S_USER_T us,
S_USER_TENANT_T ue where us.MOBILE = #{mobile}
)
</select>
</mapper>

@ -1,7 +1,5 @@
package cn.jyjz.flowable.config;
import cn.jyjz.xiaoyao.admin.dataobject.Department;
import cn.jyjz.xiaoyao.admin.service.DepartmentService;
import cn.jyjz.xiaoyao.oa.from.dataobject.Category;
import cn.jyjz.xiaoyao.oa.from.service.CategoryService;
import org.flowable.common.engine.api.delegate.event.FlowableEvent;
@ -23,13 +21,11 @@ public class GlobalEntityInitListener implements FlowableEventListener {
@Autowired
private CategoryService categoryService;
@Autowired
private DepartmentService departmentService;
@Override
public void onEvent(FlowableEvent flowableEvent) {
FlowableEventType type = flowableEvent.getType();
FlowableEntityEventImpl flowableEntityEvent = (FlowableEntityEventImpl) flowableEvent;
Object object = flowableEntityEvent.getEntity();
if(object instanceof ProcessDefinitionEntity){
ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity)object;
@ -41,17 +37,9 @@ public class GlobalEntityInitListener implements FlowableEventListener {
categoryService.updateById(category);
}
}
//更新机构与审批流的关联,使用“业务主体编码”与流程的“目标命名空间”字段保持一致
List<Department> departmentList = departmentService.listByDeptNo(processDefinitionEntity.getCategory());
if(null != departmentList && !departmentList.isEmpty()){
for (Department department:departmentList){
department.setServicename("taskchildPictureService");
department.setProcessdefinitionid(processDefinitionEntity.getId());
departmentService.updateDept(department);
}
}
}
}

@ -37,8 +37,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.*;
import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.MediaType;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
@ -56,7 +54,6 @@ import java.util.stream.Collectors;
@RequestMapping("/flow/task")
public class FlowTaskController extends BaseController {
private static final Logger log = LoggerFactory.getLogger(FlowTaskController.class);
@Resource
IFlowTaskService flowTaskService;
@ -145,7 +142,6 @@ public class FlowTaskController extends BaseController {
@PostMapping("/completeFlow")
@ResponseBody
public ResultVo complete(@RequestBody FlowApprove approve, HttpServletRequest request) {
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
Integer flag = flowTaskService.complete(approve, userToken, Arrays.asList(approve.getFlowTaskInfoList().get(0).getFormId()));
return flag > 0 ? ResultVoUtil.success() : ResultVoUtil.error();
@ -160,11 +156,6 @@ public class FlowTaskController extends BaseController {
@PostMapping("/completeBatchFlow")
@ResponseBody
public ResultVo completeBatch(@RequestBody FlowApprove approve, HttpServletRequest request) {
String tenantId = request.getHeader("X-Tenant-Id");
if (StringUtils.isBlank(tenantId)) {
return ResultVoUtil.error("租户主键不能为空");
}
approve.setDeptid(tenantId);
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
//任务ID
List<FlowTaskInfo> flowTaskInfoList = approve.getFlowTaskInfoList();
@ -316,22 +307,19 @@ public class FlowTaskController extends BaseController {
return ResultVoUtil.error("租户主键不能为空");
}
if (org.apache.commons.lang3.StringUtils.isNotBlank(taskName)) {
// searchQuery.addLike("fromtaskname", taskName);
searchQuery.addLike("fuzzyRetrieval", taskName);
searchQuery.addLike("fromtaskname", taskName);
}
//获取用户预设检索条件id,如果存在检索条件,则高级检索失效
String userSearchId = "";
if (StringUtils.isBlank(taskName)) {
userSearchId = request.getParameter("userSearchId");
}
//获取用户预设检索条件id
String userSearchId = request.getParameter("userSearchId");
User user = this.userService.getSessionUser(request);
if (user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))) {
flowTaskService.getMyProcessInstances(searchQuery.getQuery(), pageUtils);
} else {
flowTaskService.getMyProcessInstances(user, tenantId, searchQuery.getQuery(), pageUtils, userSearchId);
flowTaskService.getMyProcessInstances(user, tenantId, searchQuery.getQuery(), pageUtils,userSearchId);
//待办信息,增加是否查看标记
// if(StringUtils.isNotBlank(assigneeId) && assigneeId.equals(user.getId().toString())){
@ -393,10 +381,10 @@ public class FlowTaskController extends BaseController {
@RequestParam(name = "izstatus", defaultValue = "", required = false) String izstatus,
@RequestParam(name = "iztaskrrom", defaultValue = "", required = false) String iztaskrrom,
@RequestParam(name = "izuptime", defaultValue = "", required = false) String izuptime,
@RequestParam(name = "isFail", defaultValue = "false", required = false) String isFail,
HttpServletRequest request) {
SearchQuery searchQuery = new SearchQuery();
if (org.springframework.util.StringUtils.hasText(izupuser)) {
// searchQuery.addEqual("fromuserid",izupuser);
if (izupuser.contains(",")) {
String[] userIds = izupuser.split(",");
List<String> arrayData = Arrays.asList(userIds);
@ -405,8 +393,8 @@ public class FlowTaskController extends BaseController {
searchQuery.addEqual("fromuserid", izupuser);
}
}
if (StringUtils.isNotBlank(taskName)) {
searchQuery.addLike("fromtaskname", taskName);
if(StringUtils.isNotBlank(taskName)){
searchQuery.addLike("fromtaskname",taskName);
}
if (org.springframework.util.StringUtils.hasText(izproject)) {
if (izproject.contains(",")) {
@ -432,18 +420,17 @@ public class FlowTaskController extends BaseController {
if (izstatus.contains(",")) {
String[] statusIds = izstatus.split(","); // 以逗号拆分字符串
List<String> arrayData = Arrays.asList(statusIds);
SearchQueryForm searchQueryForm = new SearchQueryForm();
searchQuery.addIn("states", arrayData);
} else {
searchQuery.addEqual("states", izstatus);
}
}
if (Boolean.parseBoolean(isFail)) {
searchQuery.addEqual("isFail", "1");
}
if (org.springframework.util.StringUtils.hasText(iztaskrrom)) {
if (iztaskrrom.contains(",")) {
String[] taskrromIds = iztaskrrom.split(","); // 以逗号拆分字符串
List<String> arrayData = Arrays.asList(taskrromIds);
SearchQueryForm searchQueryForm = new SearchQueryForm();
searchQuery.addIn("fromsourceid", arrayData);
} else {
searchQuery.addEqual("fromsourceid", iztaskrrom);
@ -464,11 +451,11 @@ public class FlowTaskController extends BaseController {
// 如果开始时间不为空,则将其放入查询条件中
if (startTimeStamp != null) {
searchQuery.addGreater("fromuptimeStart", startTimeStamp);
searchQuery.addGreater("createdateStart", startTimeStamp);
}
// 如果结束时间不为空,则将其放入查询条件中
if (endTimeStamp != null) {
searchQuery.addLess("fromuptimeEnd", endTimeStamp);
searchQuery.addLess("createdateEnd", endTimeStamp);
}
} catch (ParseException e) {
// 处理日期解析异常
@ -485,7 +472,7 @@ public class FlowTaskController extends BaseController {
User user = this.userService.getSessionUser(request);
if (user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))) {
} else {
searchQuery.addEqual("thisLoginUserid", user.getLoginname());
searchQuery.addEqual("thisLoginUserid", user.getId().toString());
searchQuery.addEqual("tenantid", tenantId);
}
String searchId = request.getParameter("searchId");
@ -500,7 +487,7 @@ public class FlowTaskController extends BaseController {
Map<String, Object> query = searchQuery.getQuery();
flowTaskService.getFinalProcessInstances(query, pageUtils,user);
flowTaskService.getFinalProcessInstances(query, pageUtils);
return ResultVoUtil.success(pageUtils);
}
@ -642,8 +629,7 @@ public class FlowTaskController extends BaseController {
public ResultVo removeTask(HttpServletRequest request) {
String fromid = request.getParameter("fromid");
String taskid = request.getParameter("taskid");
String deptid = request.getParameter("deptid");
return flowTaskService.removeTask(fromid, taskid, deptid);
return flowTaskService.removeTask(fromid, taskid);
//return ResultVoUtil.success();
}
@ -663,8 +649,7 @@ public class FlowTaskController extends BaseController {
public ResultVo historyTask(HttpServletRequest request) {
String fromid = request.getParameter("fromid");
String taskid = request.getParameter("buessinessno");
String deptid = request.getParameter("deptid");
return flowTaskService.removeTask(fromid, taskid, deptid);
return flowTaskService.removeTask(fromid, taskid);
//return ResultVoUtil.success();
}
@ -680,10 +665,8 @@ public class FlowTaskController extends BaseController {
})
@GetMapping("/repetitionTask")
@ResponseBody
public ResultVo repetitionTask(HttpServletRequest request,
@RequestParam(value = "type",required = false,defaultValue = "1") Integer type) {
String tenantId = request.getHeader("X-Tenant-Id");
return flowTaskService.repetitionTask(type,tenantId);
public ResultVo repetitionTask() {
return flowTaskService.repetitionTask();
}
/**
@ -697,36 +680,9 @@ public class FlowTaskController extends BaseController {
})
@GetMapping("/repetitionTaskList")
@ResponseBody
public ResultVo repetitionTaskList(HttpServletRequest request,
@RequestParam(name = "pageNo") Integer pageNo,
@RequestParam(name = "pageSize") Integer pageSize,
@RequestParam(value = "type",required = false,defaultValue = "1") Integer type) {
String tenantId = request.getHeader("X-Tenant-Id");
Page<OcrTaskchildPicture> result = flowTaskService.repetitionTaskList(pageNo, pageSize,type,tenantId);
return ResultVoUtil.success(result);
}
/**
*
*
* @return
*/
@ApiOperation(value = "失败重试无量云", notes = "失败重试无量云")
@ApiImplicitParams({
@ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true),
})
@GetMapping("/retryPrevailCloud")
@ResponseBody
public ResultVo retryPrevailCloud(HttpServletRequest request,
@RequestParam(name = "formId") String formId) {
String tenantId = request.getHeader("X-Tenant-Id");
Boolean result = null;
try {
result = flowTaskService.retryPrevailCloud(tenantId,formId);
} catch (Exception e) {
log.error(e.getMessage());
result =false;
}
public ResultVo repetitionTaskList(@RequestParam(name = "pageNo") Integer pageNo,
@RequestParam(name = "pageSize") Integer pageSize) {
Page<OcrTaskchildPicture> result = flowTaskService.repetitionTaskList(pageNo, pageSize);
return ResultVoUtil.success(result);
}
}

@ -30,8 +30,6 @@ public class FlowApprove {
*/
private String failCauseId;
//公司主键,原机构主键
private String deptid;
/**
*
*/

@ -1,53 +0,0 @@
package cn.jyjz.flowable.listener;
import org.flowable.engine.delegate.DelegateExecution;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.io.Serializable;
/**
*
* flowable
* 1nrOfInstances3
* 2nrOfActiveInstances
* 3 nrOfCompletedInstances
*
* flag
* return flag
*/
@Component("multilnstanceCompleteTask")
public class MulitiInstanceCompleteTask implements Serializable {
private Logger log = LoggerFactory.getLogger(MulitiInstanceCompleteTask.class);
/**
*
* @param execution
* @return
* false
* true
*/
public boolean completeTask(DelegateExecution execution) {
//当前获取的会签任务数量
int nrOfActiveInstances = (int) execution.getVariable("nrOfActiveInstances");
//总的会签任务数量
int nrOfInstances = (int) execution.getVariable("nrOfInstances");
//已经完成的会签任务数量
int nrOfCompletedInstances = (int) execution.getVariable("nrOfCompletedInstances");
log.info("总的会签任务数量:" + nrOfInstances
+ "当前获取的会签任务数量:" + nrOfActiveInstances
+ " - " + "已经完成的会签任务数量:" + nrOfInstances);
if(nrOfInstances >= nrOfCompletedInstances){
return true;
}else{
return false;
}
}
}

@ -1,16 +0,0 @@
package cn.jyjz.flowable.listener;
import org.flowable.engine.delegate.DelegateExecution;
import org.springframework.stereotype.Component;
import java.io.Serializable;
@Component("mulitiInstanceTaskListener")
public class MulitiInstanceTaskListener implements Serializable {
public void completeListener(DelegateExecution execution){
// System.out.println("任务:"+execution.getId());
// System.out.println("persons:" + execution.getVariable("persons"));
// System.out.println("person" + execution.getVariable("person"));
}
}

@ -22,7 +22,7 @@ public interface IFlowInstanceService {
* @param servicename
* @return
*/
public boolean startProcessInstanceById(String procDefId, Map<String,Object> variables, HttpServletRequest request,String formid,String servicename,String deptid);
public boolean startProcessInstanceById(String procDefId, Map<String,Object> variables, HttpServletRequest request,String formid,String servicename);
/**
*
@ -32,5 +32,5 @@ public interface IFlowInstanceService {
* @param servicename
* @return
*/
public boolean startProcessInstanceById(String procDefId,String userName,String createuser, String formid,String servicename,String deptid);
public boolean startProcessInstanceById(String procDefId,String userName,String createuser, String formid,String servicename);
}

@ -13,11 +13,13 @@ import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.oa.from.dataobject.Category;
import cn.jyjz.xiaoyao.oa.from.vo.FlowUnionVo;
import cn.jyjz.xiaoyao.oa.from.vo.RepeatedTaskVo;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPictureAppro;
import cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo;
import cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.flowable.bpmn.model.UserTask;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.task.api.Task;
@ -36,18 +38,7 @@ public interface IFlowTaskService {
Category viewForm(String processId, HttpServletRequest request);
Integer complete(FlowApprove approve, UserToken userToken, List<String> formIds);
/**
*
* @param processInstanceId
* @return
*/
public UserTask getNextTasks(String processInstanceId );
/**
*
* @param task
* @return
*/
public UserTask getNextTasks(Task task);
/**
* 退
@ -63,7 +54,7 @@ public interface IFlowTaskService {
* @param
* @param processDefinition
*/
public void updateAssignee(String processInstanceId, String processDefinitionId, ProcessDefinition processDefinition,String deptid);
public void updateAssignee(String processInstanceId, String processDefinitionId, ProcessDefinition processDefinition);
void sendMsg(OcrTaskchildPicture model, UserToken userToken);
void finishedList(PageUtils pageUtils, HttpServletRequest request);
@ -99,10 +90,9 @@ public interface IFlowTaskService {
*
* @param query
* @param pageUtils
* @param user
* @return
*/
public void getFinalProcessInstances(Map<String, Object> query, PageUtils<OcrTaskchildPicture> pageUtils, User user);
public void getFinalProcessInstances(Map<String, Object> query, PageUtils<OcrTaskchildPicture> pageUtils);
/**
@ -152,14 +142,8 @@ public interface IFlowTaskService {
*
* @param processInstanceId
*/
public FlowTaskCompleteVO updateNowTaskAssignee(String processInstanceId, String processDefinitionId,String deptid);
/**
*
* @param userTask
* @param startUserId
* @return
*/
public List<String> getAssignee(UserTask userTask,String startUserId);
public FlowTaskCompleteVO updateNowTaskAssignee(String processInstanceId, String processDefinitionId);
/**
*
*
@ -186,16 +170,14 @@ public interface IFlowTaskService {
*
* @param fromid
*/
public ResultVo removeTask(String fromid, String taskid,String deptid);
public ResultVo removeTask(String fromid, String taskid);
/**
*
*
* @return
*/
ResultVo repetitionTask(Integer type, String tenantId);
Page<OcrTaskchildPicture> repetitionTaskList(Integer pageNo, Integer pageSize, Integer type, String tenantId);
ResultVo repetitionTask();
Boolean retryPrevailCloud(String tenantId, String formId) throws Exception;
Page<OcrTaskchildPicture> repetitionTaskList(Integer pageNo, Integer pageSize);
}

@ -17,8 +17,6 @@ import cn.jyjz.xiaoyao.common.base.util.StringUtils;
import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.oa.from.service.UserViewapproeService;
import lombok.extern.slf4j.Slf4j;
import org.flowable.bpmn.model.MultiInstanceLoopCharacteristics;
import org.flowable.bpmn.model.UserTask;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.runtime.ProcessInstance;
@ -31,7 +29,6 @@ import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@Slf4j
@Service
@ -48,7 +45,7 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
private UserViewapproeService userViewApproeService;
@Override
public boolean startProcessInstanceById(String procDefId, Map<String, Object> variables, HttpServletRequest request, String formid, String servicename,String deptid) {
public boolean startProcessInstanceById(String procDefId, Map<String, Object> variables, HttpServletRequest request, String formid, String servicename) {
IFormCustomService iFormCustomService = null;
if (StringUtils.isNotBlank(servicename)) {
@ -87,24 +84,10 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
try {
variables.put("businessKey", businessKey);
//获取下一个节点
UserTask userTask = this.flowTaskService.getNextTasks(procDefId);
if(null != userTask){
MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics();
// 会签节点
if (Objects.nonNull(multiInstance)) {
List<String> loginnames = flowTaskService.getAssignee(userTask,userName);
if(null != loginnames && !loginnames.isEmpty()){
variables.put("persons",loginnames);
}
}
}
processInstance = runtimeService.startProcessInstanceById(procDefId, businessKey, variables);
if (null != iFormCustomService) {
FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId(),deptid);
FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId());
if (null == flowTaskCompleteVO) {
throw new ServiceException("没有审批人,请联系管理员,流程定义:" + businessKey);
@ -145,7 +128,7 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
}
@Override
public boolean startProcessInstanceById(String procDefId, String userName, String createuser, String formid, String servicename,String depti) {
public boolean startProcessInstanceById(String procDefId, String userName, String createuser, String formid, String servicename) {
IFormCustomService iFormCustomService = null;
if (StringUtils.isNotBlank(servicename)) {
@ -173,24 +156,10 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
try {
variables.put("businessKey", businessKey);
//获取下一个节点
UserTask userTask = this.flowTaskService.getNextTasks(procDefId);
if(null != userTask){
MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics();
// 会签节点
if (Objects.nonNull(multiInstance)) {
List<String> loginnames = flowTaskService.getAssignee(userTask,userName);
if(null != loginnames && !loginnames.isEmpty()){
variables.put("persons",loginnames);
}
}
}
processInstance = runtimeService.startProcessInstanceById(procDefId, businessKey, variables);
if (null != iFormCustomService) {
FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId(),depti);
FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId());
if (null == flowTaskCompleteVO) {
throw new ServiceException("没有审批人,请联系管理员,流程定义:" + businessKey);

@ -1,113 +0,0 @@
package cn.jyjz.xiaoyao.frontmenu.controller;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.jyjz.xiaoyao.common.base.util.RequestBaseUtil;
import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.common.mybatisplus.util.SearchQueryFormat;
import cn.jyjz.xiaoyao.frontmenu.dataobject.Frontmenu;
import cn.jyjz.xiaoyao.frontmenu.service.FrontmenuService;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import cn.jyjz.xiaoyao.admin.service.UserService;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import cn.jyjz.xiaoyao.common.base.controller.BaseController;
import cn.jyjz.xiaoyao.common.base.param.ParamterPage;
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@RestController
@RequestMapping("/backstage/oa/frontmenu")
public class FrontmenuController extends BaseController{
private Logger log = LoggerFactory.getLogger(this.getClass());
@Autowired
private FrontmenuService frontmenuService;
@Autowired
private UserTokenService userTokenService;
@Autowired
private UserService userService;
/**
*jsondto
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@GetMapping("/list")
public ResultVo<IPage<Frontmenu>> listSFrontmenuT(ParamterPage paramterPage, HttpServletRequest request, HttpServletResponse response) throws IOException{
SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_");
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
cn.jyjz.xiaoyao.admin.dataobject.User user = this.userService.getSessionUser(request);
Frontmenu sfrontmenut = new Frontmenu();
sfrontmenut.setSearchQueryrolesShowleave(user.getSearchQueryrolesShowleave());
QueryWrapper<Frontmenu> queryWrapper = SearchQueryFormat.queryStringFormat(searchQuery,sfrontmenut);
IPage<Frontmenu> page = this.frontmenuService.selectSearchListPage(paramterPage,queryWrapper);;
return ResultVoUtil.success(page);
}
/**
*
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@PostMapping("/save")
public ResultVo saveSFrontmenuT(HttpServletResponse response,HttpServletRequest request,Frontmenu tab) throws IOException{
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
this.frontmenuService.save(tab);
return ResultVoUtil.success();
}
/**
*form
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@PostMapping("/edit")
public ResultVo editSFrontmenuT(HttpServletResponse response,HttpServletRequest request,Frontmenu tab) throws IOException{
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
this.frontmenuService.updateById(tab);
return ResultVoUtil.success();
}
/**
*
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@GetMapping("/getdata/{id}")
@ResponseBody
public ResultVo getdateSFrontmenuT(HttpServletResponse response,HttpServletRequest request,@PathVariable("id") Long id) throws IOException{
Frontmenu dto = this.frontmenuService.selectDtoById(id);
if(null != dto){
return ResultVoUtil.success(dto);
}else{
return ResultVoUtil.error();
}
}
/**
*id1,2,3
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@GetMapping("/delmore")
@ResponseBody
public ResultVo delMoreSFrontmenuT(HttpServletResponse response,HttpServletRequest request) throws IOException{
String ids = request.getParameter("id");
this.frontmenuService.deleteByIdMore(ids);
return ResultVoUtil.success();
}
}

@ -1,69 +0,0 @@
package cn.jyjz.xiaoyao.frontmenu.controller;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.jyjz.xiaoyao.frontmenu.service.FrontmenuService;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import cn.jyjz.xiaoyao.admin.service.UserService;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import cn.jyjz.xiaoyao.common.base.controller.BaseController;
@Controller
@RequestMapping("/backstage/oa/frontmenuHtml")
public class FrontmenuHtmlController extends BaseController{
private Logger log = LoggerFactory.getLogger(this.getClass());
@Autowired
private FrontmenuService frontmenuService;
@Autowired
private UserTokenService userTokenService;
@Autowired
private UserService userService;
/**
*
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@GetMapping("/toList")
public String toListSFrontmenuT(HttpServletResponse response,HttpServletRequest request){
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid",resourceid);
return "/backstage/oa/frontmenu/list";
}
/**
*
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@GetMapping("/toSave")
public String toSaveSFrontmenuT(HttpServletResponse response,HttpServletRequest request){
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid",resourceid);
return "/backstage/oa/frontmenu/add";
}
/**
*ID
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@GetMapping("/toEdit/{id}")
public String toEditSFrontmenuT(HttpServletResponse response,HttpServletRequest request,@PathVariable("id") String id){
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid",resourceid);
request.setAttribute("id", id);
return "/backstage/oa/frontmenu/edit";
}
}

@ -1,104 +0,0 @@
package cn.jyjz.xiaoyao.frontmenu.controller;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.jyjz.xiaoyao.admin.dataobject.User;
import cn.jyjz.xiaoyao.common.base.util.RequestBaseUtil;
import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.common.mybatisplus.util.SearchQueryFormat;
import cn.jyjz.xiaoyao.frontmenu.dataobject.Frontmenu;
import cn.jyjz.xiaoyao.frontmenu.dataobject.UserFrontmenu;
import cn.jyjz.xiaoyao.frontmenu.service.UserFrontmenuService;
import com.alanpoi.common.util.StringUtils;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import cn.jyjz.xiaoyao.admin.service.UserService;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import cn.jyjz.xiaoyao.common.base.controller.BaseController;
import cn.jyjz.xiaoyao.common.base.param.ParamterPage;
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@RestController
@RequestMapping("/backstage/oa/userfrontmenu")
public class UserFrontmenuController extends BaseController{
private Logger log = LoggerFactory.getLogger(this.getClass());
@Autowired
private UserFrontmenuService userFrontmenuService;
@Autowired
private UserTokenService userTokenService;
@Autowired
private UserService userService;
/**
*jsondto
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@GetMapping("/list")
public ResultVo<IPage<User>> listUserFrontmenu(ParamterPage paramterPage, HttpServletRequest request, HttpServletResponse response) throws IOException{
SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_");
User user = this.userService.getSessionUser(request);
QueryWrapper<User> queryWrapper = SearchQueryFormat.queryStringFormat(searchQuery,user,"u.");
queryWrapper.ne("u.ID",user.getId());
IPage<User> page = this.userService.selectSearchListPage(paramterPage,queryWrapper);
for(User usermodel:page.getRecords()){
//查询关联的菜单集合
List<Frontmenu> list = this.userFrontmenuService.listByUserid(usermodel.getId().toString());
usermodel.setTempList(list);
}
return ResultVoUtil.success(page);
}
/**
*
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@PostMapping("/saveactiongrant")
public ResultVo saveSUserFrontmenuT(HttpServletResponse response,HttpServletRequest request) throws IOException{
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
//获取选中的前端菜单主键
String menuids = request.getParameter("menuids");
String userid = request.getParameter("userid");
if(StringUtils.isNotBlank(menuids)){
String[] mids = menuids.split(",");
List<UserFrontmenu> userFrontmenuList = new ArrayList<>();
for(String mid:mids){
UserFrontmenu userFrontmenu = new UserFrontmenu();
userFrontmenu.setMenuid(Long.parseLong(mid));
userFrontmenu.setUserid(Long.parseLong(userid));
userFrontmenuList.add(userFrontmenu);
}
//保存之前先删除关联
this.userFrontmenuService.removeByUserid(userid);
return this.userFrontmenuService.saveBatch(userFrontmenuList)?ResultVoUtil.success():ResultVoUtil.error();
}
return ResultVoUtil.error();
}
}

@ -1,45 +0,0 @@
package cn.jyjz.xiaoyao.frontmenu.controller;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.jyjz.xiaoyao.frontmenu.service.UserFrontmenuService;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import cn.jyjz.xiaoyao.admin.service.UserService;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import cn.jyjz.xiaoyao.common.base.controller.BaseController;
@Controller
@RequestMapping("/backstage/oa/userfrontmenuHtml")
public class UserFrontmenuHtmlController extends BaseController{
private Logger log = LoggerFactory.getLogger(this.getClass());
@Autowired
private UserFrontmenuService userFrontmenuService;
@Autowired
private UserTokenService userTokenService;
@Autowired
private UserService userService;
/**
*
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@GetMapping("/showlist")
public String toListSUserFrontmenuT(HttpServletResponse response,HttpServletRequest request){
request.setAttribute("resourceid","3");
return "/backstage/oa/frontmenu/userfrontmenu";
}
}

@ -1,11 +0,0 @@
package cn.jyjz.xiaoyao.frontmenu.dataDao;
import cn.jyjz.xiaoyao.frontmenu.dataobject.Frontmenu;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
*
*/
@Mapper
public interface FrontmenuMybatisDao extends BaseMapper<Frontmenu> {
}

@ -1,11 +0,0 @@
package cn.jyjz.xiaoyao.frontmenu.dataDao;
import cn.jyjz.xiaoyao.frontmenu.dataobject.UserFrontmenu;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
*
*/
@Mapper
public interface UserFrontmenuMybatisDao extends BaseMapper<UserFrontmenu> {
}

@ -1,103 +0,0 @@
package cn.jyjz.xiaoyao.frontmenu.dataobject;
import cn.jyjz.xiaoyao.common.mybatisplus.dto.BaseDto;
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Map;
import java.util.AbstractMap.SimpleEntry;
import java.util.stream.Stream;
import java.util.stream.Collectors;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "前端菜单管理", title = "前端菜单管理")
@TableName(value = "s_frontmenu_t")
public class Frontmenu implements BaseDto,java.io.Serializable {
private static final long serialVersionUID = -7176960824610287118L;
@Schema(description = "主键ID")
@TableId(value = "id",type = IdType.ASSIGN_ID)
@JsonSerialize(using = ToStringSerializer.class)
@TableField(value="id")
private Long id;
@Schema(description = "null")
@TableField(value="name")
private String name;
@Schema(description = "父级菜单ID")
@TableField(value="parentId")
private Integer parentid;
@Schema(description = "null")
@TableField(value="resKey")
private String reskey;
@Schema(description = "null")
@TableField(value="resUrl")
private String resurl;
@Schema(description = "菜单级别")
@TableField(value="level")
private Integer level;
@Schema(description = "null")
@TableField(value="icon")
private String icon;
@Schema(description = "菜单排序")
@TableField(value="orderNum")
private Integer ordernum;
@Schema(description = "菜单是否隐藏0:否,1:是)")
@TableField(value="ishide")
private Integer ishide;
@Schema(description = "null")
@TableField(value="description")
private String description;
//保存当前登录用户的数据权限范围的搜索条件
@TableField(exist = false)
private SearchQuery searchQueryrolesShowleave;
@TableField(exist = false)
private final Map<String,String> query = Stream.of(
new SimpleEntry<>("LISTDEPT","deptid"),
new SimpleEntry<>("ID","id"),
new SimpleEntry<>("NAME","name"),
new SimpleEntry<>("PARENTID","parentid"),
new SimpleEntry<>("RESKEY","reskey"),
new SimpleEntry<>("RESURL","resurl"),
new SimpleEntry<>("LEVEL","level"),
new SimpleEntry<>("ICON","icon"),
new SimpleEntry<>("ORDERNUM","ordernum"),
new SimpleEntry<>("ISHIDE","ishide"),
new SimpleEntry<>("DESCRIPTION","description")
)
.collect(Collectors.toMap(SimpleEntry::getKey, SimpleEntry::getValue));
@Override
public String getQueryFiled(String filedname){
String obj = null;
if(null != query && query.size() > 0){
obj = query.get(filedname);
}
return obj;
}
}

@ -1,57 +0,0 @@
package cn.jyjz.xiaoyao.frontmenu.dataobject;
import cn.jyjz.xiaoyao.common.mybatisplus.dto.BaseDto;
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Map;
import java.util.AbstractMap.SimpleEntry;
import java.util.stream.Stream;
import java.util.stream.Collectors;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "用户和前端菜单关系表", title = "用户和前端菜单关系表")
@TableName(value = "s_user_frontmenu_t")
public class UserFrontmenu implements BaseDto,java.io.Serializable {
private static final long serialVersionUID = 3139365577414759746L;
@Schema(description = "用户主键id")
@TableField(value="userId")
private Long userid;
@Schema(description = "菜单ID")
@TableField(value="menuId")
private Long menuid;
//保存当前登录用户的数据权限范围的搜索条件
@TableField(exist = false)
private SearchQuery searchQueryrolesShowleave;
@TableField(exist = false)
private final Map<String,String> query = Stream.of(
new SimpleEntry<>("listdept","deptid"),
new SimpleEntry<>("userId","userid"),
new SimpleEntry<>("menuId","menuid")
)
.collect(Collectors.toMap(SimpleEntry::getKey, SimpleEntry::getValue));
@Override
public String getQueryFiled(String filedname){
String obj = null;
if(null != query && query.size() > 0){
obj = query.get(filedname);
}
return obj;
}
}

@ -1,11 +0,0 @@
package cn.jyjz.xiaoyao.frontmenu.service;
import java.util.List;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService;
import cn.jyjz.xiaoyao.frontmenu.dataobject.Frontmenu;
/**
*
*/
public interface FrontmenuService extends BaseService<Frontmenu> {
}

@ -1,26 +0,0 @@
package cn.jyjz.xiaoyao.frontmenu.service;
import java.util.List;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService;
import cn.jyjz.xiaoyao.frontmenu.dataobject.Frontmenu;
import cn.jyjz.xiaoyao.frontmenu.dataobject.UserFrontmenu;
/**
*
*/
public interface UserFrontmenuService extends BaseService<UserFrontmenu> {
/**
*
* @param userid
* @return
*/
public List<Frontmenu> listByUserid(String userid);
/**
*
* @param userid
* @return
*/
public boolean removeByUserid(String userid);
}

@ -1,20 +0,0 @@
package cn.jyjz.xiaoyao.frontmenu.service.impl;
import cn.jyjz.xiaoyao.frontmenu.dataDao.FrontmenuMybatisDao;
import cn.jyjz.xiaoyao.frontmenu.dataobject.Frontmenu;
import cn.jyjz.xiaoyao.frontmenu.service.FrontmenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import lombok.extern.slf4j.Slf4j;
/**
*
*/
@Service
@Slf4j
public class FrontmenuServiceImpl extends BaseServiceImpl<FrontmenuMybatisDao, Frontmenu> implements FrontmenuService {
@Autowired
private FrontmenuMybatisDao frontmenuMybatisDao;
}

@ -1,64 +0,0 @@
package cn.jyjz.xiaoyao.frontmenu.service.impl;
import cn.jyjz.xiaoyao.frontmenu.dataDao.UserFrontmenuMybatisDao;
import cn.jyjz.xiaoyao.frontmenu.dataobject.Frontmenu;
import cn.jyjz.xiaoyao.frontmenu.dataobject.UserFrontmenu;
import cn.jyjz.xiaoyao.frontmenu.service.FrontmenuService;
import cn.jyjz.xiaoyao.frontmenu.service.UserFrontmenuService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
*
*/
@Service
@Slf4j
public class UserFrontmenuServiceImpl extends BaseServiceImpl<UserFrontmenuMybatisDao, UserFrontmenu> implements UserFrontmenuService {
@Resource
private UserFrontmenuMybatisDao userFrontmenuMybatisDao;
@Resource
private FrontmenuService frontmenuService;
/**
*
* @param userid
* @return
*/
public List<Frontmenu> listByUserid(String userid){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("userId",userid);
List<UserFrontmenu> userFrontmenuList = this.userFrontmenuMybatisDao.selectList(queryWrapper);
List<Frontmenu> list = null;
if(null != userFrontmenuList && !userFrontmenuList.isEmpty()){
List<Long> ufidList = userFrontmenuList.stream().map(UserFrontmenu::getMenuid).collect(Collectors.toList());
QueryWrapper fmQuery = new QueryWrapper();
fmQuery.in("id",ufidList);
list = this.frontmenuService.selectSearchList(fmQuery);
}
return list;
}
/**
*
* @param userid
* @return
*/
public boolean removeByUserid(String userid){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("userId",userid);
return this.remove(queryWrapper);
}
}

@ -74,7 +74,7 @@ public class UserdistionaryController extends BaseController{
Map<String,Object> queryMap = new HashMap<>();
if(StringUtils.isNotBlank(userDisId)){
queryMap.put("userDisId",userDisId);//.eq("osud.DEPTID_DIS",userDisId);
queryWrapper.eq("ut.TENANTID",userDisId);
}
@ -110,7 +110,7 @@ public class UserdistionaryController extends BaseController{
Map<String,Object> queryMap = new HashMap<>();
if(StringUtils.isNotBlank(userDisId)){
queryMap.put("userDisId",userDisId);//.eq("osud.DEPTID_DIS",userDisId);
queryWrapper.eq("ut.TENANTID",userDisId);
}
IPage<UserDistionaryVo> page = this.userdistionaryService.selectUserNoUd(paramterPage,queryWrapper,queryMap);;
@ -124,13 +124,15 @@ public class UserdistionaryController extends BaseController{
@PostMapping("/save")
public ResultVo saveUserdistionary(HttpServletResponse response,HttpServletRequest request,Userdistionary tab) throws IOException{
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
String userDisId = request.getParameter("userDisId");
//获取用户集合,以英文逗号分隔
String userlist = request.getParameter("userlist");
String deptlist = request.getParameter("deptlist");
tab.setDeptidDis(Long.parseLong(userDisId));
this.userdistionaryService.saveUserdistionary(tab,null,deptlist);
this.userdistionaryService.saveUserdistionary(tab,userlist,deptlist);
return ResultVoUtil.success();
}
@ -141,35 +143,16 @@ public class UserdistionaryController extends BaseController{
**/
@PostMapping("/saveupdate")
public ResultVo saveupdate(HttpServletResponse response,HttpServletRequest request) throws IOException{
String userid = request.getParameter("userid");
String userdeptid = request.getParameter("userdeptid");
//用户类型
String fromUserTyped = request.getParameter("fromUserTyped");
Userdistionary userdistionary = new Userdistionary();
userdistionary.setUsertype(Integer.parseInt(fromUserTyped));
userdistionary.setUserid(Long.parseLong(userid));
userdistionary.setDeptid(Long.parseLong(userdeptid));
//保存前,清除数据
this.userdistionaryService.deleteByUseridAndDeptid(userid,userdeptid);
this.userdistionaryService.save(userdistionary);
//1、保存到OA_USERDISTIONARY_T人员归属关系
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
//当前关联角色主键,多个使用英文逗号分隔
String[] candidateid = request.getParameterValues("userCandRolesid");
//2、保存到OA_CANDIDATEUSER_T候选组和人员关系
//审批人员关系主键
String fromUserDisId = request.getParameter("fromUserDisId");
//审批角色主键,以英文逗号分隔
String fromUserDisRolesid = request.getParameter("fromUserDisRolesid");
//用户类型
String fromUserTyped = request.getParameter("fromUserTyped");
this.userdistionaryService.saveUserdistionary(fromUserDisRolesid,userdistionary);
this.userdistionaryService.saveUserdistionary(fromUserDisRolesid,fromUserDisId,fromUserTyped);
return ResultVoUtil.success();
}

@ -8,7 +8,6 @@ import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@ -40,7 +39,7 @@ public interface FlowableccMybatisDao extends BaseMapper<Flowablecc> {
*/
List<UserDistionaryVo> selectUserByFromid(String fromid);
List<RepeatedContentVo> repetitionTask(@Param("type") Integer type, @Param("tenantId") String tenantId);
List<RepeatedContentVo> repetitionTask();
Page<OcrTaskchildPicture> repetitionTaskList(Page<OcrTaskchildPicture> page, @Param("type") Integer type, @Param("tenantId") String tenantId);
Page<OcrTaskchildPicture> repetitionTaskList(Page<OcrTaskchildPicture> page);
}

@ -61,7 +61,7 @@ public class Userapprove implements BaseDto,java.io.Serializable {
@Schema(description = "节点位置,待定字段,")
@TableField(value="TASKINDEX")
private String taskindex;
private Integer taskindex;
@Schema(description = "节点编号")
@TableField(value="TASKNO")

@ -46,5 +46,5 @@ public interface CandidateuserService extends BaseService<Candidateuser> {
* @param candidateid
* @return
*/
public String getClaimUser(String startUserId,String candidateid,String deptid);
public String getClaimUser(String startUserId,String candidateid);
}

@ -1,11 +1,7 @@
package cn.jyjz.xiaoyao.oa.from.service;
import cn.jyjz.xiaoyao.common.base.vo.User;
import cn.jyjz.xiaoyao.oa.from.dataobject.UserFinal;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService;
import java.util.List;
/**
*
*/
@ -17,5 +13,5 @@ public interface UserFinalService extends BaseService<UserFinal> {
* @param formid
* @return truefalse
*/
public boolean save(List<User> userid, String formid);
public boolean save(String userid,String formid);
}

@ -62,10 +62,10 @@ public interface UserdistionaryService extends BaseService<Userdistionary> {
/**
*
* @param candidateid ,使
* @param userdistionary
* @param userdisid
* @return
*/
public boolean saveUserdistionary(String candidateid,Userdistionary userdistionary);
public boolean saveUserdistionary(String candidateid,String userdisid,String usertype);
/**
@ -104,11 +104,4 @@ public interface UserdistionaryService extends BaseService<Userdistionary> {
*/
public int deleteByIdMore(String id);
/**
*
*
* @param userid
*
*/
public boolean deleteByUseridAndDeptid(String userid,String deptid);
}

@ -116,7 +116,7 @@ public class CandidateuserServiceImpl extends BaseServiceImpl<CandidateuserMybat
* @param candidateid
* @return
*/
public String getClaimUser(String loginname,String candidateid,String deptid){
public String getClaimUser(String loginname,String candidateid){
//排除不在同一个店中的人员
List<Userdistionary> userdistionaryList = userdistionaryService.selectListByCandidateid(candidateid,loginname);
@ -135,10 +135,14 @@ public class CandidateuserServiceImpl extends BaseServiceImpl<CandidateuserMybat
//任务审批人员
User user = null;
//通过登录账号查询所在审批关系插查询oa_userdistionary_t表
List<Userdistionary> list = userdistionaryService.selectListByLoginname(loginname);
//以店面作为主键
Map<Long,Userdistionary> userdistionaryMap = list.stream().collect(Collectors.toMap(Userdistionary::getDeptidDis, Function.identity(),(key1,key2) ->key2));
//如果候选组有多个人,优先确定是否在同一个店面,
for(Userdistionary userdistionary:userdistionaryList){
if(userdistionary.getDeptid().toString().equals(deptid)){
if(null != userdistionaryMap.get(userdistionary.getDeptidDis())){
//如果user不为空说明有存在
if(null != user){
user = null;
@ -153,6 +157,19 @@ public class CandidateuserServiceImpl extends BaseServiceImpl<CandidateuserMybat
return user.getLoginname();
}
//以部门作为主键
Map<Long,Userdistionary> userdistionaryDeptMap = list.stream().collect(Collectors.toMap(Userdistionary::getDeptid, Function.identity(),(key1,key2) ->key2));
//如果在同一个店面,也是多个人优先选同部门
for(Userdistionary userdistionary:userdistionaryList){
if(null != userdistionaryDeptMap.get(userdistionary.getDeptid())){
//如果user不为空说明有存在
if(null != user){
user = null;
break;
}
user = this.userService.selectDtoById(userdistionary.getUserid());
}
}
//如果user不为空说明只有一个审批人员
if(null != user){
return user.getLoginname();

@ -1,44 +1,40 @@
package cn.jyjz.xiaoyao.oa.from.service.impl;
import cn.jyjz.xiaoyao.common.base.vo.User;
import cn.jyjz.xiaoyao.oa.from.dataDao.UserFinalMybatisDao;
import cn.jyjz.xiaoyao.oa.from.dataobject.UserFinal;
import cn.jyjz.xiaoyao.oa.from.dataobject.Userapprove;
import cn.jyjz.xiaoyao.oa.from.service.UserFinalService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
/**
*
*/
*
*/
@Service
@Slf4j
public class UserFinalServiceImpl extends BaseServiceImpl<UserFinalMybatisDao, UserFinal> implements UserFinalService {
@Autowired
private UserFinalMybatisDao userFinalMybatisDao;
@Override
public boolean save(List<User> userid, String formid) {
//判断是否存在重复表单主键
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("FORMID", formid);
Long listcount = count(queryWrapper);
if (listcount.intValue() > 0) {
return true;
}
List<UserFinal> list = new ArrayList<>();
for (User user : userid) {
UserFinal userFinal = new UserFinal();
userFinal.setUserid(user.getId());
userFinal.setFormid(Long.parseLong(formid));
list.add(userFinal);
}
return this.saveBatch(list);
}
public class UserFinalServiceImpl extends BaseServiceImpl<UserFinalMybatisDao, UserFinal> implements UserFinalService {
@Autowired
private UserFinalMybatisDao userFinalMybatisDao;
@Override
public boolean save(String userid, String formid) {
//判断是否存在重复表单主键
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("FORMID",formid);
Long listcount = count(queryWrapper);
if(listcount.intValue() > 0 ){
return true;
}
UserFinal userFinal = new UserFinal();
userFinal.setUserid(Long.parseLong(userid));
userFinal.setFormid(Long.parseLong(formid));
return this.save(userFinal);
}
}

@ -9,7 +9,6 @@ import cn.jyjz.xiaoyao.oa.from.dataobject.Userapprove;
import cn.jyjz.xiaoyao.oa.from.service.UserapproveService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.flowable.task.api.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -30,11 +29,10 @@ public class UserapproveServiceImpl extends BaseServiceImpl<UserapproveMybatisDa
userapprove.setFormid(Long.parseLong(formId));
userapprove.setTaskname(taskd.getName());
userapprove.setTaskcomment(approve.getComment());
userapprove.setTaskindex(StringUtils.isBlank(taskd.getDescription()) ?"1":taskd.getDescription());
userapprove.setCreatedate(System.currentTimeMillis());
userapprove.setUsername(userToken.getUsername());
userapprove.setReason(approve.getFailCauseName());
userapprove.setProcessMethod(approve.getDisposeType());
userapprove.setReason(approve.getDisposeType());
if (approve.getResult()) {
userapprove.setStatshis(2);
} else {

@ -36,24 +36,24 @@ public class UserdistionaryServiceImpl extends BaseServiceImpl<UserdistionaryMyb
/**
*
* @param userdistionary
* @param userList ,使
* @return
*/
@Override
public boolean saveUserdistionary(Userdistionary userdistionary,String userListdd,String deptlist){
public boolean saveUserdistionary(Userdistionary userdistionary,String userList,String deptlist){
if(StringUtils.isNotBlank(deptlist)){
if(StringUtils.isNotBlank(userList)){
String[] ul = userList.split(",");
String[] dl = deptlist.split(",");
List<Userdistionary> list = new ArrayList<>();
for(int i = 0;i < dl.length;i++){
for(int i = 0;i < ul.length;i++){
Userdistionary userdistionary1 = new Userdistionary();
userdistionary1.setUsertype(userdistionary.getUsertype());
userdistionary1.setUserid(Long.parseLong(ul[i]));
if(null != dl[i]){
//userid_deptid
String[] tempDl = dl[i].split("_");
userdistionary1.setUserid(Long.parseLong(tempDl[0]));
userdistionary1.setDeptid(Long.parseLong(tempDl[1]));
}
@ -97,30 +97,34 @@ public class UserdistionaryServiceImpl extends BaseServiceImpl<UserdistionaryMyb
/**
*
* @param candidateid ,使
* @param userdistionary
* @param userdisid
* @return
*/
@Override
public boolean saveUserdistionary(String candidateid,Userdistionary userdistionary){
//删除对应的关系
candidateuserService.deleteByUserdisid(userdistionary.getId());
if(StringUtils.isNotBlank(candidateid)){
String[] ul = candidateid.split(",");
List<Candidateuser> list = new ArrayList<>();
for(String cauid:ul){
Candidateuser candidateuser = new Candidateuser();
candidateuser.setCandidateid(Long.parseLong(cauid));
candidateuser.setUserdisid(userdistionary.getId());
list.add(candidateuser);
}
public boolean saveUserdistionary(String candidateid,String userdisid,String usertype){
return this.candidateuserService.saveBatch(list);
if(StringUtils.isNotBlank(userdisid)){
//删除对应的关系
candidateuserService.deleteByUserdisid(Long.parseLong(userdisid));
if(StringUtils.isNotBlank(candidateid)){
String[] ul = candidateid.split(",");
List<Candidateuser> list = new ArrayList<>();
for(String cauid:ul){
Candidateuser candidateuser = new Candidateuser();
candidateuser.setCandidateid(Long.parseLong(cauid));
candidateuser.setUserdisid(Long.parseLong(userdisid));
list.add(candidateuser);
}
this.candidateuserService.saveBatch(list);
}
}
return false;
Userdistionary userdistionary = this.selectDtoById(Long.parseLong(userdisid));
userdistionary.setUsertype(Integer.parseInt(usertype));
return this.updateById(userdistionary);
}
/**
@ -199,33 +203,8 @@ public class UserdistionaryServiceImpl extends BaseServiceImpl<UserdistionaryMyb
query.ne("u.LOGINNAME","admin");
query.ne("u.LOGINNAME","zhangyong");
IPage<UserDistionaryVo> iPage = this.userdistionarymybatisdao.selectUserNoUd(page,query,queryMap);
for(UserDistionaryVo userDistionaryVo:iPage.getRecords()){
//查询用户所在的审批组
List<Candidateuser> candidateuserList = candidateuserService.selectList(null,userDistionaryVo.getUserdistionaryid());
StringBuffer stringBuffer = new StringBuffer();
StringBuffer stringBufferId = new StringBuffer();
//便利审批组
for(Candidateuser candidateuser:candidateuserList){
if(stringBuffer.length() > 0){
stringBuffer.append(",");
stringBuffer.append(candidateuser.getCandidate().getCandidatename());
stringBufferId.append(",");
stringBufferId.append(candidateuser.getCandidate().getId().toString());
}else{
stringBuffer.append(candidateuser.getCandidate().getCandidatename());
stringBufferId.append(candidateuser.getCandidate().getId().toString());
}
}
//审批组名称赋值
userDistionaryVo.setCandidatename(stringBuffer.toString());
userDistionaryVo.setCandidateid(stringBufferId.toString());
}
return iPage;
return this.userdistionarymybatisdao.selectUserNoUd(page,query,queryMap);
}
/**
*
@ -329,29 +308,6 @@ public class UserdistionaryServiceImpl extends BaseServiceImpl<UserdistionaryMyb
return userDistionaryVoIPage;
}
/**
*
*
* @param userid
*
*/
public boolean deleteByUseridAndDeptid(String userid,String deptid){
//1、查询oa_userdistionary_t表
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("USERID",userid);
queryWrapper.eq("DEPTID",deptid);
List<Userdistionary> list = this.userdistionarymybatisdao.selectList(queryWrapper);
//2、通过oa_userdistionary_t表集合删除oa_candidateuser_t
for(Userdistionary userdistionary:list){
//删除对应的关系
candidateuserService.deleteByUserdisid(userdistionary.getId());
}
//3、删除oa_userdistionary_t表
return this.remove(queryWrapper);
}
@Override
public int deleteByIdMore(String id) {
int isok = 0;

@ -21,8 +21,6 @@ public class RepeatedContentVo {
private String imgUrl;
private String pictureIds;
private List<RepeatedTaskVo> repeatedTaskList;

@ -28,6 +28,4 @@ public class RepeatedTaskVo {
private String fromTime;
private String updateTime;
private String pictureId;
}

@ -91,10 +91,6 @@ public class UserDistionaryVo implements java.io.Serializable, BaseDto {
@JsonSerialize(using = ToStringSerializer.class)
private long userdistionaryid;
@Schema(description = "部门流水号流水号")
@JsonSerialize(using = ToStringSerializer.class)
private Long departid;
@Schema(description = "审批流节点是否跳过标志默认为0前端人员1后勤人员0审批流所有节点1跳过店长审批")
@TableField(value="USERTYPE")
private Integer userOsudType;

@ -4,8 +4,6 @@ import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceParameter;
import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiPage;
import java.util.List;
/**
* api
*
@ -21,22 +19,4 @@ public interface PrevailCloudApi {
* @return
*/
ApiPage<PictureSourceResult> pullPictureSource(PictureSourceParameter pictureSourceParameter) throws Exception;
Boolean sendFlowTaskResult(String formId, String data, Long pictureId, String remark) throws Exception;
/**
* id
* @param tenantNo
*/
void pullAccountInfo(long tenantNo) throws Exception;
/**
*
*/
boolean startImageDownloadMonitoring(String localImagePath) throws Exception;
List<PictureSourceResult> getAllPictureSourceResultApiPage(PictureSourceParameter pictureSourceParameter);
List<PictureSourceResult> getPictureSourceResultApiPage(PictureSourceParameter pictureSourceParameter);
}

@ -2,36 +2,24 @@ package cn.jyjz.xiaoyao.ocr.api.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.json.JSONUtil;
import cn.jyjz.xiaoyao.common.base.util.SpringUtils;
import cn.jyjz.xiaoyao.ocr.api.PrevailCloudApi;
import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceParameter;
import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiConfig;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiHelper;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiPage;
import cn.jyjz.xiaoyao.ocr.api.utils.RequestData;
import cn.jyjz.xiaoyao.ocr.api.utils.ResultData;
import cn.jyjz.xiaoyao.ocr.common.PrevailCloudConstant;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPrevailCloudLog;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
import cn.jyjz.xiaoyao.ocr.service.OcrPrevailCloudLogService;
import cn.jyjz.xiaoyao.ocr.api.utils.*;
import cn.jyjz.xiaoyao.ocr.thread.TaskQueue;
import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity;
import cn.jyjz.xiaoyao.ocr.util.httputil.HttpClient;
import cn.jyjz.xiaoyao.ocr.util.httputil.HttpMethod;
import cn.jyjz.xiaoyao.ocr.util.httputil.HttpParamers;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.google.common.collect.Lists;
import lombok.SneakyThrows;
import org.apache.commons.collections4.CollectionUtils;
import com.fasterxml.jackson.annotation.JsonFormat;
import liquibase.pro.packaged.S;
import org.apache.commons.collections.SequencedHashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -55,19 +43,11 @@ public class PrevailCloudApiImpl implements PrevailCloudApi {
@Autowired
private ApiConfig apiConfig;
@Resource
private OcrPrevailCloudLogService prevailCloudLogService;
/**
*
*/
private String pictureSourceUrl = "/pangu/jingwei/ocr/query/pb/task/pageList";
/**
*
*/
private String sendResultUrl = "/pangu/jingwei/thirdclient/command/pb/approval/result";
/**
*
*/
@ -82,19 +62,17 @@ public class PrevailCloudApiImpl implements PrevailCloudApi {
@Override
public ApiPage<PictureSourceResult> pullPictureSource(PictureSourceParameter pictureSourceParameter) throws Exception {
//1.检查api配置是否正常
if (!apiConfig.checkConfig()) {
if(!apiConfig.checkConfig()){
return null;
}
OcrPrevailCloudLog prevailCloudLog = new OcrPrevailCloudLog();
prevailCloudLog.setType(PrevailCloudConstant.PULL_PICTURE_SOURCE);
prevailCloudLog.setRequestParam(JSONUtil.toJsonStr(pictureSourceParameter));
//2.对象转map
Map<String, Object> queryParam = BeanUtil.beanToMap(pictureSourceParameter);
Map<String, String> queryParamStr = new HashMap<>();
Map<String,String> queryParamStr = new HashMap<>();
//map值转string 注意对日期类型进行操作,加密包要求值全部为string
for (String key : queryParam.keySet()) {
if (queryParam.get(key) != null) {
queryParamStr.put(key, queryParam.get(key).toString());
if(queryParam.get(key)!=null){
queryParamStr.put(key,queryParam.get(key).toString());
}
}
@ -103,191 +81,39 @@ public class PrevailCloudApiImpl implements PrevailCloudApi {
String tenantNo = pictureSourceParameter.getTenantNo().toString();
String json = JSONObject.toJSONString(queryParam);
System.out.println(json);
RequestData requestData = ApiHelper.buildRequest(tenantNo, apiConfig.getAccessKey(), apiConfig.getAccessCode(), json);
RequestData requestData = ApiHelper.buildRequest(tenantNo, apiConfig.getAccessKey(), apiConfig.getAccessCode(),json);
//组装请求参数
String url = apiConfig.getInterfaceDomain() + pictureSourceUrl;
String url = apiConfig.getInterfaceDomain()+pictureSourceUrl;
String requestBodyJson = JSONObject.toJSONString(requestData);
// String requestBodyJson = "{\"accessKey\":\"7390F0221A1A73D8E13F8C8BB96F33B0\",\"data\":\"gzUtN5Mt24_fbDDMK3wLop8Tgu68xLCVy3Wzp9BcXnkxnCiPg_D2TNEXnQ68-Y-GhGYYcD7Iwg8juZTx1m5v4NkDvKvEwdvjQvZnMDTRYbqtHrwgVLAvUGotIMTckDY67yo2Ku52vWedjYpzzDseHwiIGVcIl-u1CljEbyjLzJzIf6oXfD7qKjOYnxKjfjp11k0IlvsPdS-mgNXTHcBei5jOFrYmZrE2y4v9bI5n1QE\",\"signature\":\"0bmIbhhybDcGeyX4ao5gSPZQeaY8G2JRh3nRt7NC7qw\",\"tenantCode\":\"1673196576094806016\",\"timestamp\":1711971774448}";
//入参
System.out.println("入参数据:" + requestBodyJson);
System.out.println("入参数据:"+requestBodyJson);
HttpParamers httpParamers = new HttpParamers(HttpMethod.POST);
httpParamers.setJsonParamer(requestBodyJson);
//发起请求
String responseJsonStr = HttpClient.doPost(url, httpParamers, null, apiConfig.getConnectTimeout(), apiConfig.getReadTimeout());
String responseJsonStr = HttpClient.doPost(url,httpParamers,null,apiConfig.getConnectTimeout(),apiConfig.getReadTimeout());
System.out.println(responseJsonStr);
ResultData<String> resultData = JSONUtil.toBean(responseJsonStr, ResultData.class);
prevailCloudLog.setResponseParam(responseJsonStr);
prevailCloudLog.setStatus(resultData.getStatus());
ResultData<String> resultData =JSONUtil.toBean(responseJsonStr,ResultData.class);
//解密请求数据
if (resultData.getStatus() == 100) {
if(resultData.getStatus()==100){
//解析基础数据
String data = ApiHelper.decryptResponse(apiConfig.getAccessCode(), resultData);
ApiPage<String> apiPage = JSONUtil.toBean(data, ApiPage.class);
ApiPage<String> apiPage = JSONUtil.toBean(data,ApiPage.class);
//解析数据结果为List
List<PictureSourceResult> listResult = JSONUtil.toList(JSONObject.toJSONString(apiPage.getRecords()), PictureSourceResult.class);
List<PictureSourceResult> listResult = JSONUtil.toList(JSONObject.toJSONString(apiPage.getRecords()),PictureSourceResult.class);
ApiPage<PictureSourceResult> resultApiPage = new ApiPage<>();
resultApiPage.setPageNo(apiPage.getPageNo());
resultApiPage.setPageSize(apiPage.getPageSize());
resultApiPage.setTotal(apiPage.getTotal());
resultApiPage.setRecords(listResult);
return resultApiPage;
} else {
logger.debug("请求图片接口数据失败,参数:{},返回值:{}", json, responseJsonStr);
}else{
logger.debug("请求图片接口数据失败,参数:{},返回值:{}",json,responseJsonStr);
}
prevailCloudLogService.save(prevailCloudLog);
return null;
}
@Override
public Boolean sendFlowTaskResult(String formId, String data, Long pictureId, String remark) throws Exception {
OcrPrevailCloudLog prevailCloudLog = new OcrPrevailCloudLog();
prevailCloudLog.setType(PrevailCloudConstant.SEND_FLOW_RESULT);
prevailCloudLog.setRequestParam(data);
prevailCloudLog.setFormId(Long.parseLong(formId));
prevailCloudLog.setTaskId(remark);
prevailCloudLog.setPictureId(pictureId);
ResultData<String> stringResultData = ApiHelper.buildResponse(apiConfig.getAccessCode(), data);
// RequestData requestData = ApiHelper.buildRequest(tenantId, apiConfig.getAccessKey(), apiConfig.getAccessCode(),data);//组装请求参数
String url = apiConfig.getInterfaceDomain() + sendResultUrl;
String requestBodyJson = JSONObject.toJSONString(stringResultData);
//入参
System.out.println("入参数据:" + requestBodyJson);
HttpParamers httpParamers = new HttpParamers(HttpMethod.POST);
httpParamers.setJsonParamer(requestBodyJson);
//发起请求
String responseJsonStr = HttpClient.doPost(url, httpParamers, null, apiConfig.getConnectTimeout(), apiConfig.getReadTimeout());
prevailCloudLog.setResponseParam(responseJsonStr);
ResultData<String> resultData = JSONUtil.toBean(responseJsonStr, ResultData.class);
prevailCloudLog.setStatus(resultData.getStatus());
prevailCloudLogService.save(prevailCloudLog);
if (resultData.getStatus() == 100) {
return true;
}
return false;
}
@Override
public void pullAccountInfo(long tenantNo) throws Exception {
OcrPrevailCloudLog prevailCloudLog = new OcrPrevailCloudLog();
prevailCloudLog.setType(PrevailCloudConstant.PULL_ACCOUNT_INFO);
prevailCloudLog.setRequestParam(String.valueOf(tenantNo));
Map<String, Object> queryParam = new HashMap<>();
queryParam.put("tenantNo", tenantNo);
String json = JSONObject.toJSONString(queryParam);
RequestData requestData = ApiHelper.buildRequest(tenantNo + "", apiConfig.getAccessKey(), apiConfig.getAccessCode(), json);
String url = apiConfig.getInterfaceDomain() + tenantSourceUrl;
String requestBodyJson = JSONObject.toJSONString(requestData);
//入参
HttpParamers httpParamers = new HttpParamers(HttpMethod.POST);
httpParamers.setJsonParamer(requestBodyJson);
//发起请求
String responseJsonStr = HttpClient.doPost(url, httpParamers, null, apiConfig.getConnectTimeout(), apiConfig.getReadTimeout());
System.out.println(responseJsonStr);
ResultData<String> resultData = JSONUtil.toBean(responseJsonStr, ResultData.class);
prevailCloudLog.setResponseParam(responseJsonStr);
prevailCloudLog.setStatus(resultData.getStatus());
if (resultData.getStatus() == 100) {
//解析基础数据
String data = ApiHelper.decryptResponse(apiConfig.getAccessCode(), resultData);
ApiPage<String> apiPage = JSONUtil.toBean(data, ApiPage.class);
System.out.println(apiPage);
//解析数据结果为List
// List<PictureSourceResult> listResult = JSONUtil.toList(JSONObject.toJSONString(apiPage.getRecords()),PictureSourceResult.class);
// ApiPage<PictureSourceResult> resultApiPage = new ApiPage<>();
// resultApiPage.setPageNo(apiPage.getPageNo());
// resultApiPage.setPageSize(apiPage.getPageSize());
// resultApiPage.setTotal(apiPage.getTotal());
// resultApiPage.setRecords(listResult);
// return resultApiPage;
}
prevailCloudLogService.save(prevailCloudLog);
}
/**
*
*
* @return
*/
@Override
public boolean startImageDownloadMonitoring(String localImagePath) {
Runnable runnable = new Runnable() {
@SneakyThrows
@Override
public void run() {
OcrPictureService ocrPictureService = SpringUtils.getBean("ocrPictureService");
logger.debug("图片下载监测中...");
// 查询数据库中local_picture_url字段为null的图片数据
LambdaQueryWrapper<OcrPicture> ocrPictureLambdaQueryWrapper = new LambdaQueryWrapper<>();
ocrPictureLambdaQueryWrapper.isNull(OcrPicture::getLocalpictrueurl);
List<OcrPicture> ocrPictureList = new ArrayList<>();
ocrPictureList = ocrPictureService.list(ocrPictureLambdaQueryWrapper);
logger.debug("待执行下载图片数量:{}", ocrPictureList.size());
for (OcrPicture pictureOne : ocrPictureList) {
// 创建 PictureImgToLocalEntity 对象并赋值
PictureImgToLocalEntity entity = new PictureImgToLocalEntity();
entity.setPictureId(pictureOne.getId());
entity.setImgUrl(pictureOne.getImgurl());
String imgurl = pictureOne.getImgurl();
entity.setLocalPath(localImagePath + imgurl.substring(imgurl.lastIndexOf("/")));
//本地调试下载地址
// entity.setLocalPath("D:\\server\\data\\images" + imgurl.substring(imgurl.lastIndexOf("/")));
// 将对象添加到下载图片队列中
boolean isAddedToQueue = false;
while (!isAddedToQueue) {
isAddedToQueue = TaskQueue.pictureImgToLocalPushData(entity);
if (!isAddedToQueue) {
logger.info("图片下载监测-添加队列失败,等待五秒后继续进行添加,图片id:{}", entity.getPictureId());
Thread.sleep(5000);
}
}
}
}
};
Thread thread = new Thread(runnable);
thread.start();
return true;
}
@Override
public List<PictureSourceResult> getAllPictureSourceResultApiPage(PictureSourceParameter pictureSourceParameter) {
ApiPage<PictureSourceResult> apiPage = null;
List<PictureSourceResult> result = Lists.newArrayListWithCapacity(pictureSourceParameter.getPageSize());
try {
apiPage = this.pullPictureSource(pictureSourceParameter);
} catch (Exception e) {
e.printStackTrace();
}
if (apiPage == null || CollectionUtils.isEmpty(apiPage.getRecords())) {
return result;
}
result.addAll(apiPage.getRecords());
// 如果pageSize超过实际的数据量说明数据已经查完了
if (apiPage.getRecords().size() < pictureSourceParameter.getPageSize()) {
return result;
}
// 数据没查完就翻页
pictureSourceParameter.setPageNo(pictureSourceParameter.getPageNo() + 1);
result.addAll(this.getAllPictureSourceResultApiPage(pictureSourceParameter));
return result;
}
@Override
public List<PictureSourceResult> getPictureSourceResultApiPage(PictureSourceParameter pictureSourceParameter) {
ApiPage<PictureSourceResult> apiPage = null;
try {
apiPage = this.pullPictureSource(pictureSourceParameter);
} catch (Exception e) {
e.printStackTrace();
}
return apiPage == null ? Lists.newArrayList() : apiPage.getRecords();
}
}

@ -23,36 +23,34 @@ public class ApiConfig {
/**
*
*/
@Value("${ocr.api.wly.interface-domain}")
private String interfaceDomain;
/**
*
*/
@Value("${ocr.api.wly.accessKey}")
private String accessKey;
/**
*
*/
@Value("${ocr.api.wly.accessCode}")
private String accessCode;
/**
* 5
*/
@Value("${ocr.api.wly.connectTimeout}")
private Integer connectTimeout = 5000;
/**
* 1
*/
@Value("${ocr.api.wly.readTimeout}")
private Integer readTimeout = 60000;
private String localImagePath;
/**
*
*/
private String defaultPictureImg;
/**
*
* @return

@ -1,19 +0,0 @@
package cn.jyjz.xiaoyao.ocr.common;
/**
* ClassName PrevailCloudConstant$.java
* Description:
* Author scl.
* Date 2024/4/25 8:36
*/
public class PrevailCloudConstant {
public static Integer PULL_PICTURE_SOURCE = 0;
public static Integer SEND_FLOW_RESULT = 1;
public static Integer PULL_ACCOUNT_INFO = 2;
}

@ -1,35 +1,20 @@
package cn.jyjz.xiaoyao.ocr.controller;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.jyjz.xiaoyao.admin.dataDao.DepartmentMybatisDao;
import cn.jyjz.xiaoyao.admin.dataobject.Department;
import cn.jyjz.xiaoyao.common.base.util.StringUtils;
import cn.jyjz.xiaoyao.ocr.api.PrevailCloudApi;
import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceParameter;
import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiConfig;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiPage;
import cn.jyjz.xiaoyao.ocr.thread.TaskQueue;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.compress.utils.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* TODO
@ -38,42 +23,18 @@ import java.util.Map;
* @version 1.0
* @date 2024/3/14 19:47
*/
@Slf4j
@RestController
@RequestMapping("/test/api")
public class ApiTestController {
@Resource
private ApiConfig apiConfig;
@Autowired
private PrevailCloudApi prevailCloudApi;
@Resource
private DepartmentMybatisDao departmentMybatisDao;
/**
*
* pull wyl task data
* @param request
* @return
*/
@GetMapping("pullPictureByOneAccountNo")
public String pullPictureByOneAccountNo(HttpServletRequest request){
@GetMapping("psTest")
public String psTset(HttpServletRequest request){
String beginStr = request.getParameter("beginStr");
String endStr = request.getParameter("endStr");
String pageSize = request.getParameter("pageSize");
String pageNo = request.getParameter("pageNo");
String tenantNoStr = request.getParameter("tenantNo");
if(StringUtils.isBlank(tenantNoStr)){
return "租户不能为空";
}
String accountNoStr = request.getParameter("accountNo");
if(StringUtils.isBlank(accountNoStr)){
return "业务主体不能为空";
}
Long tenantNo = Long.parseLong(request.getParameter("tenantNo"));
Long accountNo = Long.parseLong(request.getParameter("accountNo"));
PictureSourceParameter pictureSourceParameter = new PictureSourceParameter();
DateTime dateTime = DateUtil.parse(beginStr+" 00:00:00","yyyy-MM-dd HH:mm:ss");
@ -86,27 +47,17 @@ public class ApiTestController {
pictureSourceParameter.setEndTime(Date.from(einstant));
pictureSourceParameter.setPageNo(Integer.parseInt(pageNo));
pictureSourceParameter.setPageSize(Integer.parseInt(pageSize));
pictureSourceParameter.setTenantNo(tenantNo);
pictureSourceParameter.setAccountNo(accountNo);
pictureSourceParameter.setTenantNo(1714548920583360512L);
pictureSourceParameter.setAccountNo(1714887674875514880L);
try {
ApiPage<PictureSourceResult> apiPage = prevailCloudApi.pullPictureSource(pictureSourceParameter);
if(apiPage==null){
return "获取数据为空!";
}
List<PictureSourceResult> listResult= apiPage.getRecords();
int count = apiPage.getTotal();
int localCount = listResult.size();
int size = 0;
for (PictureSourceResult pictureSourceResult : listResult) {
//1.如果不存在图片默认一个默认图片,方便走测试。
if(pictureSourceResult.getLivePhoto()==null){
List<Map<String,Object>> livePhoto = new ArrayList<>();
Map<String,Object> map = new HashMap<>();
map.put("imgUrl","http://47.93.59.251/api/image/default.png");
map.put("imgName","default.png");
livePhoto.add(map);
pictureSourceResult.setLivePhoto(livePhoto);
// continue;
continue;
}
size++;
//将可以处理数据放入处理队列中
@ -120,231 +71,4 @@ public class ApiTestController {
return "处理失败";
}
@GetMapping("psTest")
public String psTset(HttpServletRequest request) {
String beginStr = request.getParameter("beginStr");
String endStr = request.getParameter("endStr");
String pageSize = request.getParameter("pageSize");
String pageNo = request.getParameter("pageNo");
String tenantNoStr = request.getParameter("tenantNo");
if (StringUtils.isBlank(tenantNoStr)) {
return "租户不能为空";
}
String accountNoStr = request.getParameter("accountNo");
if (StringUtils.isBlank(accountNoStr)) {
return "业务主体不能为空";
}
List<Department> departments = departmentMybatisDao.selectList(new QueryWrapper<>());
if (CollectionUtils.isEmpty(departments)) {
return "业务主体数据为空";
}
Map<Long, Department> departmentMap = Maps.newHashMapWithExpectedSize(departments.size());
for (Department department : departments) {
departmentMap.put(department.getId(), department);
}
if (departmentMap.isEmpty()) {
return "业务主体数据为空";
}
PictureSourceParameter pictureSourceParameter = new PictureSourceParameter();
DateTime dateTime = DateUtil.parse(beginStr + " 00:00:00", "yyyy-MM-dd HH:mm:ss");
DateTime dateTime1 = DateUtil.parse(endStr + " 00:00:00", "yyyy-MM-dd HH:mm:ss");
Instant binstant = dateTime.toInstant();
Instant einstant = dateTime1.toInstant();
pictureSourceParameter.setStartTime(Date.from(binstant));
pictureSourceParameter.setEndTime(Date.from(einstant));
pictureSourceParameter.setPageNo(Integer.parseInt(pageNo));
pictureSourceParameter.setPageSize(Integer.parseInt(pageSize));
List<PictureSourceResult> totalList = Lists.newArrayList();
for (Department department : departments) {
if (!departmentMap.containsKey(department.getParentid())) {
continue;
}
Long tenantNo = Long.valueOf(departmentMap.get(department.getParentid()).getDeptno());
Long accountNo = Long.valueOf(department.getDeptno());
pictureSourceParameter.setTenantNo(tenantNo);
pictureSourceParameter.setAccountNo(accountNo);
List<PictureSourceResult> resultList = prevailCloudApi.getPictureSourceResultApiPage(pictureSourceParameter);
if (CollectionUtils.isEmpty(resultList)) {
continue;
}
totalList.addAll(resultList);
}
for (PictureSourceResult pictureSourceResult : totalList) {
//1.如果不存在图片默认一个默认图片,方便走测试。
if (pictureSourceResult.getLivePhoto() == null) {
List<Map<String, Object>> livePhoto = new ArrayList<>();
Map<String, Object> map = new HashMap<>();
map.put("imgUrl", StringUtils.isEmpty(apiConfig.getDefaultPictureImg()) ? "http://47.93.59.251/api/image/default.png" : apiConfig.getDefaultPictureImg());
map.put("imgName", "default.png");
livePhoto.add(map);
pictureSourceResult.setLivePhoto(livePhoto);
}
//将可以处理数据放入处理队列中
TaskQueue.pictureDisposePushData(pictureSourceResult);
}
return "处理成功";
}
@GetMapping("pullAccountInfo")
public String pullAccountInfo(HttpServletRequest request) {
try {
prevailCloudApi.pullAccountInfo(1714548920583360512L);
return "ok";
} catch (Exception e) {
e.printStackTrace();
}
return "处理失败";
}
@GetMapping("psTest01")
public String psTset01(HttpServletRequest request) {
String beginStr = request.getParameter("beginStr");
String endStr = request.getParameter("endStr");
String pageSize = request.getParameter("pageSize");
String pageNo = request.getParameter("pageNo");
List<String> notAddedToQueueTaskIds = new ArrayList<>();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
List<Department> departments = departmentMybatisDao.selectList(new QueryWrapper<>());
if (CollectionUtils.isEmpty(departments)) {
return;
}
Map<Long, Department> departmentMap = Maps.newHashMapWithExpectedSize(departments.size());
for (Department department : departments) {
departmentMap.put(department.getId(), department);
}
if (departmentMap.isEmpty()) {
return;
}
int totalCount = 0;
int totalLocalCount = 0;
int totalSize = 0;
DateTime startDate = DateUtil.parse(beginStr + " 00:00:00", "yyyy-MM-dd HH:mm:ss");
DateTime endDate = DateUtil.parse(endStr + " 23:59:59", "yyyy-MM-dd HH:mm:ss");
PictureSourceParameter pictureSourceParameter = new PictureSourceParameter();
pictureSourceParameter.setPageSize(Integer.parseInt(pageSize));
while (startDate.isBefore(endDate) || startDate.compareTo(endDate) == 0) {
int currentPage = Integer.parseInt(pageNo);
boolean hasNextPage = true;
boolean isCountAdded = false;
while (hasNextPage) {
// 设置当天的开始和结束时间
Instant startInstant = startDate.toInstant();
Instant endInstant = startDate.offsetNew(DateField.DAY_OF_YEAR, 1).toInstant();
List<PictureSourceResult> totalList = Lists.newArrayList();
for (Department department : departments) {
if (!departmentMap.containsKey(department.getParentid())) {
continue;
}
Long tenantNo = Long.valueOf(departmentMap.get(department.getParentid()).getDeptno());
Long accountNo = Long.valueOf(department.getDeptno());
pictureSourceParameter.setStartTime(Date.from(startInstant));
pictureSourceParameter.setEndTime(Date.from(endInstant));
pictureSourceParameter.setPageNo(currentPage);
pictureSourceParameter.setTenantNo(tenantNo);
pictureSourceParameter.setAccountNo(accountNo);
List<PictureSourceResult> resultList = prevailCloudApi.getAllPictureSourceResultApiPage(pictureSourceParameter);
if (CollectionUtils.isEmpty(resultList)) {
continue;
}
totalList.addAll(resultList);
}
int localCount = totalList.size();
int size = 0;
for (PictureSourceResult pictureSourceResult : totalList) {
int retryCount = 0;
boolean addedToQueue = false;
if (pictureSourceResult.getLivePhoto() != null && !pictureSourceResult.getLivePhoto().isEmpty()) {
size++;
// 尝试将数据加入队列
while (!addedToQueue && retryCount < 5) { // 最多重试5次
addedToQueue = TaskQueue.pictureDisposePushData(pictureSourceResult);
if (!addedToQueue) {
Thread.sleep(60000);
retryCount++;
}
}
if (!addedToQueue) {
log.error("无法将数据添加到队列,开始时间:{}任务ID{}", startDate.toString("yyyy-MM-dd HH:mm:ss"), pictureSourceResult.getTaskId().toString());
notAddedToQueueTaskIds.add(pictureSourceResult.getTaskId().toString());
}
}
}
totalLocalCount += localCount;
totalSize += size;
if (!isCountAdded) {
isCountAdded = true; // 标记当天的统计信息已经被累加过了
}
// 准备处理下一页的数据
currentPage++;
// 检查是否有下一页
if (localCount < Integer.parseInt(pageSize)) {
hasNextPage = false;
}
}
// 准备处理下一天的数据
startDate = startDate.offsetNew(DateField.DAY_OF_YEAR, 1);
}
log.error("未加入队列的任务ID列表{}", notAddedToQueueTaskIds);
log.error("当前区间内图片总数:{}条,本次获取:{}条,可处理数据:{}条", totalCount, totalLocalCount, totalSize);
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
return "开启入库";
}
@GetMapping("downloadImageMonitor")
public String downloadImageMonitor(HttpServletRequest request) {
String message;
try {
boolean result = prevailCloudApi.startImageDownloadMonitoring(apiConfig.getLocalImagePath());
if (result) {
message = "操作成功";
} else {
message = "操作失败";
}
} catch (Exception e) {
e.printStackTrace();
message = "操作失败,发生异常:" + e.getMessage();
}
return message;
}
}

@ -61,29 +61,7 @@ public class OcrAiApprovalTools {
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
ResultVo toolscount = iocrsearchhistoryservice.toolscount(tenantId,userToken,request);
return toolscount;
}
/**
*
*
* @param request
* @return
*/
@RequestMapping(value = "/toolsTaskApprovalCount", method = RequestMethod.GET)
public ResultVo toolsTaskApprovalCount(HttpServletRequest request) {
String tenantId = request.getHeader("X-Tenant-Id");
if(StringUtils.isBlank(tenantId)){
return ResultVoUtil.error("租户主键不能为空");
}
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
ResultVo toolscount = iocrsearchhistoryservice.toolsTaskApprovalCount(tenantId,userToken,request);
ResultVo toolscount = iocrsearchhistoryservice.toolscount(tenantId,userToken.getUserid(),request);
return toolscount;
}

@ -81,15 +81,10 @@ public class OcrCheckDuplicateController {
}
//调用查询参数解析方法解析为queryWrapper
queryWrapper = SearchParaFormatting.searchParaParse(queryWrapper, paraMap);
//提报人模糊搜索
String upUserName = req.getParameter("upUserName");
if(StringUtils.isNotBlank(upUserName)){
queryWrapper.like("upName",upUserName);
}
queryWrapper.eq("tenant_id", tenantId);
queryWrapper.eq("suspiciousfile", "0");
queryWrapper.orderBy(true,true,"submit_date_timestamp");
queryWrapper.isNotNull("local_pictrue_url");
List<OcrPicture> pageList = ocrPictureService.listPage(queryWrapper);
if (null != pageList && !pageList.isEmpty()) {
if (pageList.size() == 1) {
@ -119,9 +114,6 @@ public class OcrCheckDuplicateController {
OcrCheckDuplicate dto = this.ocrCheckDuplicateService.getCheckDuplicateStatus(checkDuplicateNo);
if (null != dto) {
if(dto.getStatus()==2){
return ResultVoUtil.success("查重任务执行完毕",dto);
}
return ResultVoUtil.success(dto);
} else {
return ResultVoUtil.error();

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

Loading…
Cancel
Save