Compare commits

..

1 Commits

35
.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
*.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,237 +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="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>

@ -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">
@ -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>
</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="ibox-content">
<form id="searcheuserform" name="searcheuserform" class="form-inline">
<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 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 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="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>
<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,77 +134,21 @@
</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("");
}
refreshAddTable();
};
//折叠ibox
$('#collapes_linkopen').click(function () {
_deptTree.expandAll(true);
$(this).hide();
$("#collapes_linkclose").show();
});
$("#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);
}
});
return array;
};
var _ = {"union":union,"difference":difference};
$(document).ready(function () {
initDepartTree()
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
var jsptoolbar = '';
var jspOperation = '';
var userDisRolesidarray;
var selectConfig = {
'.chosen-select': {},
'.chosen-select-deselect': {
@ -246,6 +164,17 @@
width: "95%"
}
};
jQuery(document).ready(function($){
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")]);
}
});
//审批角色
parent.axgetXiaoyao('${ctx}/backstage/oa/candidate/list',null,false , function(result) {
@ -261,18 +190,26 @@
}
});
_tableAddListUserdistionary = $('#Userdistionary_add_list').bootstrapTable({
url: '${ctx}/backstage/oa/userdistionary/listnoin' ,
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: 20, //每页的记录行数(*
pageSize: 10, //每页的记录行数(*
sidePagination: "server",
idField:"id",
height: "100%",
striped:true, //奇偶行渐色表
clickToSelect:true, //是否选中
maintainSelected:true,
pageList: [20, 50, 100],
pageList: [10, 25, 50],
ajaxOptions:{
headers: {"logintoken": parent.getLoginToken()}
},
@ -282,24 +219,19 @@
sortname: params.sort,
pagesize: params.limit,
start: (params.offset / params.limit) + 1,
parentid: $("#search_parentid").val(),
userDisId: $("#userDisId").val()
userDisId:$("#userDisId").val() ,
search_username:'{"value":"' + $("#search_username").val() + '","op":"equal","type":"string"}',
userDisRolesid: $("#userDisRolesid").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},
{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,
@ -314,137 +246,27 @@
}
]
});
//绑定选中事件、取消事件、全部选中、全部取消
_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));
);
});
function getIdSelections() {
return $.map(_tableListUserdistionary.bootstrapTable('getSelections'), function(row) {
return row.userdistionaryid
});
}else{
$("#savebutton").addClass('removeClass');
parent.toastr.error(data.message);
}
}
});
function _useradd(jframeid){
parent._xiaoyaoOpenMenuTab('${ctx}/backstage/oa/userdistionaryHtml/toSave',"添加人员",jframeid + '_add');
}
});
});
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',
{
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 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();
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");
}
parent.axgetXiaoyao("${ctx}/backstage/admin/department/showDeptJsTree",null,true ,function (data) {
_deptTree = $.fn.zTree.init($("#departZtreeUl"),setting, data);
_deptTree.expandAll(true);
});
}
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);
}
function refreshAddTable(){
_tableAddListUserdistionary.bootstrapTable('refreshOptions',{pageNumber:1});
$("#modal-candidate-user-role").modal("hide");
});
}
function rolesback() {
parent.closeItem(window.frameElement.name);
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");
}
</script>
</body>
</html>
});
} 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(){
_tableListUserdistionary.bootstrapTable('refreshOptions',{pageNumber:1});
}
</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,103 +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"){
refreshTable();
}
});
}
}
function changeFlowRadio(category,processdefinitionid){
$("#caProcessdefinitionid").val(processdefinitionid);
$("#category").val(category);
}
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){
@ -289,28 +168,9 @@
},
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 ? "否" : "是";
return listOperation;
}
},
{ 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 = "";
@ -336,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;
}
}
@ -364,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>
@ -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>
@ -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();

@ -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

@ -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);

@ -102,35 +102,6 @@ public class DepartmentController extends BaseController{
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只有一层节点记录上一级节点主键")
@ -131,37 +130,6 @@ public class Department implements BaseDto,java.io.Serializable {
@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,12 +172,12 @@ 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);
@ -215,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) {

@ -33,12 +33,6 @@ public interface DepartmentService extends BaseService<Department> {
*/
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

@ -206,17 +206,6 @@ 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

@ -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));
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));
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){
@ -632,7 +616,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMybatisDao,User> imple
if(null != user){
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;
@ -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);
@ -246,7 +238,7 @@ 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);
@ -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;
}
}

@ -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
@ -219,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-->
@ -256,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>

@ -48,35 +48,60 @@
</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,8 +21,6 @@ public class GlobalEntityInitListener implements FlowableEventListener {
@Autowired
private CategoryService categoryService;
@Autowired
private DepartmentService departmentService;
@Override
public void onEvent(FlowableEvent flowableEvent) {
FlowableEventType type = flowableEvent.getType();
@ -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);
}
}
}
}

@ -142,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();
@ -157,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,18 +310,16 @@ public class FlowTaskController extends BaseController {
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())){
@ -389,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);
@ -401,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(",")) {
@ -428,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);
@ -460,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) {
// 处理日期解析异常
@ -481,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");
@ -638,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();
}
@ -659,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();
}
@ -676,8 +665,8 @@ public class FlowTaskController extends BaseController {
})
@GetMapping("/repetitionTask")
@ResponseBody
public ResultVo repetitionTask(@RequestParam(value = "type",required = false,defaultValue = "1") Integer type) {
return flowTaskService.repetitionTask(type);
public ResultVo repetitionTask() {
return flowTaskService.repetitionTask();
}
/**
@ -692,9 +681,8 @@ public class FlowTaskController extends BaseController {
@GetMapping("/repetitionTaskList")
@ResponseBody
public ResultVo repetitionTaskList(@RequestParam(name = "pageNo") Integer pageNo,
@RequestParam(name = "pageSize") Integer pageSize,
@RequestParam(value = "type",required = false,defaultValue = "1") Integer type) {
Page<OcrTaskchildPicture> result = flowTaskService.repetitionTaskList(pageNo, pageSize,type);
@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;
/**
*
*/

@ -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);
}

@ -54,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);
@ -142,7 +142,7 @@ public interface IFlowTaskService {
*
* @param processInstanceId
*/
public FlowTaskCompleteVO updateNowTaskAssignee(String processInstanceId, String processDefinitionId,String deptid);
public FlowTaskCompleteVO updateNowTaskAssignee(String processInstanceId, String processDefinitionId);
/**
*
@ -170,14 +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);
ResultVo repetitionTask();
Page<OcrTaskchildPicture> repetitionTaskList(Integer pageNo, Integer pageSize,Integer type);
Page<OcrTaskchildPicture> repetitionTaskList(Integer pageNo, Integer pageSize);
}

@ -45,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,7 +87,7 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
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);
@ -128,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)) {
@ -159,7 +159,7 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
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);

@ -8,8 +8,6 @@ import cn.jyjz.flowable.domain.vo.*;
import cn.jyjz.flowable.entity.FlowApprove;
import cn.jyjz.flowable.entity.FlowTaskInfo;
import cn.jyjz.flowable.service.IFlowInstanceService;
import cn.jyjz.xiaoyao.admin.dataobject.Department;
import cn.jyjz.xiaoyao.admin.service.DepartmentService;
import cn.jyjz.xiaoyao.common.base.language.SystemMessage;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
@ -17,6 +15,7 @@ import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import cn.jyjz.xiaoyao.oa.from.dataDao.FlowableccMybatisDao;
import cn.jyjz.xiaoyao.oa.from.dataDao.IHisFlowableActinstDao;
import cn.jyjz.xiaoyao.oa.from.dataDao.IRunFlowableActinstDao;
import cn.jyjz.flowable.domain.dto.HistoricTaskInstanceDto;
import cn.jyjz.flowable.factory.FlowServiceFactory;
import cn.jyjz.flowable.service.IFlowTaskService;
@ -34,16 +33,15 @@ import cn.jyjz.xiaoyao.oa.from.dataobject.Flowablecc;
import cn.jyjz.xiaoyao.oa.from.service.*;
import cn.jyjz.xiaoyao.oa.from.vo.FlowUnionVo;
import cn.jyjz.xiaoyao.oa.from.vo.RepeatedContentVo;
import cn.jyjz.xiaoyao.oa.from.vo.RepeatedTaskVo;
import cn.jyjz.xiaoyao.ocr.dataobject.*;
import cn.jyjz.xiaoyao.ocr.service.*;
import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting;
import cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo;
import cn.jyjz.xiaoyao.ocr.vo.OcrTaskchildPictureApproVo;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@ -104,9 +102,9 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
@Resource
private UserFinalService userFinalService;
@Resource
private DepartmentService departmentService;
private IRunFlowableActinstDao runFlowableActinstDao;
@Resource
private OcrCheckDescribeHisService ocrCheckDescribeHisService;
private IHisFlowableActinstDao hisFlowableActinstDao;
@Resource
private OcrUsersearchService ocrUsersearchService;
@ -458,10 +456,9 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
variables.put("approvd", approve.getResult());
OcrTaskchildPicture model = ocrTaskchildPictureService.getById(Long.parseLong(flowTaskInfo.getFormId()));
if (approve.getResult()) {
disposeSucceedTask(task, processDefinition, variables, model, flowTaskInfo.getFormId(), userToken, approve, approve.getDeptid());
disposeSucceedTask(task, processDefinition, variables, model, flowTaskInfo.getFormId(), userToken);
} else {
disposeFailureTask(task, flowTaskInfo.getFormId(), variables, approve);
disposeFailureTask(task, flowTaskInfo.getFormId(), variables);
}
userapproveService.save(userToken, approve, task, flowTaskInfo.getFormId());
successCount++;
@ -478,47 +475,35 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
/**
*
*/
private void disposeSucceedTask(Task task, ProcessDefinition processDefinition, Map<String, Object> variables,
OcrTaskchildPicture model, String formId, UserToken userToken, FlowApprove approve, String deptid) throws Exception {
private void disposeSucceedTask(Task task, ProcessDefinition processDefinition, Map<String, Object> variables, OcrTaskchildPicture model, String formId, UserToken userToken) {
//进入下一个节点
taskService.complete(task.getId(), variables);
updateAssignee(task.getProcessInstanceId(), task.getProcessDefinitionId(), processDefinition, deptid);
Department department = departmentService.getOne(new LambdaQueryWrapper<Department>().eq(Department::getDeptno, deptid));
IFormCustomService iFormCustomService = SpringUtils.getBean(department.getServicename());
updateAssignee(task.getProcessInstanceId(), task.getProcessDefinitionId(), processDefinition);
String category = processDefinition.getCategory();
Category categoryDto = this.categoryService.getCategory(category);
IFormCustomService iFormCustomService = SpringUtils.getBean(categoryDto.getServicename());
FlowModelVO formData = iFormCustomService.getForm(formId);
List<Task> taskList = this.nowRunTask(formData.getProcessInstanceId(), formData.getProcessdefinitionid());
OcrTaskchildPicture childPicture = ocrTaskchildPictureService.getById(Long.parseLong(formId));
Task taskData = null;
if (null != taskList && !taskList.isEmpty()) {
taskData = taskList.get(0);
if (taskList.size() > 1) {
List<String> taskIds = taskList.stream().map(Task::getId).collect(Collectors.toList());
List<String> taskNames = taskList.stream().map(Task::getName).collect(Collectors.toList());
childPicture.setTaskId(String.join(",", taskIds));
childPicture.setTaskname(String.join(",", taskNames));
} else {
childPicture.setTaskId(taskData.getId());
childPicture.setTaskname(taskData.getName());
}
}
if (ObjectUtils.isEmpty(taskData)) {
model.setFinishtime(System.currentTimeMillis());
model.setStates(SystemConstantsOa.OA_STATUS_TYPE_END);
OcrPicture picture = ocrPictureService.getById(model.getPictureid());
ocrTaskchildPictureService.sendFlowTaskResult(childPicture, picture, approve);
ocrTaskchildPictureService.updateById(model);
} else {
childPicture.setTaskNode(taskData.getDescription());
//判断节点上的描述字段是否伟finale_judgment,如果是,记录到终审表中,如果终审表已经存在,不再重复记录
if (StringUtils.isNotBlank(taskData.getDescription()) && taskData.getDescription().equals(SystemConstantsOa.OA_TASK_COMPLETE_FINALE_FORM)) {
childPicture.setIsFinal(1);
String[] split = formData.getAssignee().split(",");
List<cn.jyjz.xiaoyao.common.base.vo.User> userList = userTokenService.findByLoginNameList(split);
userFinalService.save(userList, formId);
User user = userService.findByLoginname(formData.getAssignee());
userFinalService.save(user.getId().toString(), formId);
}
OcrTaskchildPicture childPicture = ocrTaskchildPictureService.getById(Long.parseLong(formId));
this.sendMsg(childPicture, userToken);
}
childPicture.setTaskId(taskData.getId());
childPicture.setTaskname(taskData.getName());
ocrTaskchildPictureService.updateById(childPicture);
}
//增加未查看记录
userViewApproeService.saveUserViewApproe(formData.getAssignee(), formData.getFormid().toString(), formData.getTenantid().toString());
@ -527,8 +512,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
/**
*
*/
private void disposeFailureTask(Task task, String formId, Map<String, Object> variables, FlowApprove approve) throws
Exception {
private void disposeFailureTask(Task task, String formId, Map<String, Object> variables) {
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();
//我这里以 流程定义key(oa_category_t定义的关键字逻辑唯一) + 业务表主键(请假表、调岗表等) + 业务表对应的servicename
String businesskey = processInstance.getBusinessKey();
@ -551,35 +535,30 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
//设置流程结束状态
iFormCustomService.endForm(busskey[1], SystemConstantsOa.OA_STATUS_TYPE_REFUSE, assignee, task.getProcessInstanceId(), task.getName());
}
//1、获取终止节点
List<EndEvent> endNodes = findEndFlowElement(task.getProcessDefinitionId());
//2、执行终止
List<Execution> executions = runtimeService.createExecutionQuery().parentId(task.getProcessInstanceId()).list();
List<String> executionIds = new ArrayList<>();
executions.forEach(execution -> executionIds.add(execution.getId()));
OcrTaskchildPicture taskchildPicture = ocrTaskchildPictureService.getById(Long.parseLong(formId));
taskchildPicture.setFinishtime(System.currentTimeMillis());
taskchildPicture.setIsFinal(1);
ocrTaskchildPictureService.updateById(taskchildPicture);
OcrPicture picture = ocrPictureService.getById(taskchildPicture.getPictureid());
ocrTaskchildPictureService.sendFlowTaskResult(taskchildPicture, picture, approve);
}
//发送消息
public void sendMsg(OcrTaskchildPicture model, UserToken userToken) {
String[] split = model.getAssignee().split(",");
List<cn.jyjz.xiaoyao.common.base.vo.User> userList = userTokenService.findByLoginNameList(split);
for (cn.jyjz.xiaoyao.common.base.vo.User user : userList) {
cn.jyjz.xiaoyao.common.base.vo.User byLoginname = userTokenService.findByLoginname(model.getAssignee());
OcrMsg msg = new OcrMsg();
msg.setCreateTime(System.currentTimeMillis());
msg.setSendTime(System.currentTimeMillis());
msg.setReceiveUserIds(user.getId().toString());
msg.setReceiveUserIds(byLoginname.getId().toString());
msg.setTitile(model.getFromtaskname());
msg.setSender(Long.valueOf(userToken.getUserid()));
JSONObject jsonObject = new JSONObject();
jsonObject.put("taskId", model.getFromtaskid());
jsonObject.put("nodeName", model.getTaskname());
jsonObject.put("states", 1);
jsonObject.put("statesName", "待审批");
jsonObject.put("sendUserId", userToken.getUserid());
jsonObject.put("sendUserName", userToken.getUsername());
jsonObject.put("sendTime", System.currentTimeMillis());
@ -594,18 +573,15 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
ocrMsgService.save(msg);
}
}
/**
*
*
* @param processDefinition
*/
public void updateAssignee(String processInstanceId, String processDefinitionId, ProcessDefinition
processDefinition, String deptid) {
public void updateAssignee(String processInstanceId, String processDefinitionId, ProcessDefinition processDefinition) {
//如果是多个候选人或者是候选组,做任务拾取
FlowTaskCompleteVO flowTaskCompleteVO = updateNowTaskAssignee(processInstanceId, processDefinitionId, deptid);
FlowTaskCompleteVO flowTaskCompleteVO = updateNowTaskAssignee(processInstanceId, processDefinitionId);
if (null != flowTaskCompleteVO) {
@ -694,7 +670,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
*
* @param processInstanceId
*/
public FlowTaskCompleteVO updateNowTaskAssignee(String processInstanceId, String processDefinitionId, String deptid) {
public FlowTaskCompleteVO updateNowTaskAssignee(String processInstanceId, String processDefinitionId) {
FlowTaskCompleteVO flowTaskCompleteVO = null;
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
@ -731,7 +707,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
//发起人员登录账号
String startUserId = hi.getStartUserId();
//通过候选组主键,查询审批人员信息,并自动拾取
loginuser = candidateuserService.getClaimUser(startUserId, groupid, deptid);
loginuser = candidateuserService.getClaimUser(startUserId, groupid);
if (StringUtils.isNotBlank(loginuser)) {
taskService.claim(task.getId(), loginuser);
}
@ -1000,7 +976,6 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
ParamterPage paramterPage = new ParamterPage();
paramterPage.setStart((pageUtils.getCurrPage() - 1) * pageUtils.getPageSize());
paramterPage.setPagesize(pageUtils.getPageSize());
Page<OcrTaskchildPicture> page = new Page<>();
if (StringUtils.isNotBlank(pageUtils.getSortname())) {
paramterPage.setSortname(pageUtils.getSortname());
@ -1014,96 +989,97 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
paramterPage.setSortorder("DESC");
}
query.put("page", paramterPage);
Long count = ocrTaskchildPictureService.listFinalCount(query);
query.put("page", paramterPage);
List<OcrTaskchildPicture> list = ocrTaskchildPictureService.listFinal(query);
// for (OcrTaskchildPicture taskchildPicture : list) {
// //查询对应的流程分类
// Category category = categoryService.selectDtoById(taskchildPicture.getCategoryid());
// taskchildPicture.setCategoryDto(category);
//
// if (StringUtils.isNotBlank(taskchildPicture.getProcessdefinitionid())) {
//
// List<Task> taskList = this.nowRunTask(taskchildPicture.getProcessinstanceid(), taskchildPicture.getProcessdefinitionid());
// if (null != taskList && !taskList.isEmpty()) {
// taskchildPicture.setTaskId(taskList.get(0).getId());
//
// Task tasknow = taskService.createTaskQuery().taskId(taskchildPicture.getTaskId()).singleResult();
// BpmnModel bpmnModel = repositoryService.getBpmnModel(tasknow.getProcessDefinitionId());
// // 获取节点定义id
// String taskDefinitionKey = tasknow.getTaskDefinitionKey();
for (OcrTaskchildPicture taskchildPicture : list) {
//查询对应的流程分类
Category category = categoryService.selectDtoById(taskchildPicture.getCategoryid());
taskchildPicture.setCategoryDto(category);
if (StringUtils.isNotBlank(taskchildPicture.getProcessdefinitionid())) {
List<Task> taskList = this.nowRunTask(taskchildPicture.getProcessinstanceid(), taskchildPicture.getProcessdefinitionid());
if (null != taskList && !taskList.isEmpty()) {
taskchildPicture.setTaskId(taskList.get(0).getId());
Task tasknow = taskService.createTaskQuery().taskId(taskchildPicture.getTaskId()).singleResult();
BpmnModel bpmnModel = repositoryService.getBpmnModel(tasknow.getProcessDefinitionId());
// 获取节点定义id
String taskDefinitionKey = tasknow.getTaskDefinitionKey();
// 根据节点定义id获取节点元素
FlowElement flowElement = bpmnModel.getFlowElement(taskDefinitionKey);
if (flowElement instanceof UserTask) {
UserTask userTask = (UserTask) flowElement;
taskchildPicture.setDocumentation(userTask.getDocumentation());
}
}
//查询历史
List<HistoricTaskInstanceDto> historicTaskInstanceDtos = new ArrayList<>();
// 查询当前任务的流转信息
List<HistoricTaskInstance> taskHiInstances = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(taskchildPicture.getProcessinstanceid())
.includeProcessVariables()
.orderByHistoricTaskInstanceStartTime()
.asc()
.list();
for (HistoricTaskInstance taskHiInstance : taskHiInstances) {
HistoricTaskInstanceDto dto = new HistoricTaskInstanceDto();
dto.setTaskId(taskHiInstance.getId());
dto.setTaskName(taskHiInstance.getName());
dto.setFinishTime(taskHiInstance.getEndTime());
if (taskHiInstance.getDurationInMillis() != null) {
dto.setDuration(taskHiInstance.getDurationInMillis() / 1000 + "秒");
}
dto.setTaskDefKey(taskHiInstance.getTaskDefinitionKey());
//Map<String,Object> variables = taskHiInstance.getTaskLocalVariables();
Map<String, Object> variables = taskHiInstance.getProcessVariables();
if (null != variables && null != variables.get("approvd")) {
dto.setState(variables.get("approvd").toString());
}
if (StringUtils.isNotBlank(taskHiInstance.getAssignee())) {
if (SystemConstantsOa.OA_TASK_SKIP_ASSIGINE.equals(taskHiInstance.getAssignee())) {
dto.setAssigneeName(taskHiInstance.getAssignee());
} else {
User user1 = userService.findByLoginname(taskHiInstance.getAssignee());
dto.setAssigneeName(user1.getUsername());
}
}
BpmnModel bpmnModel = repositoryService.getBpmnModel(taskchildPicture.getProcessdefinitionid());
// // 根据节点定义id获取节点元素
// FlowElement flowElement = bpmnModel.getFlowElement(taskDefinitionKey);
// if (flowElement instanceof UserTask) {
// UserTask userTask = (UserTask) flowElement;
//
// taskchildPicture.setDocumentation(userTask.getDocumentation());
// }
// }
//
// //查询历史
// List<HistoricTaskInstanceDto> historicTaskInstanceDtos = new ArrayList<>();
// // 查询当前任务的流转信息
// List<HistoricTaskInstance> taskHiInstances = historyService.createHistoricTaskInstanceQuery()
// .processInstanceId(taskchildPicture.getProcessinstanceid())
// .includeProcessVariables()
// .orderByHistoricTaskInstanceStartTime()
// .asc()
// .list();
// for (HistoricTaskInstance taskHiInstance : taskHiInstances) {
// HistoricTaskInstanceDto dto = new HistoricTaskInstanceDto();
// dto.setTaskId(taskHiInstance.getId());
// dto.setTaskName(taskHiInstance.getName());
// dto.setFinishTime(taskHiInstance.getEndTime());
// if (taskHiInstance.getDurationInMillis() != null) {
// dto.setDuration(taskHiInstance.getDurationInMillis() / 1000 + "秒");
// }
// dto.setTaskDefKey(taskHiInstance.getTaskDefinitionKey());
//
// //Map<String,Object> variables = taskHiInstance.getTaskLocalVariables();
//
// Map<String, Object> variables = taskHiInstance.getProcessVariables();
//
// if (null != variables && null != variables.get("approvd")) {
// dto.setState(variables.get("approvd").toString());
// }
//
// if (StringUtils.isNotBlank(taskHiInstance.getAssignee())) {
// if (SystemConstantsOa.OA_TASK_SKIP_ASSIGINE.equals(taskHiInstance.getAssignee())) {
// dto.setAssigneeName(taskHiInstance.getAssignee());
// } else {
// User user1 = userService.findByLoginname(taskHiInstance.getAssignee());
//
// dto.setAssigneeName(user1.getUsername());
// }
//
// }
//
// BpmnModel bpmnModel = repositoryService.getBpmnModel(taskchildPicture.getProcessdefinitionid());
//
//// // 根据节点定义id获取节点元素
// FlowElement flowElement = bpmnModel.getFlowElement(taskHiInstance.getTaskDefinitionKey());
// if (flowElement instanceof UserTask) {
// UserTask userTask = (UserTask) flowElement;
//
// taskchildPicture.setDocumentation(userTask.getDocumentation());
// }
// // 还需要根据 HistoricTaskInstance 找到对应的 审批意见
// List<Comment> processInstanceComments = taskService.getProcessInstanceComments(taskchildPicture.getProcessinstanceid());
// for (Comment comment : processInstanceComments) {
//
// if (comment.getTaskId().equals(taskHiInstance.getId())) {
// // 审批意见
// String fullMessage = comment.getFullMessage();
// dto.setComment(fullMessage);
// }
// }
// historicTaskInstanceDtos.add(dto);
// }
// taskchildPicture.setTransferRecords(historicTaskInstanceDtos);
// }
// }
FlowElement flowElement = bpmnModel.getFlowElement(taskHiInstance.getTaskDefinitionKey());
if (flowElement instanceof UserTask) {
UserTask userTask = (UserTask) flowElement;
taskchildPicture.setDocumentation(userTask.getDocumentation());
}
// 还需要根据 HistoricTaskInstance 找到对应的 审批意见
List<Comment> processInstanceComments = taskService.getProcessInstanceComments(taskchildPicture.getProcessinstanceid());
for (Comment comment : processInstanceComments) {
if (comment.getTaskId().equals(taskHiInstance.getId())) {
// 审批意见
String fullMessage = comment.getFullMessage();
dto.setComment(fullMessage);
}
}
historicTaskInstanceDtos.add(dto);
}
taskchildPicture.setTransferRecords(historicTaskInstanceDtos);
}
}
pageUtils.setTotalCount(count.intValue());
pageUtils.setList(list);
@ -1316,8 +1292,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* @param tenantId
* @param pageUtils
*/
public void getMyProcessInstances(User user, String tenantId, Map<String, Object> searchQuery, PageUtils
pageUtils, String userSearchId) {
public void getMyProcessInstances(User user, String tenantId, Map<String, Object> searchQuery, PageUtils pageUtils, String userSearchId) {
ParamterPage paramterPage = new ParamterPage();
paramterPage.setStart((pageUtils.getCurrPage() - 1) * pageUtils.getPageSize());
paramterPage.setPagesize(pageUtils.getPageSize());
@ -1342,14 +1317,14 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
query.put("searchassignee", user.getLoginname());
query.putAll(searchQuery);
if (!StringUtils.isBlank(userSearchId)) {
OcrUsersearch ocrUsersearch = ocrUsersearchService.selectByUserSearchId(userSearchId);
SearchQuery additionalQuery = new SearchQuery();
for (OcrUsersearchchild usersearchchild : ocrUsersearch.getOcrUsersearchchildList()) {
this.formattingSearchChild1(additionalQuery, usersearchchild);
}
query.putAll(additionalQuery.getQuery());
}
// if (!StringUtils.isBlank(userSearchId)) {
// OcrUsersearch ocrUsersearch = ocrUsersearchService.selectByUserSearchId(userSearchId);
// SearchQuery additionalQuery = new SearchQuery();
// for (OcrUsersearchchild usersearchchild : ocrUsersearch.getOcrUsersearchchildList()) {
// this.formattingSearchChild1(additionalQuery, usersearchchild);
// }
// query.putAll(additionalQuery.getQuery());
// }
Long count = ocrTaskchildPictureService.listmytaskCount(query);
@ -1366,6 +1341,91 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
taskchildPicture.setPicture(ocrPictureOne);
taskchildPicture.setFinishTime(ocrPictureOne.getSubmitDateTimestamp());
}
//查询对应的流程分类
Category category = categoryService.selectDtoById(Long.parseLong(taskchildPicture.getCategoryid()));
taskchildPicture.setCategoryDto(category);
if (StringUtils.isNotBlank(taskchildPicture.getProcessdefinitionid())) {
List<Task> taskList = this.nowRunTask(taskchildPicture.getProcessinstanceid(), taskchildPicture.getProcessdefinitionid());
if (null != taskList && !taskList.isEmpty()) {
taskchildPicture.setTaskId(taskList.get(0).getId());
Task tasknow = taskService.createTaskQuery().taskId(taskchildPicture.getTaskId()).singleResult();
BpmnModel bpmnModel = repositoryService.getBpmnModel(tasknow.getProcessDefinitionId());
// 获取节点定义id
String taskDefinitionKey = tasknow.getTaskDefinitionKey();
// 根据节点定义id获取节点元素
FlowElement flowElement = bpmnModel.getFlowElement(taskDefinitionKey);
if (flowElement instanceof UserTask) {
UserTask userTask = (UserTask) flowElement;
taskchildPicture.setDocumentation(userTask.getDocumentation());
}
}
//查询历史
List<HistoricTaskInstanceDto> historicTaskInstanceDtos = new ArrayList<>();
// 查询当前任务的流转信息
List<HistoricTaskInstance> taskHiInstances = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(taskchildPicture.getProcessinstanceid())
.includeProcessVariables()
.orderByHistoricTaskInstanceStartTime()
.asc()
.list();
for (HistoricTaskInstance taskHiInstance : taskHiInstances) {
HistoricTaskInstanceDto dto = new HistoricTaskInstanceDto();
dto.setTaskId(taskHiInstance.getId());
dto.setTaskName(taskHiInstance.getName());
dto.setFinishTime(taskHiInstance.getEndTime());
if (taskHiInstance.getDurationInMillis() != null) {
dto.setDuration(taskHiInstance.getDurationInMillis() / 1000 + "秒");
}
dto.setTaskDefKey(taskHiInstance.getTaskDefinitionKey());
//Map<String,Object> variables = taskHiInstance.getTaskLocalVariables();
Map<String, Object> variables = taskHiInstance.getProcessVariables();
if (null != variables && null != variables.get("approvd")) {
dto.setState(variables.get("approvd").toString());
}
if (StringUtils.isNotBlank(taskHiInstance.getAssignee())) {
if (SystemConstantsOa.OA_TASK_SKIP_ASSIGINE.equals(taskHiInstance.getAssignee())) {
dto.setAssigneeName(taskHiInstance.getAssignee());
} else {
User user1 = userService.findByLoginname(taskHiInstance.getAssignee());
dto.setAssigneeName(user1.getUsername());
}
}
BpmnModel bpmnModel = repositoryService.getBpmnModel(taskchildPicture.getProcessdefinitionid());
// // 根据节点定义id获取节点元素
FlowElement flowElement = bpmnModel.getFlowElement(taskHiInstance.getTaskDefinitionKey());
if (flowElement instanceof UserTask) {
UserTask userTask = (UserTask) flowElement;
taskchildPicture.setDocumentation(userTask.getDocumentation());
}
// 还需要根据 HistoricTaskInstance 找到对应的 审批意见
List<Comment> processInstanceComments = taskService.getProcessInstanceComments(taskchildPicture.getProcessinstanceid());
for (Comment comment : processInstanceComments) {
if (comment.getTaskId().equals(taskHiInstance.getId())) {
// 审批意见
String fullMessage = comment.getFullMessage();
dto.setComment(fullMessage);
}
}
historicTaskInstanceDtos.add(dto);
}
taskchildPicture.setTransferRecords(historicTaskInstanceDtos);
}
}
pageUtils.setTotalCount(count.intValue());
@ -1424,7 +1484,6 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
ocrTaskchildPictureApproVo.setProjectName(one.getFromprojectname());//项目名称
ocrTaskchildPictureApproVo.setCustomerLevel(one.getFromCustomerLevel());//客户级别
ocrTaskchildPictureApproVo.setReleaseArea(one.getFromCity());//拜访城市
ocrTaskchildPictureApproVo.setTaskIndex(one.getTaskNodeIndex() == null ? "1" : one.getTaskNodeIndex());
listNew.add(ocrTaskchildPictureApproVo);
}
@ -1440,8 +1499,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* @param tenantId
* @param pageUtils
*/
public List<OcrTaskchildPictureAppro> getMyProcessInstancesNew(User user, String
tenantId, Map<String, Object> searchQuery, PageUtils pageUtils) {
public List<OcrTaskchildPictureAppro> getMyProcessInstancesNew(User user, String tenantId, Map<String, Object> searchQuery, PageUtils pageUtils) {
ParamterPage paramterPage = new ParamterPage();
paramterPage.setStart((pageUtils.getCurrPage() - 1) * pageUtils.getPageSize());
paramterPage.setPagesize(pageUtils.getPageSize());
@ -1586,8 +1644,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
*
* @return
*/
public IPage<FlowUnionVo> getMyListCc(Map<String, Object> query, UserToken userToken, ParamterPage
paramterPage) {
public IPage<FlowUnionVo> getMyListCc(Map<String, Object> query, UserToken userToken, ParamterPage paramterPage) {
//查询抄送给当前用户的fromid集合
QueryWrapper queryWrapper = new QueryWrapper();
@ -1704,7 +1761,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
}
public ResultVo removeTask(String fromid, String taskid, String deptid) {
public ResultVo removeTask(String fromid, String taskid) {
// 获取当前任务
OcrTaskchildPicture ocrTaskchildPicture = this.ocrTaskchildPictureService.selectDtoById(Long.parseLong(fromid));
@ -1723,7 +1780,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
String historyProcessDefinitionId = terminatedInstances.get(0).getProcessDefinitionId();
boolean isStart = iFlowInstanceService.startProcessInstanceById(historyProcessDefinitionId, ocrTaskchildPicture.getCreateusername(),
ocrTaskchildPicture.getCreateuser(), ocrTaskchildPicture.getId().toString(), category.getServicename(), deptid);
ocrTaskchildPicture.getCreateuser(), ocrTaskchildPicture.getId().toString(), category.getServicename());
if (isStart) {
ResultVoUtil.success();
@ -1743,7 +1800,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
Category category = this.categoryService.getById(ocrTaskchildPicture.getCategoryid());
boolean isStart = iFlowInstanceService.startProcessInstanceById(task.getProcessDefinitionId(), ocrTaskchildPicture.getCreateusername(),
ocrTaskchildPicture.getCreateuser(), ocrTaskchildPicture.getId().toString(), category.getServicename(), deptid);
ocrTaskchildPicture.getCreateuser(), ocrTaskchildPicture.getId().toString(), category.getServicename());
if (isStart) {
ResultVoUtil.success();
@ -1758,58 +1815,14 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
}
@Override
public ResultVo repetitionTask(Integer type) {
List<RepeatedContentVo> repeatedContentVoList = flowableccMybatisDao.repetitionTask(type);
List<String> formIdsToUpdate = new ArrayList<>();
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(repeatedContentVoList)) {
List<OcrCheckDescribeHis> checkDescribeHis = new ArrayList<>();
for (RepeatedContentVo contentVo : repeatedContentVoList) {
if (org.apache.commons.lang3.StringUtils.isNotBlank(contentVo.getPictureIds())) {
String[] pictureIds = contentVo.getPictureIds().split(",");
formIdsToUpdate.addAll(Arrays.asList(pictureIds));
List<OcrCheckDescribeHis> list = ocrCheckDescribeHisService.list(new LambdaQueryWrapper<OcrCheckDescribeHis>().in(OcrCheckDescribeHis::getPictureId, pictureIds));
Map<String, List<OcrCheckDescribeHis>> resultMap = new HashMap<>();
if (!CollectionUtils.isEmpty(list)) {
resultMap = list.stream().collect(Collectors.groupingBy(OcrCheckDescribeHis::getPictureId));
}
for (String pictureId : pictureIds) {
Set<String> set = new HashSet<>();
OcrCheckDescribeHis describeHis;
List<OcrCheckDescribeHis> ocrCheckDescribeHis = resultMap.get(pictureId);
if (!CollectionUtils.isEmpty(ocrCheckDescribeHis)) {
describeHis = ocrCheckDescribeHis.get(0);
String[] split = describeHis.getCheckResult().split(",");
set.addAll(Arrays.asList(split));
} else {
describeHis = new OcrCheckDescribeHis();
}
set.addAll(Arrays.asList(pictureIds));
set.remove(pictureId);
describeHis.setDescribe(contentVo.getContent());
describeHis.setPictureId(pictureId);
describeHis.setCheckResult(String.join(",", set));
checkDescribeHis.add(describeHis);
}
}
}
ocrCheckDescribeHisService.saveOrUpdateBatch(checkDescribeHis);
UpdateWrapper<OcrTaskchildPicture> updateWrapper = new UpdateWrapper<>();
updateWrapper.in("PICTUREID", formIdsToUpdate)
.eq("is_repeated_nodules", 0);
OcrTaskchildPicture updateEntity = new OcrTaskchildPicture();
updateEntity.setIsRepeatedNodules(1);
ocrTaskchildPictureService.update(updateEntity, updateWrapper);
}
return ResultVoUtil.success(repeatedContentVoList);
public ResultVo repetitionTask() {
return ResultVoUtil.success(flowableccMybatisDao.repetitionTask());
}
@Override
public Page<OcrTaskchildPicture> repetitionTaskList(Integer pageNo, Integer pageSize, Integer type) {
public Page<OcrTaskchildPicture> repetitionTaskList(Integer pageNo, Integer pageSize) {
Page<OcrTaskchildPicture> page = new Page<>(pageNo, pageSize);
Page<OcrTaskchildPicture> result = flowableccMybatisDao.repetitionTaskList(page, type);
Page<OcrTaskchildPicture> result = flowableccMybatisDao.repetitionTaskList(page);
return result;
}
@ -1820,8 +1833,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* @param usersearchchild
* @return
*/
private QueryWrapper<OcrTaskchildPicture> formattingSearchChild
(QueryWrapper<OcrTaskchildPicture> queryWrapper, OcrUsersearchchild usersearchchild) {
private QueryWrapper<OcrTaskchildPicture> formattingSearchChild(QueryWrapper<OcrTaskchildPicture> queryWrapper, OcrUsersearchchild usersearchchild) {
switch (usersearchchild.getSearchRelationType()) {
case "where":
this.formattingSearchType(queryWrapper, usersearchchild);
@ -1845,8 +1857,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* @param usersearchchild
* @return
*/
private QueryWrapper<OcrTaskchildPicture> formattingSearchType
(QueryWrapper<OcrTaskchildPicture> queryWrapper, OcrUsersearchchild usersearchchild) {
private QueryWrapper<OcrTaskchildPicture> formattingSearchType(QueryWrapper<OcrTaskchildPicture> queryWrapper, OcrUsersearchchild usersearchchild) {
//查询类型 相等true 不相等fase
boolean queryType = "eq".equals(usersearchchild.getSearchtype());
@ -1942,134 +1953,132 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
return queryWrapper;
}
private SearchQuery formattingSearchChild1(SearchQuery searchQuery, OcrUsersearchchild usersearchchild) {
switch (usersearchchild.getSearchRelationType()) {
case "where":
// 添加 "where" 查询条件
this.formattingSearchType1(searchQuery, usersearchchild);
break;
case "and":
// 添加 "and" 查询条件
searchQuery.addRulesOp(usersearchchild.getSearchfield(), "and");
SearchQuery andQuery = this.formattingSearchType1(searchQuery, usersearchchild);
searchQuery.setSearchQuery(andQuery);
break;
case "or":
// 添加 "or" 查询条件
searchQuery.addRulesOp(usersearchchild.getSearchfield(), "or");
SearchQuery orQuery = this.formattingSearchType1(searchQuery, usersearchchild);
searchQuery.setSearchQuery(orQuery);
break;
default:
break;
}
return searchQuery;
}
private SearchQuery formattingSearchType1(SearchQuery searchQuery, OcrUsersearchchild usersearchchild) {
//查询类型 相等true 不相等fase
boolean queryType = "eq".equals(usersearchchild.getSearchtype());
// 1.获取检查数据,确定数据类型
String valueType = SearchParaFormatting.clickSearchValue(usersearchchild.getSearchvalue());
List<String> arrayData = null; //集合型数据
List<Integer> sectionInts = null; //纯数字区间型数据
String[] sections = null; //字符串区间型数据
DateTime beginTime = null; //日期时间区间型数据
DateTime endTime = null; //日期时间区间型数据
// 2.根据数据类型,解构数据
switch (valueType) {
case "array":
//处理多文件
String[] datas = usersearchchild.getSearchvalue().split(",");
arrayData = Arrays.asList(datas);
break;
case "section":
//格式化数据,仅在做区间的时候去除空格,其他地方不进行空格去除.
sections = usersearchchild.getSearchvalue().trim().replaceAll("\\s+", "").split("-");
//校验是否纯数字,纯数字的话要转成int,否则比对时会有问题
sectionInts = new ArrayList<>();
for (String data : sections) {
if (data.matches("\\d+")) {
sectionInts.add(Integer.parseInt(data));
}
}
break;
case "time":
//格式化时间数据
String[] times = usersearchchild.getSearchvalue().trim().replaceAll("\\s+", "").split("-");
beginTime = DateUtil.parse(times[0] + " 00:00:00", "yyyy/MM/dd HH:mm:ss");
endTime = DateUtil.parse(times[1] + " 23:59:59", "yyyy/MM/dd HH:mm:ss");
break;
default:
}
// 3.根据查询类型 组装查询条件 相等
switch (valueType) {
case "array":
//集合数据
//相等
if (queryType) {
searchQuery.addIn(usersearchchild.getSearchfield(), arrayData);
break;
}
//不相等
searchQuery.addNotIn(usersearchchild.getSearchfield(), arrayData);
break;
case "section":
//数字区间查询
if (sectionInts != null && sectionInts.size() == 2) {
if (queryType) {
//相等
searchQuery.addGreaterEqual(usersearchchild.getSearchfield(), sectionInts.get(0));
searchQuery.addLessEqual(usersearchchild.getSearchfield(), sectionInts.get(1));
break;
}
//不相等
searchQuery.addLess(usersearchchild.getSearchfield(), sectionInts.get(0));
searchQuery.addGreater(usersearchchild.getSearchfield(), sectionInts.get(1));
break;
}
//字符串区间查询
if (queryType) {
//相等
searchQuery.addGreaterEqual(usersearchchild.getSearchfield(), sections[0]);
searchQuery.addLessEqual(usersearchchild.getSearchfield(), sections[1]);
break;
}
//不相等
searchQuery.addLess(usersearchchild.getSearchfield(), sections[0]);
searchQuery.addGreater(usersearchchild.getSearchfield(), sections[1]);
break;
case "time":
//时间区间数据
//相等
if (queryType) {
searchQuery.addGreaterEqual(usersearchchild.getSearchfield() + "Start", beginTime.getTime());
searchQuery.addLessEqual(usersearchchild.getSearchfield() + "End", endTime.getTime());
break;
}
//不相等
searchQuery.addRulesOp(usersearchchild.getSearchfield() + "Start", "or");
searchQuery.addLess(usersearchchild.getSearchfield() + "Start", beginTime.getTime());
searchQuery.addGreater(usersearchchild.getSearchfield() + "End", endTime.getTime());
break;
default:
if (queryType) {
searchQuery.addEqual(usersearchchild.getSearchfield(), usersearchchild.getSearchvalue());
break;
}
searchQuery.addNotEqual(usersearchchild.getSearchfield(), usersearchchild.getSearchvalue());
}
return searchQuery;
}
// private SearchQuery formattingSearchChild1(SearchQuery searchQuery, OcrUsersearchchild usersearchchild) {
// switch (usersearchchild.getSearchRelationType()) {
// case "where":
// // 添加 "where" 查询条件
// this.formattingSearchType1(searchQuery, usersearchchild);
// break;
// case "and":
// // 添加 "and" 查询条件
// searchQuery.addRulesOp(usersearchchild.getSearchfield(),"and");
// SearchQuery andQuery = this.formattingSearchType1(searchQuery, usersearchchild);
// searchQuery.setSearchQuery(andQuery);
// break;
// case "or":
// // 添加 "or" 查询条件
// searchQuery.addRulesOp(usersearchchild.getSearchfield(),"or");
// SearchQuery orQuery = this.formattingSearchType1(searchQuery, usersearchchild);
// searchQuery.setSearchQuery(orQuery);
// break;
// default:
// break;
// }
// return searchQuery;
// }
//
// private SearchQuery formattingSearchType1(SearchQuery searchQuery, OcrUsersearchchild usersearchchild) {
// //查询类型 相等true 不相等fase
// boolean queryType = "eq".equals(usersearchchild.getSearchtype());
//
// // 1.获取检查数据,确定数据类型
// String valueType = SearchParaFormatting.clickSearchValue(usersearchchild.getSearchvalue());
// List<String> arrayData = null; //集合型数据
// List<Integer> sectionInts = null; //纯数字区间型数据
// String[] sections = null; //字符串区间型数据
// DateTime beginTime = null; //日期时间区间型数据
// DateTime endTime = null; //日期时间区间型数据
//
// // 2.根据数据类型,解构数据
// switch (valueType) {
// case "array":
// //处理多文件
// String[] datas = usersearchchild.getSearchvalue().split(",");
// arrayData = Arrays.asList(datas);
// break;
// case "section":
// //格式化数据,仅在做区间的时候去除空格,其他地方不进行空格去除.
// sections = usersearchchild.getSearchvalue().trim().replaceAll("\\s+", "").split("-");
// //校验是否纯数字,纯数字的话要转成int,否则比对时会有问题
// sectionInts = new ArrayList<>();
// for (String data : sections) {
// if (data.matches("\\d+")) {
// sectionInts.add(Integer.parseInt(data));
// }
// }
// break;
// case "time":
// //格式化时间数据
// String[] times = usersearchchild.getSearchvalue().trim().replaceAll("\\s+", "").split("-");
// beginTime = DateUtil.parse(times[0], "yyyy/MM/dd");
// endTime = DateUtil.parse(times[1], "yyyy/MM/dd");
// break;
// default:
// }
//
// // 3.根据查询类型 组装查询条件 相等
// switch (valueType) {
// case "array":
// //集合数据
// //相等
// if (queryType) {
// searchQuery.addIn(usersearchchild.getSearchfield(), arrayData);
// break;
// }
// //不相等
// searchQuery.addNotIn(usersearchchild.getSearchfield(), arrayData);
// break;
//
// case "section":
// //数字区间查询
// if (sectionInts != null && sectionInts.size() == 2) {
// if (queryType) {
// //相等
// searchQuery.addGreaterEqual(usersearchchild.getSearchfield(), sectionInts.get(0));
// searchQuery.addLessEqual(usersearchchild.getSearchfield(), sectionInts.get(1));
// break;
// }
// //不相等
// searchQuery.addLess(usersearchchild.getSearchfield(), sectionInts.get(0));
// searchQuery.addGreater(usersearchchild.getSearchfield(), sectionInts.get(1));
// break;
// }
//
// //字符串区间查询
// if (queryType) {
// //相等
// searchQuery.addGreaterEqual(usersearchchild.getSearchfield(), sections[0]);
// searchQuery.addLessEqual(usersearchchild.getSearchfield(), sections[1]);
// break;
// }
// //不相等
// searchQuery.addLess(usersearchchild.getSearchfield(), sections[0]);
// searchQuery.addGreater(usersearchchild.getSearchfield(), sections[1]);
// break;
//
//
// case "time":
// //时间区间数据
// //相等
// if (queryType) {
// searchQuery.addGreaterEqual(usersearchchild.getSearchfield(), beginTime);
// searchQuery.addLessEqual(usersearchchild.getSearchfield(), endTime);
// break;
// }
// //不相等
// searchQuery.addLess(usersearchchild.getSearchfield(), beginTime);
// searchQuery.addGreater(usersearchchild.getSearchfield(), endTime);
// break;
//
// default:
// if (queryType) {
// searchQuery.addEqual(usersearchchild.getSearchfield(), usersearchchild.getSearchvalue());
// break;
// }
// searchQuery.addNotEqual(usersearchchild.getSearchfield(), usersearchchild.getSearchvalue());
// }
// return searchQuery;
// }
}

@ -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);;
@ -125,12 +125,14 @@ public class UserdistionaryController extends BaseController{
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);
List<RepeatedContentVo> repetitionTask();
Page<OcrTaskchildPicture> repetitionTaskList(Page<OcrTaskchildPicture> page, @Param("type") Integer type);
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,22 +1,19 @@
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 {
@ -24,21 +21,20 @@ public class UserFinalServiceImpl extends BaseServiceImpl<UserFinalMybatisDao, U
private UserFinalMybatisDao userFinalMybatisDao;
@Override
public boolean save(List<User> userid, String formid) {
public boolean save(String userid, String formid) {
//判断是否存在重复表单主键
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("FORMID", formid);
queryWrapper.eq("FORMID",formid);
Long listcount = count(queryWrapper);
if (listcount.intValue() > 0) {
if(listcount.intValue() > 0 ){
return true;
}
List<UserFinal> list = new ArrayList<>();
for (User user : userid) {
UserFinal userFinal = new UserFinal();
userFinal.setUserid(user.getId());
userFinal.setUserid(Long.parseLong(userid));
userFinal.setFormid(Long.parseLong(formid));
list.add(userFinal);
}
return this.saveBatch(list);
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){
if(StringUtils.isNotBlank(deptlist)){
public boolean saveUserdistionary(Userdistionary userdistionary,String userList,String 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,14 +97,15 @@ public class UserdistionaryServiceImpl extends BaseServiceImpl<UserdistionaryMyb
/**
*
* @param candidateid ,使
* @param userdistionary
* @param userdisid
* @return
*/
@Override
public boolean saveUserdistionary(String candidateid,Userdistionary userdistionary){
public boolean saveUserdistionary(String candidateid,String userdisid,String usertype){
if(StringUtils.isNotBlank(userdisid)){
//删除对应的关系
candidateuserService.deleteByUserdisid(userdistionary.getId());
candidateuserService.deleteByUserdisid(Long.parseLong(userdisid));
if(StringUtils.isNotBlank(candidateid)){
String[] ul = candidateid.split(",");
@ -113,14 +114,17 @@ public class UserdistionaryServiceImpl extends BaseServiceImpl<UserdistionaryMyb
Candidateuser candidateuser = new Candidateuser();
candidateuser.setCandidateid(Long.parseLong(cauid));
candidateuser.setUserdisid(userdistionary.getId());
candidateuser.setUserdisid(Long.parseLong(userdisid));
list.add(candidateuser);
}
return this.candidateuserService.saveBatch(list);
this.candidateuserService.saveBatch(list);
}
}
Userdistionary userdistionary = this.selectDtoById(Long.parseLong(userdisid));
userdistionary.setUsertype(Integer.parseInt(usertype));
return this.updateById(userdistionary);
return false;
}
/**
@ -200,32 +204,7 @@ 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;

@ -19,18 +19,4 @@ public interface PrevailCloudApi {
* @return
*/
ApiPage<PictureSourceResult> pullPictureSource(PictureSourceParameter pictureSourceParameter) throws Exception;
void sendFlowTaskResult(String tenantId,String data) throws Exception;
/**
* id
* @param tenantNo
*/
void pullAccountInfo(long tenantNo) throws Exception;
/**
*
*/
boolean startImageDownloadMonitoring(String localImagePath) throws Exception;
}

@ -2,23 +2,17 @@ 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.*;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
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.fasterxml.jackson.annotation.JsonFormat;
import liquibase.pro.packaged.S;
import lombok.SneakyThrows;
import org.apache.commons.collections.SequencedHashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -54,11 +48,6 @@ public class PrevailCloudApiImpl implements PrevailCloudApi {
*/
private String pictureSourceUrl = "/pangu/jingwei/ocr/query/pb/task/pageList";
/**
*
*/
private String sendResultUrl = "/pangu/jingwei/thirdclient/command/pb/approval/result";
/**
*
*/
@ -127,96 +116,4 @@ public class PrevailCloudApiImpl implements PrevailCloudApi {
return null;
}
@Override
public void sendFlowTaskResult(String tenantId, String data) throws Exception {
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());
System.out.println(responseJsonStr);
}
@Override
public void pullAccountInfo(long tenantNo) throws Exception {
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);
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;
}
}
/**
*
*
* @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;
}
}

@ -23,31 +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;
/**
*
* @return

@ -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,271 +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 "业务主体不能为空";
}
// 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");
// DateTime dateTime = DateUtil.parse("2024-03-31 07:00:000","yyyy-MM-dd HH:mm:ss");
Instant binstant = dateTime.toInstant();
DateTime dateTime1 = DateUtil.parse(endStr + " 00:00:00", "yyyy-MM-dd HH:mm:ss");
// DateTime dateTime1 = DateUtil.parse("2024-03-31 09:00:00","yyyy-MM-dd HH:mm:ss");
Instant einstant = dateTime1.toInstant();
List<Department> departments = departmentMybatisDao.selectList(new QueryWrapper<>());
if (CollectionUtils.isEmpty(departments)) {
return "业务主体数据为空";
}
Map<Long, Department> departmentMap = Maps.newHashMapWithExpectedSize(departments.size());
for (Department department : departments) {
if (department.getDlevel() == 0) {
continue;
}
departmentMap.put(department.getId(), department);
}
if (departmentMap.isEmpty()) {
return "业务主体数据为空";
}
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());
List<PictureSourceResult> resultList = getPictureSourceResultApiPage(dateTime, dateTime1, Integer.parseInt(pageNo), Integer.parseInt(pageSize), tenantNo, accountNo);
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", "http://47.93.59.251/api/image/default.png");
map.put("imgName", "default.png");
livePhoto.add(map);
pictureSourceResult.setLivePhoto(livePhoto);
// continue;
}
//将可以处理数据放入处理队列中
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");
PictureSourceParameter pictureSourceParameter = new PictureSourceParameter();
pictureSourceParameter.setPageSize(Integer.parseInt(pageSize));
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) {
if (department.getDlevel() == 0) {
continue;
}
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");
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());
List<PictureSourceResult> resultList = getPictureSourceResultApiPage(pictureSourceParameter, startInstant, endInstant, currentPage, tenantNo, accountNo);
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;
}
private List<PictureSourceResult> getPictureSourceResultApiPage(PictureSourceParameter pictureSourceParameter, Instant startInstant, Instant endInstant, Integer currentPage, Long tenantNo, Long accountNo) {
pictureSourceParameter.setStartTime(Date.from(startInstant));
pictureSourceParameter.setEndTime(Date.from(endInstant));
pictureSourceParameter.setPageNo(currentPage);
pictureSourceParameter.setTenantNo(tenantNo);
pictureSourceParameter.setAccountNo(accountNo);
ApiPage<PictureSourceResult> apiPage = null;
try {
apiPage = prevailCloudApi.pullPictureSource(pictureSourceParameter);
} catch (Exception e) {
e.printStackTrace();
}
return apiPage == null ? Lists.newArrayList() : apiPage.getRecords();
}
private List<PictureSourceResult> getPictureSourceResultApiPage(DateTime dateTime, DateTime dateTime1, Integer pageNo, Integer pageSize, Long tenantNo, Long accountNo) {
//创建查询参数对象
PictureSourceParameter pictureSourceParameter = new PictureSourceParameter();
Instant binstant = dateTime.toInstant();
Instant einstant = dateTime1.toInstant();
pictureSourceParameter.setStartTime(Date.from(binstant));
pictureSourceParameter.setEndTime(Date.from(einstant));
pictureSourceParameter.setPageNo(pageNo);
pictureSourceParameter.setPageSize(pageSize);
pictureSourceParameter.setTenantNo(tenantNo);
pictureSourceParameter.setAccountNo(accountNo);
ApiPage<PictureSourceResult> apiPage = null;
try {
apiPage = prevailCloudApi.pullPictureSource(pictureSourceParameter);
} catch (Exception e) {
e.printStackTrace();
}
return apiPage == null ? Lists.newArrayList() : apiPage.getRecords();
}
}

@ -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();

@ -1,43 +1,20 @@
package cn.jyjz.xiaoyao.ocr.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.jyjz.xiaoyao.admin.dataobject.Post;
import cn.jyjz.xiaoyao.admin.service.UserService;
import cn.jyjz.xiaoyao.common.base.controller.BaseController;
import cn.jyjz.xiaoyao.common.base.param.ParamterPage;
import cn.jyjz.xiaoyao.common.base.util.RequestBaseUtil;
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 cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.common.mybatisplus.util.SearchQueryFormat;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrField;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrUsersearch;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrUsersearchchild;
import cn.jyjz.xiaoyao.ocr.dto.OcrFieldDto;
import cn.jyjz.xiaoyao.ocr.service.OcrFieldService;
import cn.jyjz.xiaoyao.ocr.vo.OcrFieldVo;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import liquibase.pro.packaged.S;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@RestController
@RequestMapping("/ocr/field")
@ -48,36 +25,11 @@ public class OcrFieldController extends BaseController {
@Autowired
private OcrFieldService ocrFieldService;
@Autowired
private UserService userService;
/**
*
* @return
*/
@ApiOperation(value="根据评审类型查询字段列表", notes="根据评审类型查询字段列表")
@GetMapping(value = "/page")
public ResultVo<IPage<OcrField>> list(@RequestParam(name="start", defaultValue="1") Integer start,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest request) {
SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_");
cn.jyjz.xiaoyao.admin.dataobject.User user = this.userService.getSessionUser(request);
OcrField ocrField = new OcrField();
ocrField.setSearchQueryrolesShowleave(user.getSearchQueryrolesShowleave());
QueryWrapper<OcrField> queryWrapper = SearchQueryFormat.queryStringFormat(searchQuery,ocrField);
ResultVo<IPage<OcrField>> resultVo = new ResultVo<>();
ParamterPage paramterPage = new ParamterPage();
paramterPage.setPagesize(pageSize);
paramterPage.setStart(start);
IPage<OcrField> ocrFieldIPage = ocrFieldService.pageList(paramterPage,queryWrapper);
resultVo.setData(ocrFieldIPage);
resultVo.addOK("查询成功");
return resultVo;
}
@GetMapping(value = "/list")
public ResultVo<List<OcrFieldDto>> list(@RequestParam(name="reviewType") @ApiParam(value = "字段类型(终审:0工单1、一审二审:2、审核填报:3", required = true) Integer reviewType) {
ResultVo<List<OcrFieldDto>> resultVo = new ResultVo<>();
@ -107,21 +59,13 @@ public class OcrFieldController extends BaseController {
*/
@ApiOperation(value="删除筛选字段", notes="删除筛选字段")
@GetMapping(value = "/delete")
public ResultVo delete(@RequestParam(name="id") @ApiParam(value = "字段ID", required = true) String ids) {
List<OcrField> ocrFields = ocrFieldService.listByIds(Arrays.asList(ids.split(",")));
List<OcrField> newOcrField = ocrFields.stream().peek(s -> {
s.setUpdateTime(DateUtil.date().toSqlDate());
s.setDel(1);
}).collect(Collectors.toList());
ocrFieldService.updateBatchById(newOcrField);
public ResultVo delete(@RequestParam(name="id") @ApiParam(value = "字段ID", required = true) Long id) {
OcrFieldDto ocrFieldDto = ocrFieldService.delete(id);
if(ocrFieldDto != null){
return ResultVoUtil.success();
}
@ApiOperation(value="详情", notes="详情")
@GetMapping(value = "/getData/{id}")
public ResultVo getData(@PathVariable(name="id") @ApiParam(value = "字段ID", required = true) Long id) {
return ResultVoUtil.success(ocrFieldService.getById(id));
return ResultVoUtil.error("删除失败");
}
/**
@ -130,9 +74,14 @@ public class OcrFieldController extends BaseController {
*/
@ApiOperation(value="字段新增和修改", notes="字段新增和修改")
@PostMapping(value = "/saveOrUpdate")
public ResultVo saveOrUpdate(@ApiParam(value = "字段信息", required = true) OcrFieldVo ocrFieldVo) {
public ResultVo saveOrUpdate(@ApiParam(value = "字段信息", required = true) @RequestBody OcrFieldVo ocrFieldVo) {
try {
return ocrFieldService.saveData(BeanUtil.copyProperties(ocrFieldVo,OcrField.class));
OcrField ocrField = new OcrField();
ocrField.setName(ocrFieldVo.getName());
ocrField.setReviewType(ocrFieldVo.getReviewType());
ocrField.setFieldDesc(ocrFieldVo.getFieldDesc());
ocrField.setIsrequired(ocrFieldVo.getIsrequired());
ocrFieldService.saveData(ocrField);
} catch (BeansException e) {
e.printStackTrace();
}

@ -1,57 +0,0 @@
package cn.jyjz.xiaoyao.ocr.controller;
import cn.jyjz.xiaoyao.admin.service.UserService;
import cn.jyjz.xiaoyao.common.base.controller.BaseController;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import cn.jyjz.xiaoyao.ocr.service.OcrConfigurationService;
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.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
@RequestMapping("/backstage/oa/ocrfieldconfigurationHtml")
public class OcrFieldHtmlController extends BaseController{
private Logger log = LoggerFactory.getLogger(this.getClass());
@Autowired
private OcrConfigurationService ocrConfigurationService;
@Autowired
private UserTokenService userTokenService;
@Autowired
private UserService userService;
/**
*
*mail.zhangyong@gmail.com
*2024-01-14 10:27:01
**/
@GetMapping("/toList")
public String toListOcrConfiguration(HttpServletResponse response,HttpServletRequest request){
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid",resourceid);
return "/backstage/oa/ocr/information/list";
}
@GetMapping("/toSave")
public String toSave(HttpServletResponse response,HttpServletRequest request){
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid",resourceid);
return "/backstage/oa/ocr/information/add";
}
@GetMapping("/toEdit/{id}")
public String toEdit(HttpServletResponse response,HttpServletRequest request,@PathVariable("id") String id){
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid",resourceid);
request.setAttribute("id", id);
return "/backstage/oa/ocr/information/edit";
}
}

@ -1,55 +0,0 @@
package cn.jyjz.xiaoyao.ocr.controller;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiConfig;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrFrontConf;
import cn.jyjz.xiaoyao.ocr.service.OcrFrontConfService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@Api(tags = "ocr-前端配置管理")
@RestController
@RequestMapping("/ocr/ocrFrontConf")
public class OcrFrontConfController {
@Resource
private OcrFrontConfService service;
@Value("${spring.profiles.active}")
private String env;
@Resource
private ApiConfig config;
@PostMapping("/save")
public ResultVo editOcrConfiguration(OcrFrontConf conf) {
conf.setEnv(env);
QueryWrapper<OcrFrontConf> wrapper = new QueryWrapper<>();
wrapper.eq("env", env);
OcrFrontConf ocrFrontConf = this.service.getOne(wrapper);
if (ocrFrontConf != null) {
conf.setId(ocrFrontConf.getId());
}
this.service.saveOrUpdate(conf);
this.service.updateConfig();
return ResultVoUtil.success();
}
@GetMapping("/get")
public ResultVo<OcrFrontConf> get() {
QueryWrapper<OcrFrontConf> wrapper = new QueryWrapper<>();
wrapper.eq("env", env);
return ResultVoUtil.success(this.service.getOne(wrapper));
}
}

@ -1,21 +0,0 @@
package cn.jyjz.xiaoyao.ocr.controller;
import cn.jyjz.xiaoyao.common.base.controller.BaseController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
@RequestMapping("/backstage/oa/frontconf")
public class OcrFrontConfHtmlController extends BaseController {
@GetMapping("/toList")
public String toListOcrConfiguration(HttpServletResponse response, HttpServletRequest request) {
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid", resourceid);
return "/backstage/oa/ocr/frontconf/list";
}
}

@ -3,7 +3,6 @@ package cn.jyjz.xiaoyao.ocr.controller;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -21,7 +20,6 @@ import cn.jyjz.xiaoyao.ocr.util.DataUtil;
import cn.jyjz.xiaoyao.ocr.util.SearchConfigEnum;
import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@ -267,6 +265,7 @@ public class OcrPictureController extends BaseController {
}
QueryWrapper<OcrPicture> queryWrapper = new QueryWrapper<>();
String search_month = req.getParameter("search_month");
@ -275,10 +274,8 @@ public class OcrPictureController extends BaseController {
if (StringUtils.isNotBlank(ordertype)) {
if (ordertype.equals("asc")) {
queryWrapper.orderByAsc("similarity_score");
queryWrapper.orderByDesc("classificationid");
} else {
queryWrapper.orderByDesc("similarity_score");
queryWrapper.orderByDesc("classificationid");
}
}
@ -298,17 +295,10 @@ public class OcrPictureController extends BaseController {
//提报人模糊搜索
String upUserName = req.getParameter("upUserName");
if (StringUtils.isNotBlank(upUserName)) {
queryWrapper.like("upName", upUserName);
}
//任务状态搜索
String iztaskstatus = req.getParameter("iztaskstatus");
if (StringUtils.isNotBlank(iztaskstatus)) {
Integer taskStatus = Integer.parseInt(iztaskstatus);
queryWrapper.apply("id IN (SELECT PICTUREID FROM ocr_taskchild_picture WHERE STATES = {0})", taskStatus);
if(StringUtils.isNotBlank(upUserName)){
queryWrapper.like("upName",upUserName);
}
//根据参数枚举获取检索参数并映射为数据库的字段的key-v map
Map<String, Object> paraMap = new HashMap<>();
for (SearchConfigEnum config : SearchConfigEnum.values()) {
@ -321,38 +311,8 @@ public class OcrPictureController extends BaseController {
queryWrapper = SearchParaFormatting.searchParaParse(queryWrapper, paraMap);
queryWrapper.eq("tenant_id", tenantId);
queryWrapper.isNotNull("local_pictrue_url");
Page<OcrPicture> page = new Page<OcrPicture>(pageNo, pageSize);
IPage<OcrPicture> pageList = ocrPictureService.page(page, queryWrapper);
List<OcrPicture> ocrPictures = pageList.getRecords();
List<OcrPicture> ocrPicturesNew = new ArrayList<>();
for (OcrPicture ocrPictureOne : ocrPictures) {
LambdaQueryWrapper<OcrTaskchildPicture> ocrTaskchildPictureLambdaQueryWrapper = new LambdaQueryWrapper<>();
ocrTaskchildPictureLambdaQueryWrapper.eq(OcrTaskchildPicture::getPictureid, ocrPictureOne.getId());
OcrTaskchildPicture ocrTaskchildPicture = ocrTaskchildPictureService.getOne(ocrTaskchildPictureLambdaQueryWrapper);
if(ocrTaskchildPicture != null && ocrTaskchildPicture.getStates() != null){
switch (ocrTaskchildPicture.getStates()) {
case 1:
ocrPictureOne.setField16("未提交");
break;
case 2:
ocrPictureOne.setField16("审批中");
break;
case 3:
ocrPictureOne.setField16("审批通过");
break;
case 5:
ocrPictureOne.setField16("审批不通过");
break;
default:
ocrPictureOne.setField16("未知状态");
break;
}
ocrPictureOne.setStates(ocrTaskchildPicture.getStates());
}
ocrPicturesNew.add(ocrPictureOne);
}
pageList.setRecords(ocrPicturesNew);
return ResultVoUtil.success(pageList);
}
@ -443,7 +403,7 @@ public class OcrPictureController extends BaseController {
@RequestParam(name = "pictureId", required = false) String pictureId,
HttpServletRequest req) {
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(req));
OcrPicture result = ocrPictureService.getPackagePictureInfo(checkDuplicateId, pictureId, userToken);
OcrPicture result = ocrPictureService.getPackagePictureInfo(checkDuplicateId, pictureId,userToken);
return ResultVoUtil.success(result);
}

@ -1,154 +0,0 @@
package cn.jyjz.xiaoyao.ocr.controller;
import java.io.IOException;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.jyjz.xiaoyao.admin.service.TenantService;
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.ocr.dataobject.OcrPictureclass;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureclassService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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;
@Api(tags="ocr-分类管理")
@RestController
@RequestMapping("/ocr/ocrPictureclass")
public class OcrPictureclassController extends BaseController{
private Logger log = LoggerFactory.getLogger(this.getClass());
@Resource
private OcrPictureclassService ocrPictureclassService;
@Resource
private TenantService tenantService;
@Resource
private UserTokenService userTokenService;
@Resource
private UserService userService;
/**
*
* @return
*/
//@AutoLog(value = "ocr_pictureclass-分页列表查询")
@ApiOperation(value="分类列表", notes="分类列表,无分页")
@ApiImplicitParams({
@ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true)
})
@GetMapping(value = "/rootList")
public ResultVo<List<OcrPictureclass>> rootList(HttpServletRequest request, HttpServletResponse response) {
//租户主键,由前端页面传送
String tenantId = request.getHeader("X-Tenant-Id");
if(StringUtils.isBlank(tenantId)){
return ResultVoUtil.error("租户主键不能为空");
}
SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_");
OcrPictureclass ocrpictureclass = new OcrPictureclass();
QueryWrapper<OcrPictureclass> queryWrapper = SearchQueryFormat.queryStringFormat(searchQuery,ocrpictureclass);
queryWrapper.eq("TENANTID",tenantId);
queryWrapper.orderByDesc("REORDER");
List<OcrPictureclass> page = this.ocrPictureclassService.queryListNoPage(queryWrapper);;
return ResultVoUtil.success(page);
}
/**
*jsondto
*mail.zhangyong@gmail.com
*2024-01-14 10:27:01
**/
@GetMapping("/list")
public ResultVo<IPage<OcrPictureclass>> listOcrPictureclass(ParamterPage paramterPage, HttpServletRequest request, HttpServletResponse response) throws IOException{
SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_");
OcrPictureclass ocrpictureclass = new OcrPictureclass();
QueryWrapper<OcrPictureclass> queryWrapper = SearchQueryFormat.queryStringFormat(searchQuery,ocrpictureclass);
IPage<OcrPictureclass> page = this.ocrPictureclassService.selectSearchListPage(paramterPage,queryWrapper);
for(OcrPictureclass ocrPictureclass:page.getRecords()){
ocrPictureclass.setTenant(tenantService.selectDtoById(ocrPictureclass.getTenantid()));
}
return ResultVoUtil.success(page);
}
/**
*
*mail.zhangyong@gmail.com
*2024-01-14 10:27:01
**/
@PostMapping("/save")
public ResultVo saveOcrPictureclass(HttpServletResponse response,HttpServletRequest request,OcrPictureclass tab) throws IOException{
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
tab.setCreateby(userToken.getLoginname());
tab.setCreatetime(System.currentTimeMillis());
this.ocrPictureclassService.save(tab);
return ResultVoUtil.success();
}
/**
*form
*mail.zhangyong@gmail.com
*2024-01-14 10:27:01
**/
@PostMapping("/edit")
public ResultVo editOcrPictureclass(HttpServletResponse response,HttpServletRequest request,OcrPictureclass tab) throws IOException{
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
tab.setUpdateby(userToken.getLoginname());
tab.setUpdatetime(System.currentTimeMillis());
this.ocrPictureclassService.updateById(tab);
return ResultVoUtil.success();
}
/**
*
*mail.zhangyong@gmail.com
*2024-01-14 10:27:01
**/
@GetMapping("/getdata/{id}")
@ResponseBody
public ResultVo getdateOcrPictureclass(HttpServletResponse response,HttpServletRequest request,@PathVariable("id") Long id) throws IOException{
OcrPictureclass dto = this.ocrPictureclassService.selectDtoById(id);
if(null != dto){
return ResultVoUtil.success(dto);
}else{
return ResultVoUtil.error();
}
}
/**
*id1,2,3
*mail.zhangyong@gmail.com
*2024-01-14 10:27:01
**/
@GetMapping("/delmore")
@ResponseBody
public ResultVo delMoreOcrPictureclass(HttpServletResponse response,HttpServletRequest request) throws IOException{
String ids = request.getParameter("id");
this.ocrPictureclassService.deleteByIdMore(ids);
return ResultVoUtil.success();
}
}

@ -1,75 +0,0 @@
package cn.jyjz.xiaoyao.ocr.controller;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureclassService;
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;
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;
@Controller
@RequestMapping("/backstage/oa/ocrpictureclassHtml")
public class OcrPictureclassHtmlController extends BaseController{
private Logger log = LoggerFactory.getLogger(this.getClass());
@Autowired
private OcrPictureclassService ocrPictureclassService;
@Autowired
private UserTokenService userTokenService;
@Autowired
private UserService userService;
/**
*
*mail.zhangyong@gmail.com
*2024-01-14 10:27:01
**/
@GetMapping("/toList")
public String toListOcrPictureclass(HttpServletResponse response,HttpServletRequest request){
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid",resourceid);
return "/backstage/oa/ocr/ocrpictureclass/list";
}
/**
*
*mail.zhangyong@gmail.com
*2024-01-14 10:27:01
**/
@GetMapping("/toSave")
public String toSaveOcrPictureclass(HttpServletResponse response,HttpServletRequest request){
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid",resourceid);
return "/backstage/oa/ocr/ocrpictureclass/add";
}
/**
*ID
*mail.zhangyong@gmail.com
*2024-01-14 10:27:01
**/
@GetMapping("/toEdit/{id}")
public String toEditOcrPictureclass(HttpServletResponse response,HttpServletRequest request,@PathVariable("id") String id){
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid",resourceid);
request.setAttribute("id", id);
return "/backstage/oa/ocr/ocrpictureclass/edit";
}
}

@ -55,14 +55,13 @@ public class OcrSearchHistoryController {
//执行查询方法
Map<Object, List<Map<String,String>>> selectsearch = ocrSearchHistoryService.selectsearch(search, userToken.getLoginname(),userToken.getUserid(),tenantId);
if(StringUtils.isNotBlank(search)){
OcrSearchHistory ocrsearchhistory =new OcrSearchHistory();
ocrsearchhistory.setHistoryname(search);
ocrsearchhistory.setTenantId(Long.valueOf(tenantId));
ocrsearchhistory.setUserid(Long.valueOf(userToken.getUserid()));
ocrsearchhistory.setCreatedate(System.currentTimeMillis());
ocrSearchHistoryService.save(ocrsearchhistory);
}
// return new ResponseEntity<Object>(selectsearch, HttpStatus.OK);
return ResultVoUtil.success(selectsearch);

@ -67,8 +67,7 @@ public class OcrTaskchildDubiousFileController {
public ResultVo<Page<OcrTaskChildPictureVo>> dubiousfilelist(HttpServletRequest request,
@RequestParam(value = "pageNo", required = false, defaultValue = "0") Integer pageNo,
@RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize,
@RequestParam(value = "orderByUptime",required = false) String orderByUptime,
@RequestParam(value = "orderBySimilarity",required = false) String orderBySimilarity) {
@RequestParam(value = "orderbyname", required = true, defaultValue = "asc") String orderbyname) {
String tenantId = request.getHeader("X-Tenant-Id");
@ -98,7 +97,7 @@ public class OcrTaskchildDubiousFileController {
//
// //IPage<OcrPicture> page = ocrpictureservice.page(iPage, wrapper);
Page<OcrTaskChildPictureVo> page = ocrTaskchildDubiousFileService.dubiousfilelist(pageNo,pageSize,orderByUptime,orderBySimilarity,userToken,tenantId);
Page<OcrTaskChildPictureVo> page = ocrTaskchildDubiousFileService.dubiousfilelist(pageNo,pageSize,orderbyname,userToken,tenantId);
return ResultVoUtil.success(page);
}
@ -168,13 +167,6 @@ public class OcrTaskchildDubiousFileController {
List<OcrTaskchildDubiousFile> list=new ArrayList<>();
String[] taskchildid1 = pictureid.toString().split(",");
for (String asd:taskchildid1){
//判断当前任务审批人是否是当前登录用户
QueryWrapper<OcrTaskchildPicture> wrapper = new QueryWrapper<>();
wrapper.eq("PICTUREID",asd);
OcrTaskchildPicture one = ocrtaskchildpictureservice.getOne(wrapper);
if(one != null && !one.getAssignee().equals(userToken.getLoginname())){
return ResultVoUtil.error("勾选存在无权限审批的任务,不能添加可疑文件!");
}
QueryWrapper<OcrTaskchildDubiousFile> filewrapper = new QueryWrapper<>();
filewrapper.eq("picture_id",asd).eq("userid",userToken.getUserid());
@ -185,6 +177,11 @@ public class OcrTaskchildDubiousFileController {
ocrtaskchilddubiousfile.setTenantid(Long.parseLong(tenantId));
ocrtaskchilddubiousfile.setUserid(Long.parseLong(userToken.getUserid()));
ocrtaskchilddubiousfile.setCreatedate(System.currentTimeMillis());
QueryWrapper<OcrTaskchildPicture> wrapper = new QueryWrapper<>();
wrapper.eq("PICTUREID",asd);
OcrTaskchildPicture one = ocrtaskchildpictureservice.getOne(wrapper);
ocrtaskchilddubiousfile.setTaskchildId(one.getId());
UpdateWrapper<OcrPicture> updatewrapper = new UpdateWrapper<>();
@ -200,6 +197,11 @@ public class OcrTaskchildDubiousFileController {
ocrtaskchilddubiousfile.setTenantid(Long.parseLong(tenantId));
ocrtaskchilddubiousfile.setUserid(Long.parseLong(userToken.getUserid()));
ocrtaskchilddubiousfile.setCreatedate(System.currentTimeMillis());
QueryWrapper<OcrTaskchildPicture> wrapper = new QueryWrapper<>();
wrapper.eq("PICTUREID",asd);
OcrTaskchildPicture one = ocrtaskchildpictureservice.getOne(wrapper);
ocrtaskchilddubiousfile.setTaskchildId(one.getId());
UpdateWrapper<OcrPicture> updatewrapper = new UpdateWrapper<>();

@ -298,14 +298,13 @@ public class OcrTaskchildPictureController extends BaseController {
@ApiImplicitParam(paramType = "path", name = "id", value = "当前选中的任务主键", required = true),
@ApiImplicitParam(paramType = "path", name = "packageid", value = "任务包主键注意不是当前任务关联的packageid而是当前选中的任务包主键")
})
@GetMapping("/getdata/{id}/{packageid}/{taskNode}")
@GetMapping("/getdata/{id}/{packageid}")
@ResponseBody
public ResultVo getdateOcrTaskchildPicture(HttpServletResponse response, HttpServletRequest request,
@PathVariable("packageid") Long packageid,
@PathVariable("taskNode") String taskNode,
@PathVariable("id") Long id) throws IOException {
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
OcrTaskchildPicture dto = this.ocrTaskchildPictureService.listPicturePackageId(id.toString(), packageid, userToken,taskNode);
OcrTaskchildPicture dto = this.ocrTaskchildPictureService.listPicturePackageId(id.toString(), packageid, userToken);
if (null != dto) {
return ResultVoUtil.success(dto);
} else {
@ -384,10 +383,9 @@ public class OcrTaskchildPictureController extends BaseController {
@RequestParam(name = "orderType") String orderType,
@RequestParam(name = "orderName") String orderName,
@RequestParam(name = "pictureId") String pictureId,
@RequestParam(name = "taskNode") String taskNode,
HttpServletRequest request) {
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
Page<OcrTaskChildPictureVo> similarityList = ocrTaskchildPictureService.getSimilarityList(pageNo, pageSize, pictureId, orderType, orderName,userToken,taskNode);
Page<OcrTaskChildPictureVo> similarityList = ocrTaskchildPictureService.getSimilarityList(pageNo, pageSize, pictureId, orderType, orderName,userToken);
return ResultVoUtil.success(similarityList);
}
@ -403,8 +401,10 @@ public class OcrTaskchildPictureController extends BaseController {
@RequestParam(name = "orderType") String orderType,
@RequestParam(name = "orderName") String orderName,
@RequestParam(name = "checkDuplicateId") String checkDuplicateId,
@RequestParam(name = "pictureId") String pictureId) {
Page<OcrTaskChildPictureVo> result = ocrTaskchildPictureService.getPackageSimilarityList(pageNo, pageSize, orderType, orderName, checkDuplicateId, pictureId);
@RequestParam(name = "pictureId") String pictureId,
HttpServletRequest request) {
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
Page<OcrTaskChildPictureVo> result = ocrTaskchildPictureService.getPackageSimilarityList(pageNo, pageSize, orderType, orderName, checkDuplicateId, pictureId,userToken);
return ResultVoUtil.success(result);
}

@ -1,13 +0,0 @@
package cn.jyjz.xiaoyao.ocr.dataDao;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrCheckDescribeHis;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* ClassName $className$.java
* Description:
* Author scl.
* Date 2024/4/18 22:57
*/
public interface OcrCheckDescribeHisMapper extends BaseMapper<OcrCheckDescribeHis> {
}

@ -1,7 +0,0 @@
package cn.jyjz.xiaoyao.ocr.dataDao;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrFrontConf;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface OcrFrontConfMapper extends BaseMapper<OcrFrontConf> {
}

@ -12,5 +12,7 @@ import java.util.List;
*/
@Mapper
public interface OcrPictureMybatisDao extends BaseMapper<OcrPicture> {
OcrPicture getPackagePictureInfo(@Param("packageId") String packageId, @Param("pictureId") String pictureId);
OcrPicture getPackagePictureInfo(@Param("packageId") String packageId, @Param("pictureId") String pictureId, @Param("userNodeType") String userNodeType);
List<OcrPicture> getPictureNodeStatesList(@Param("pictureIds") List<String> pictureIds, @Param("userNodeType") String userNodeType);
}

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

@ -2,7 +2,6 @@ package cn.jyjz.xiaoyao.ocr.dataDao;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPictureAppro;
import cn.jyjz.xiaoyao.ocr.vo.OaUserApproveVo;
import cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo;
import cn.jyjz.xiaoyao.ocr.vo.PictureDetailVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@ -26,9 +25,6 @@ public interface OcrTaskchildPictureMybatisDao extends BaseMapper<OcrTaskchildPi
*/
public List<OcrTaskchildPicture> listFinal(Map<String, Object> query);
List<OcrTaskchildPicture> listFinalTask(Map<String, Object> query);
/**
*
* @param query
@ -42,20 +38,6 @@ public interface OcrTaskchildPictureMybatisDao extends BaseMapper<OcrTaskchildPi
* @return
*/
public List<OcrTaskchildPictureAppro> listmytask(Map<String, Object> query);
/**
*
*/
public List<OaUserApproveVo> queryApprovalNode(@Param("userId") String userId);
/**
*
*/
public List<OcrTaskchildPictureAppro> queryPendingApproval(@Param("loginName") String loginName, @Param("tenantId") String tenantId, @Param("taskNode") String taskNode);
/**
*
*/
public List<OcrTaskchildPictureAppro> queryExamineApprove(@Param("tenantId") String tenantId, @Param("formIdList") List<Long> formIdList);
/**
*
* @param query
@ -66,13 +48,10 @@ public interface OcrTaskchildPictureMybatisDao extends BaseMapper<OcrTaskchildPi
String selectocpicture(@Param("tenantid")String tenantid,@Param("packageid")String packageid,@Param("id")String id);
List<OcrTaskChildPictureVo> getPictureHistoryList(@Param("pictureIds") List<String> pictureIds, @Param("pictureId") String pictureId, @Param("taskNode") String taskNode);
List<OcrTaskChildPictureVo> getPictureHistoryList(@Param("pictureIds") List<String> pictureIds, @Param("taskname") String taskname);
List<OcrTaskChildPictureVo> getDubiousfileList(@Param("pictureIds") List<String> pictureIds, @Param("taskname") String taskname);
PictureDetailVo getPictureDetail(String pictureId);
Page<OcrTaskChildPictureVo> getPackageSimilarityList(Page<OcrTaskChildPictureVo> page, @Param("checkDuplicateId") String checkDuplicateId, @Param("pictureId") String pictureId, @Param("oderType") String oderType, @Param("oderName") String oderName);
List<OcrTaskChildPictureVo> getSimilarityList(@Param("pictureIds") List<String> pictureIds);
Page<OcrTaskChildPictureVo> getPackageSimilarityList(Page<OcrTaskChildPictureVo> page, @Param("checkDuplicateId") String checkDuplicateId, @Param("pictureId") String pictureId, @Param("oderType") String oderType, @Param("oderName") String oderName, @Param("taskname") String taskname);
}

@ -1,42 +0,0 @@
package cn.jyjz.xiaoyao.ocr.dataobject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* ClassName $className$.java
* Description:
* Author scl.
* Date 2024/4/18 22:57
*/
@TableName(value = "ocr_check_describe_his")
@Data
public class OcrCheckDescribeHis {
/**
* id
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
/**
* id
*/
@TableField(value = "pictureId")
private String pictureId;
/**
*
*/
@TableField(value = "checkResult")
private String checkResult;
/**
*
*/
@TableField(value = "`describe`")
private String describe;
}

@ -41,8 +41,7 @@ public class OcrCheckDuplicateResult implements Serializable {
@ApiModelProperty(value = "图片id")
private Long pictureId;
@ApiModelProperty(value = "当前图片与任务包其他图片比对结果 (废弃,入库导致数据量过大)")
@TableField(exist = false)
@ApiModelProperty(value = "当前图片与任务包其他图片比对结果")
private String compareResultJson;
@ApiModelProperty(value = "查重任务id")
@ -54,8 +53,4 @@ public class OcrCheckDuplicateResult implements Serializable {
@ApiModelProperty(value = "阈值分组排序值,数值越低排序越靠前,")
private Integer similarityGroupOrder;
@ApiModelProperty(value = "是否重复0.不重复 1.重复 (历史比对中阈值存在100的会显示此值)")
@TableField(exist = false)
private Integer isRepeat;
}

@ -2,14 +2,11 @@ package cn.jyjz.xiaoyao.ocr.dataobject;
import cn.jyjz.xiaoyao.admin.dataobject.Tenant;
import cn.jyjz.xiaoyao.common.base.jsonDomain.DateSerializer;
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
import cn.jyjz.xiaoyao.common.mybatisplus.dto.BaseDto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
@ -20,10 +17,6 @@ import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.sql.Date;
import java.util.AbstractMap;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Data
@Builder
@ -31,7 +24,7 @@ import java.util.stream.Stream;
@AllArgsConstructor
@Schema(name = "字段信息", title = "字段信息")
@TableName(value = "ocr_field")
public class OcrField implements BaseDto,java.io.Serializable {
public class OcrField implements Serializable {
private static final long serialVersionUID = 8088861709460050761L;
@Schema(description = "主键")
@TableId(value = "id",type = IdType.AUTO)
@ -87,34 +80,4 @@ public class OcrField implements BaseDto,java.io.Serializable {
@Schema(description = "是否可点击,0:否,1是")
@TableField(value="is_tap")
private Integer isTap;
@Schema(description = "是否可隐藏,0:否,1是")
@TableField(value="is_hide")
private Integer isHide;
@Schema(description = "是否启用,0:停用,1启用")
@TableField(value="is_enable")
private Integer isEnable;
//保存当前登录用户的数据权限范围的搜索条件
@TableField(exist = false)
@JsonIgnore
private SearchQuery searchQueryrolesShowleave;
@TableField(exist = false)
@JsonIgnore
private final Map<String,String> query = Stream.of(
new AbstractMap.SimpleEntry<>("NAME","name"),
new AbstractMap.SimpleEntry<>("REVIEWTYPE","review_type")
)
.collect(Collectors.toMap(AbstractMap.SimpleEntry::getKey, AbstractMap.SimpleEntry::getValue));
@Override
public String getQueryFiled(String filedname){
String obj = null;
if(null != query && query.size() > 0){
obj = query.get(filedname);
}
return obj;
}
}

@ -1,61 +0,0 @@
package cn.jyjz.xiaoyao.ocr.dataobject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
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;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "配置管理", title = "配置管理")
@TableName(value = "ocr_front_conf")
public class OcrFrontConf implements java.io.Serializable {
@Schema(description = "主键")
@TableId(value = "id",type = IdType.AUTO)
@TableField(value="id")
private Long id;
private String env;
private String wlyInterfaceDomain;
private String wlyAccessKey;
private String wlyAccessCode;
private Integer wlyConnectTimeout;
private Integer wlyReadTimeout;
private String wlyLocalImagePath;
private String wlyDataUrl;
/**
*
*/
private String pictureSourceUrl;
/**
*
*/
private String sendResultUrl;
/**
*
*/
private String projectSourceUrl;
/**
*
*/
private String tenantSourceUrl;
}

@ -311,10 +311,6 @@ public class OcrPicture implements BaseDto, java.io.Serializable {
@TableField(value = "similarity_score")
private Integer similarityscore;
@ApiModelProperty(value = "下载到本地,失败次数")
@TableField(value = "download_error_count")
private Integer downloadErrorCount;
@ApiModelProperty(value = "图片查重的比对图片集合")
@TableField(exist = false)
private List<OcrPicture> listCom;
@ -346,10 +342,6 @@ public class OcrPicture implements BaseDto, java.io.Serializable {
@TableField(value = "submit_date_timestamp")
private Long submitDateTimestamp;
@ApiModelProperty(value = "是否重复0.不重复 1.重复 (历史比对中阈值存在100的会显示此值)")
@TableField(value = "is_repeat")
private Integer isRepeat;
@ApiModelProperty(value = "任务状态")
@TableField(exist = false)
private Integer states;
@ -365,7 +357,6 @@ public class OcrPicture implements BaseDto, java.io.Serializable {
@ApiModelProperty(value = "拍照时间")
@TableField(value = "photo_date_timestamp")
@JsonSerialize(using = DateSerializer.class)
private Long photoDateTimestamp;
@ApiModelProperty(value = "节点状态")
@ -376,9 +367,6 @@ public class OcrPicture implements BaseDto, java.io.Serializable {
@TableField(exist = false)
private String taskId;
//保存当前登录用户的数据权限范围的搜索条件
@TableField(exist = false)
@JsonIgnore

@ -1,7 +1,6 @@
package cn.jyjz.xiaoyao.ocr.dataobject;
import cn.jyjz.xiaoyao.common.base.jsonDomain.DateNotimeSerializer;
import cn.jyjz.xiaoyao.common.base.jsonDomain.DateSerializer;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
@ -65,8 +64,7 @@ public class OcrPictureInfo {
*
*/
@TableField(value = "create_time")
// @JsonSerialize(using = DateNotimeSerializer.class)
@JsonSerialize(using = DateSerializer.class)
@JsonSerialize(using = DateNotimeSerializer.class)
private Long createTime;
/**

@ -1,115 +0,0 @@
package cn.jyjz.xiaoyao.ocr.dataobject;
import cn.jyjz.xiaoyao.admin.dataobject.Tenant;
import cn.jyjz.xiaoyao.common.base.jsonDomain.DateNotimeSerializer;
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.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
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 org.springframework.format.annotation.DateTimeFormat;
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 = "ocr_pictureclass")
public class OcrPictureclass implements BaseDto,java.io.Serializable {
private static final long serialVersionUID = -2826818582872L;
@Schema(description = "主键")
@TableId(value = "id",type = IdType.ASSIGN_ID)
@JsonSerialize(using = ToStringSerializer.class)
@TableField(value="ID")
private Long id;
@Schema(description = "创建人")
@TableField(value="CREATEBY")
private String createby;
@Schema(description = "创建时间")
@TableField(value="CREATETIME")
private Long createtime;
@Schema(description = "修改人")
@TableField(value="UPDATEBY")
private String updateby;
@Schema(description = "修改时间")
@TableField(value="UPDATETIME")
private Long updatetime;
@Schema(description = "租户ID")
@JsonSerialize(using = ToStringSerializer.class)
@TableField(value="TENANTID")
private Long tenantid;
@Schema(description = "父节点默认为0表示根")
@JsonSerialize(using = ToStringSerializer.class)
@TableField(value="PID")
private Long pid;
@Schema(description = "是否有子节点")
@TableField(value="HASCHILD")
private String haschild;
@Schema(description = "分类名称")
@TableField(value="CLASSNAME")
private String classname;
@Schema(description = "排序字段")
@TableField(value="REORDER")
private Integer reorder;
//租户对象
@TableField(exist = false)
private Tenant tenant;
//保存当前登录用户的数据权限范围的搜索条件
@TableField(exist = false)
@JsonIgnore
private SearchQuery searchQueryrolesShowleave;
@TableField(exist = false)
@JsonIgnore
private final Map<String,String> query = Stream.of(
new SimpleEntry<>("ID","id"),
new SimpleEntry<>("CREATEBY","createby"),
new SimpleEntry<>("CREATETIME","createtime"),
new SimpleEntry<>("UPDATEBY","updateby"),
new SimpleEntry<>("UPDATETIME","updatetime"),
new SimpleEntry<>("TENANTID","tenantid"),
new SimpleEntry<>("PID","pid"),
new SimpleEntry<>("HASCHILD","haschild"),
new SimpleEntry<>("CLASSNAME","classname"),
new SimpleEntry<>("REORDER","reorder")
)
.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;
}
}

@ -195,10 +195,6 @@ public class OcrTaskchildPicture implements BaseDto, java.io.Serializable {
@TableField(value = "TASKNAME")
private String taskname;
@Schema(description = "当前节点名称")
@TableField(value = "TASKNODE")
private String taskNode;
@Schema(description = "当前节点id")
@TableField(value = "TASKID")
private String taskId;
@ -207,14 +203,6 @@ public class OcrTaskchildPicture implements BaseDto, java.io.Serializable {
@TableField(value = "FINISHTIME")
private Long finishtime;
@Schema(description = "是否终审")
@TableField(value = "ISFINAIL")
private Integer isFinal;
@Schema(description = "是否小结重复,1重复0不重复")
@TableField(value = "is_repeated_nodules")
private Integer isRepeatedNodules;
@ApiModelProperty(value = "项目对象")
@TableField(exist = false)
private Category categoryDto;

@ -142,8 +142,7 @@ public class OcrTaskchildPictureAppro implements java.io.Serializable {
@ApiModelProperty(value = "拜访城市")
private String fromCity;
@ApiModelProperty(value = "是否重复小结")
private Integer isRepeatedNodules;
@ApiModelProperty(value = "所属计划")
private String fromplanid;
@ -196,10 +195,4 @@ public class OcrTaskchildPictureAppro implements java.io.Serializable {
@ApiModelProperty(value = "提交时间")
private Long finishTime;
@ApiModelProperty(value = "是否重复")
private Integer isRepeat;
@ApiModelProperty(value = "当前节点")
private String taskNodeIndex;
}

@ -39,10 +39,4 @@ public class OcrFieldDto implements Serializable {
@Schema(description = "是否可点击,0:否,1是")
private Integer isTap;
@Schema(description = "是否可隐藏,0:否,1是")
private Integer isHide;
@Schema(description = "是否启用,0:停用,1启用")
private Integer isEnable;
}

@ -1,23 +0,0 @@
package cn.jyjz.xiaoyao.ocr.dto;
import lombok.Data;
/**
* ClassName ResultDto$.java
* Description:
* Author scl.
* Date 2024/4/7 21:40
*/
@Data
public class ResultDto {
private Integer status;
private String message;
private Long timestamp;
private String signature;
private String data;
}

@ -2,7 +2,6 @@ package cn.jyjz.xiaoyao.ocr.service;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrSearchHistory;
import com.baomidou.mybatisplus.extension.service.IService;
@ -21,9 +20,7 @@ import java.util.Map;
public interface IOcrSearchHistoryService extends IService<OcrSearchHistory> {
Map<Object, List<Map<String,String>>> selectsearch(String search, String assignee, String userId, String tenantId);
ResultVo toolscount(String tenantid, UserToken userToken, HttpServletRequest request);
ResultVo toolsTaskApprovalCount(String tenantid, UserToken userToken, HttpServletRequest request);
ResultVo toolscount(String tenantid, String userId, HttpServletRequest request);
Map<Object,Object> selectaisp(String userid,String id,Integer nodeType);

@ -17,6 +17,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IOcrTaskchildDubiousFileService extends IService<OcrTaskchildDubiousFile> {
Page<OcrTaskChildPictureVo> dubiousfilelist(Integer pageNo, Integer pageSize,String orderByUptime,String orderBySimilarity,UserToken userToken, String tenantId);
Page<OcrTaskChildPictureVo> dubiousfilelist(Integer pageNo, Integer pageSize, String orderbyname, UserToken userToken, String tenantId);
}

@ -1,14 +0,0 @@
package cn.jyjz.xiaoyao.ocr.service;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrCheckDescribeHis;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* ClassName $className$.java
* Description:
* Author scl.
* Date 2024/4/18 22:57
*/
public interface OcrCheckDescribeHisService extends IService<OcrCheckDescribeHis>{
}

@ -1,13 +1,9 @@
package cn.jyjz.xiaoyao.ocr.service;
import cn.jyjz.xiaoyao.common.base.param.ParamterPage;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrField;
import cn.jyjz.xiaoyao.ocr.dto.OcrFieldDto;
import cn.jyjz.xiaoyao.ocr.vo.OcrFieldVo;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List;
@ -16,14 +12,10 @@ import java.util.List;
*/
public interface OcrFieldService extends BaseService<OcrField> {
List<OcrFieldDto> list(Integer reviewType);
/**
*
*/
IPage<OcrField> pageList(ParamterPage paramterPage, QueryWrapper<OcrField> queryWrapper);
List<OcrFieldDto> list(Integer reviewType);
/**
*
@ -37,5 +29,5 @@ public interface OcrFieldService extends BaseService<OcrField> {
/**
*
*/
ResultVo saveData(OcrField ocrField);
void saveData(OcrField ocrField);
}

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

Loading…
Cancel
Save