Compare commits

..

1 Commits

35
.gitignore vendored

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

8
.idea/.gitignore vendored

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

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

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

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

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

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

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

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

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

File diff suppressed because it is too large Load Diff

@ -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"> 图片信息url:</label>
<div class="col-sm-9">
<input name="pictureSourceUrl" id="pictureSourceUrl" class="form-control" placeholder="图片信息url" 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="sendResultUrl" id="sendResultUrl" 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"> 项目信息url:</label>
<div class="col-sm-9">
<input name="projectSourceUrl" id="projectSourceUrl" class="form-control" placeholder="项目信息url" 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="tenantSourceUrl" id="tenantSourceUrl" class="form-control" placeholder="租户信息url" 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,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}/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,331 +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}/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);
}
}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:'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) {
return (oData.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/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>

@ -3,7 +3,7 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>公司主表</title> <title>部门主表</title>
@ -25,9 +25,9 @@
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <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"> <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> </div>
</div> </div>
@ -45,9 +45,9 @@
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <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"> <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> </div>
</div> </div>
@ -81,9 +81,9 @@
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <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"> <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> </div>
</div> </div>
@ -91,47 +91,20 @@
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <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"> <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>
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <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> </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="row">
<div class="form-group"> <div class="form-group">
<div class="col-sm-offset-5"> <div class="col-sm-offset-5">

@ -3,7 +3,7 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>公司主表</title> <title>部门主表</title>
@ -27,9 +27,9 @@
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <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"> <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> </div>
</div> </div>
@ -47,9 +47,9 @@
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <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"> <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> </div>
</div> </div>
@ -84,9 +84,9 @@
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <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"> <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> </div>
</div> </div>
@ -94,41 +94,13 @@
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <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"> <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>
</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="col-sm-6">
<div class="form-group"> <div class="form-group">
@ -208,8 +180,8 @@
$(document).ready(function () { $(document).ready(function () {
parent.axgetXiaoyao("${ctx}/backstage/admin/department/showDeptJsTree" ,null,false,function (datatree) { parent.axgetXiaoyao("${ctx}/backstage/admin/department/showDeptJsTree" ,null,false,function (data) {
_deptTree = $.fn.zTree.init($("#departZtreeUl"),setting, datatree); _deptTree = $.fn.zTree.init($("#departZtreeUl"),setting, data);
_deptTree.expandAll(true); _deptTree.expandAll(true);
@ -222,8 +194,6 @@
$("#departdesc").val(data.data.departdesc); $("#departdesc").val(data.data.departdesc);
$("#deptno").val(data.data.deptno); $("#deptno").val(data.data.deptno);
$("#description").val(data.data.description);
var node = _deptTree.getNodesByParam("id",String(data.data.parentid)); var node = _deptTree.getNodesByParam("id",String(data.data.parentid));
@ -239,12 +209,6 @@
$("input:radio[name='enabled']").eq(1).attr('checked',true); $("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(); checkeradio();
$("#sorting").val(data.data.sorting); $("#sorting").val(data.data.sorting);

@ -3,7 +3,7 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <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"/> <input name='search_parentid' id='search_parentid' type="hidden"/>
<div class="form-group"> <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>
<div class="form-group"> <div class="form-group">
<select class="form-control input-s-sm inline" name="search_enabled" id="search_enabled"> <select class="form-control input-s-sm inline" name="search_enabled" id="search_enabled">
@ -89,43 +89,12 @@
</div> </div>
</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" /> <#include "/head/footlist.html" />
<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>
</body> </body>
</html> </html>
<script type="text/javascript"> <script type="text/javascript">
var _tableListDefinition;
var _deptTree; var _deptTree;
var setting = { var setting = {
data: { data: {
@ -154,103 +123,13 @@
$("#collapes_linkopen").show(); $("#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 _tableListDepartment;
var jsptoolbar = ''; var jsptoolbar = '';
var jspOperation = ''; var jspOperation = '';
jQuery(document).ready(function($){ 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(); initDepartTree();
parent.axgetXiaoyao("${ctx}/backstage/admin/user/toolsbarOperation?" + "resourceid=${resourceid}",null,true , parent.axgetXiaoyao("${ctx}/backstage/admin/user/toolsbarOperation?" + "resourceid=${resourceid}",null,true ,
function(data){ function(data){
@ -289,28 +168,9 @@
}, },
columns: [ columns: [
{checkbox: true}, {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, { width:150,valign: "middle",field:'enabled',title:'是否启用',sortable:true,
formatter:function (value,oData,index) { formatter:function (value,oData,index) {
var listOperation = ""; var listOperation = "";
@ -336,8 +196,6 @@
$(jspOperation).each(function (i, toolbar) { $(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:" + 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; return listOperation;
} }
} }
@ -364,11 +222,11 @@
}); });
} }
function _useradd(sourceid){ function _useradd(sourceid){
parent._xiaoyaoOpenMenuTab('${ctx}/backstage/admin/departmentHtml/toSave',"添加公司",sourceid); parent._xiaoyaoOpenMenuTab('${ctx}/backstage/admin/departmentHtml/toSave',"添加部门",sourceid);
} }
function updateData(sourceid,str){ function updateData(sourceid,str){
var url = '${ctx}/backstage/admin/departmentHtml/toEdit/' + str ; var url = '${ctx}/backstage/admin/departmentHtml/toEdit/' + str ;
parent._xiaoyaoOpenMenuTab(url,"修改公司",sourceid + "_edit"); parent._xiaoyaoOpenMenuTab(url,"修改部门",sourceid + "_edit");
} }
function _useredit(sourceid){ function _useredit(sourceid){
var str = getIdSelections() + ""; 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="col-sm-9">
<div class="input-group"> <div class="input-group">
<input name="treeDeptName" id="treeDeptName" type="text" placeholder="请选择归属部门" onclick="selectDeptTree()" readonly="true" required class="form-control"> <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> <span class="input-group-addon"><i class="fa fa-search"></i></span>
</div> </div>
</div> </div>
@ -154,7 +154,11 @@
</div> </div>
</div> </div>
<div class="form-group"> <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>
</div> </div>
@ -290,41 +294,8 @@
simpleData: { simpleData: {
enable: true enable: true
} }
}, }, callback: {onClick: zTreeOnClick }
check: {
enable: true,
chkStyle: "checkbox",
chkboxType: { "Y": "", "N": "" }
},
callback: {
onCheck: zOnCheck
}
}; };
// 全局变量
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() { function showuserIconModel() {
$userIconModel.modal(); $userIconModel.modal();
$userIconModel.css("z-index",(parent.getMaxZIndex() + 1)); $userIconModel.css("z-index",(parent.getMaxZIndex() + 1));
@ -337,22 +308,6 @@
$modalDeptTree.css("z-index",(parent.getMaxZIndex() + 1)); $modalDeptTree.css("z-index",(parent.getMaxZIndex() + 1));
} }
function closedept(){ 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'); $modalDeptTree.modal('hide');
} }
//折叠ibox //折叠ibox
@ -368,7 +323,13 @@
$(this).hide(); $(this).hide();
$("#collapes_linkopen").show(); $("#collapes_linkopen").show();
}); });
function zTreeOnClick(event, treeId, treeNode) {
$("#treeDeptName").val(treeNode.name);
$("#departmentId").val(treeNode.id);
closedept();
}
var selectConfig = { var selectConfig = {
'.chosen-select': {}, '.chosen-select': {},
'.chosen-select-deselect': { '.chosen-select-deselect': {
@ -394,7 +355,16 @@
changeRoles(userdepartmentId); changeRoles(userdepartmentId);
changePost(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 = { var config = {

@ -123,7 +123,7 @@
<div class="col-sm-9"> <div class="col-sm-9">
<div class="input-group"> <div class="input-group">
<input name="treeDeptName" id="treeDeptName" type="text" placeholder="请选择归属部门" onclick="selectDeptTree()" readonly="true" required class="form-control"> <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> <span class="input-group-addon"><i class="fa fa-search"></i></span>
</div> </div>
</div> </div>
@ -157,7 +157,11 @@
</div> </div>
</div> </div>
<div class="form-group"> <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>
</div> </div>
@ -282,40 +286,8 @@
simpleData: { simpleData: {
enable: true enable: true
} }
}, }, callback: {onClick: zTreeOnClick }
check: {
enable: true,
chkStyle: "checkbox",
chkboxType: { "Y": "", "N": "" }
},
callback: {
onCheck: zOnCheck
}
}; };
// 全局变量
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 = { var selectConfig = {
'.chosen-select': {}, '.chosen-select': {},
'.chosen-select-deselect': { '.chosen-select-deselect': {
@ -344,21 +316,6 @@
$modalDeptTree.css("z-index",(parent.getMaxZIndex() + 1)); $modalDeptTree.css("z-index",(parent.getMaxZIndex() + 1));
} }
function closedept(){ 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'); $modalDeptTree.modal('hide');
} }
//折叠ibox //折叠ibox
@ -374,7 +331,13 @@
$(this).hide(); F $(this).hide(); F
$("#collapes_linkopen").show(); $("#collapes_linkopen").show();
}); });
function zTreeOnClick(event, treeId, treeNode) {
$("#treeDeptName").val(treeNode.name);
$("#departmentId").val(treeNode.id);
closedept();
}
$(document).ready(function () { $(document).ready(function () {
@ -384,6 +347,20 @@
changePost(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>");
});
}
});
parent.axgetXiaoyao("${ctx}/backstage/admin/department/showDeptJsTree",null,false,function (data) { parent.axgetXiaoyao("${ctx}/backstage/admin/department/showDeptJsTree",null,false,function (data) {
_deptTree = $.fn.zTree.init($("#departZtreeUl"),setting, data); _deptTree = $.fn.zTree.init($("#departZtreeUl"),setting, data);
_deptTree.expandAll(true); _deptTree.expandAll(true);
@ -402,23 +379,16 @@
$("#email").val(usermodel.email); $("#email").val(usermodel.email);
$("#nationid").val(usermodel.nationid); $("#nationid").val(usermodel.nationid);
var tempId = ""; var nodeId = usermodel.departmentId;
$.each(usermodel.deptlist,function (index,deptDate){
if(null != deptDate){ if(undefined != nodeId && null != nodeId){
var node = _deptTree.getNodeByParam("id",deptDate.id); var node = _deptTree.getNodeByParam("id",nodeId);
// _deptTree.selectNode(node); _deptTree.selectNode(node);
_deptTree.checkNode(node,true,true,true);
}
if(tempId.length > 1){
tempId = tempId + "," + deptDate.id;
}else{
tempId = tempId + deptDate.id;
} }
});
$("#departmentIds").val(tempId);
$("#treeDeptName").val(usermodel.departname); $("#treeDeptName").val(usermodel.departname);
$("#departmentId").val(usermodel.departmentId);
if(usermodel.enabled == 1){ if(usermodel.enabled == 1){
$("input:radio[name='enabled']").eq(0).attr('checked',true); $("input:radio[name='enabled']").eq(0).attr('checked',true);
@ -432,6 +402,12 @@
$("input:radio[name='usex']").eq(1).attr('checked',true); $("input:radio[name='usex']").eq(1).attr('checked',true);
} }
$.each(usermodel.tenantList,function(name,anArray) {
$("#tenantselect option[value='" + anArray.id + "']").attr("selected",true);
});
}else{ }else{
parent.toastr.error("非法请求。"); parent.toastr.error("非法请求。");
//rolesback(); //rolesback();

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

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

@ -60,7 +60,7 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
String[] excludespath = systemopenurlService.getOpenUrl(); String[] excludespath = systemopenurlService.getOpenUrl();
//不需要过滤的url //不需要过滤的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); String[] urls = ArrayUtils.addAll(excludespath, excludesOther);

@ -102,35 +102,6 @@ public class DepartmentController extends BaseController{
return ResultVoUtil.success(); 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 *mail.zhangyong@gmail.com

@ -196,10 +196,8 @@ public class UserController extends BaseController{
//角色主键数组 //角色主键数组
String[] rolesid = request.getParameterValues("rolesid"); 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) { if (isok > 0) {
String[] tenantselect = request.getParameterValues("tenantselect"); String[] tenantselect = request.getParameterValues("tenantselect");
@ -254,10 +252,8 @@ public class UserController extends BaseController{
//角色主键数组 //角色主键数组
String[] rolesid = request.getParameterValues("rolesid"); 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) { if (isok > 0) {
String[] tenantselect = request.getParameterValues("tenantselect"); String[] tenantselect = request.getParameterValues("tenantselect");

@ -52,7 +52,6 @@ public class Department implements BaseDto,java.io.Serializable {
@Schema(description = "上一级部门主键默认为0表示为第一级数据对象非0情况表示为有上一级数据对象") @Schema(description = "上一级部门主键默认为0表示为第一级数据对象非0情况表示为有上一级数据对象")
@TableField(value="PARENTID") @TableField(value="PARENTID")
@JsonSerialize(using = ToStringSerializer.class)
private Long parentid; private Long parentid;
@Schema(description = "记录根级部门主键用于记录子部门所属根节点主键默认为0只有一层节点记录上一级节点主键") @Schema(description = "记录根级部门主键用于记录子部门所属根节点主键默认为0只有一层节点记录上一级节点主键")
@ -131,37 +130,6 @@ public class Department implements BaseDto,java.io.Serializable {
@TableField(value="UPDATETIME") @TableField(value="UPDATETIME")
private Long 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) @TableField(exist = false)
private List<Department> listchilddept; private List<Department> listchilddept;
@ -197,15 +165,7 @@ public class Department implements BaseDto,java.io.Serializable {
new SimpleEntry<>("CREATEUSER","createuser"), new SimpleEntry<>("CREATEUSER","createuser"),
new SimpleEntry<>("CREATEDATE","createdate"), new SimpleEntry<>("CREATEDATE","createdate"),
new SimpleEntry<>("UPDATEUSER","updateuser"), new SimpleEntry<>("UPDATEUSER","updateuser"),
new SimpleEntry<>("UPDATETIME","updatetime"), 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")
) )
.collect(Collectors.toMap(SimpleEntry::getKey, SimpleEntry::getValue)); .collect(Collectors.toMap(SimpleEntry::getKey, SimpleEntry::getValue));
@Override @Override

@ -172,12 +172,12 @@ public class User implements BaseDto,java.io.Serializable {
//用于记录用户对应的顶级机构主键 //用于记录用户对应的顶级机构主键
@TableField(exist = false) @TableField(exist = false)
private Long departmentRootId = 0L; private Long departmentRootId = 0L;
//
// //租户关系
// @TableField(exist = false)
// List<Tenant> tenantList;
//用户对应的部门信息,映射文件中对应的字段信息
//租户关系
@TableField(exist = false)
List<Tenant> tenantList;
//用户对应的部门信息,映射文件中对应的字段信息
@JsonIgnore
@TableField(exist = false) @TableField(exist = false)
private List<Department> deptlist = new ArrayList<Department>(0); 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(); Iterator<Department> it = deptlist.iterator();
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
while (it.hasNext()) { if (it.hasNext()) {
Department dept = it.next(); Department dept = it.next();
if (null != sb && sb.length() > 0) { if (null != sb && sb.length() > 0) {

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

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

@ -206,17 +206,6 @@ public class DepartmentServiceImpl extends BaseServiceImpl<DepartmentMybatisDao,
return list; 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 * @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); Map<Long,List<Resources>> mapResources = iCacheManager.get(CacheAdminConstants.SYS_RESOURCE_ALL,CacheAdminConstants.SYS_RESOURCE_ALL_KEY);
// if(null == mapResources){ if(null == mapResources){
synchronized (this){ synchronized (this){
//获取角色集合 //获取角色集合
@ -205,7 +205,7 @@ public class ResourcesServiceImpl extends BaseServiceImpl<ResourcesMybatisDao,Re
//查询角色和资源对应的方法集合 //查询角色和资源对应的方法集合
} }
// } }
return mapResources; return mapResources;
} }

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

@ -238,7 +238,7 @@ public class UserTokenServiceImpl implements UserTokenService {
Map<String,Object> rolesShowleave = this.rolesService.getRolesConditionMap(user); Map<String,Object> rolesShowleave = this.rolesService.getRolesConditionMap(user);
SearchQuery searchQueryrolesShowleave = this.rolesService.getRolesCondition(rolesShowleave); SearchQuery searchQueryrolesShowleave = this.rolesService.getRolesCondition(rolesShowleave);
user.setRolesShowleave(rolesShowleave); user.setRolesShowleave(rolesShowleave);
//user.setTenantList(this.userTenantService.listUserTenant(user.getId())); user.setTenantList(this.userTenantService.listUserTenant(user.getId()));
user.setSearchQueryrolesShowleave(searchQueryrolesShowleave); user.setSearchQueryrolesShowleave(searchQueryrolesShowleave);
userVo = BeanUtil.copyProperties(user,User.class); userVo = BeanUtil.copyProperties(user,User.class);

@ -26,14 +26,6 @@
<result column="CREATEDATE" property="createdate" jdbcType="BIGINT"/> <result column="CREATEDATE" property="createdate" jdbcType="BIGINT"/>
<result column="UPDATEUSER" property="updateuser" jdbcType="VARCHAR"/> <result column="UPDATEUSER" property="updateuser" jdbcType="VARCHAR"/>
<result column="UPDATETIME" property="updatetime" jdbcType="BIGINT"/> <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}"/> <collection property="listchilddept" select="selectChildDeptEnabled" javaType="java.util.ArrayList" column="{id=id}"/>
</resultMap> </resultMap>
<resultMap id="BaseResultMap_only" type="cn.jyjz.xiaoyao.admin.dataobject.Department"> <resultMap id="BaseResultMap_only" type="cn.jyjz.xiaoyao.admin.dataobject.Department">
@ -61,14 +53,6 @@
<result column="CREATEDATE" property="createdate" jdbcType="BIGINT"/> <result column="CREATEDATE" property="createdate" jdbcType="BIGINT"/>
<result column="UPDATEUSER" property="updateuser" jdbcType="VARCHAR"/> <result column="UPDATEUSER" property="updateuser" jdbcType="VARCHAR"/>
<result column="UPDATETIME" property="updatetime" jdbcType="BIGINT"/> <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}"/> <collection property="listchilddept" select="selectChildDeptEnabled" javaType="java.util.ArrayList" column="{id=id}"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
@ -95,15 +79,7 @@
CREATEUSER AS createuser, CREATEUSER AS createuser,
CREATEDATE AS createdate, CREATEDATE AS createdate,
UPDATEUSER AS updateuser, UPDATEUSER AS updateuser,
UPDATETIME AS updatetime, 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
</sql> </sql>
<sql id="Base_Where"> <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="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="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="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="userid != null"> and USERID ${userid.dataOp} ${userid.likestar}#{userid.value}${userid.likeend}</if>
<if test="listdept != null"> <if test="listdept != null">
and DEPARTID in and DEPARTID in
@ -219,15 +187,7 @@
d.CREATEUSER AS createuser, d.CREATEUSER AS createuser,
d.CREATEDATE AS createdate, d.CREATEDATE AS createdate,
d.UPDATEUSER AS updateuser, d.UPDATEUSER AS updateuser,
d.UPDATETIME AS updatetime, 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
from S_DEPARTMENT_T d,S_USEROBJECT_T uo where uo.DEPARTID=d.ID and uo.USERID=#{id} from S_DEPARTMENT_T d,S_USEROBJECT_T uo where uo.DEPARTID=d.ID and uo.USERID=#{id}
</select> </select>
<!-- 查询机构启用的子集的机构信息 start--> <!-- 查询机构启用的子集的机构信息 start-->
@ -256,15 +216,7 @@
dm.CREATEUSER AS createuser, dm.CREATEUSER AS createuser,
dm.CREATEDATE AS createdate, dm.CREATEDATE AS createdate,
dm.UPDATEUSER AS updateuser, dm.UPDATEUSER AS updateuser,
dm.UPDATETIME AS updatetime, 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
from S_DEPARTMENT_T dm,S_DEPARTMENTCHILD_T dmc where dm.ID = dmc.CHILDID and dmc.PARENTID = #{id} ORDER BY dm.SORTING DESC from S_DEPARTMENT_T dm,S_DEPARTMENTCHILD_T dmc where dm.ID = dmc.CHILDID and dmc.PARENTID = #{id} ORDER BY dm.SORTING DESC
</select> </select>
</mapper> </mapper>

@ -107,7 +107,7 @@
u.UPDATEUSER AS updateuser, u.UPDATEUSER AS updateuser,
u.UPDATETIME AS updatetime, u.UPDATETIME AS updatetime,
u.PSDUPDATETIME AS psdupdatetime 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} ${ew.customSqlSegment}
</select> </select>

@ -48,35 +48,60 @@
</sql> </sql>
<select id="listCount" resultType="java.lang.Long" parameterType="java.util.Map"> <select id="listCount" resultType="java.lang.Long" parameterType="java.util.Map">
select count(u.ID) from s_user_t u select
left join s_userobject_t uo on u.id = uo.USERID count(ten.ID)
left join s_department_t dm on dm.id = uo.DEPARTID from
where u.LOGINNAME =#{loginname} and dm.DESCRIPTION = #{otherno} 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>
<select id="listOthernoCount" resultType="java.lang.Long" parameterType="java.util.Map"> <select id="listOthernoCount" resultType="java.lang.Long" parameterType="java.util.Map">
select select
count(dm.ID) count(ten.ID)
from from
s_department_t dm S_TENANT_T ten
where where
dm.DESCRIPTION = #{otherno} ten.OTHERNO = #{otherno}
</select> </select>
<select id="listLoginNameCount" resultType="java.lang.Long" parameterType="java.util.Map"> <select id="listLoginNameCount" resultType="java.lang.Long" parameterType="java.util.Map">
select count(u.ID) from s_user_t u select
left join s_userobject_t uo on u.id = uo.USERID count(ten.ID)
left join s_department_t dm on dm.id = uo.DEPARTID from
where u.LOGINNAME =#{loginname} and dm.DESCRIPTION = #{otherno} 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>
<select id="listMobileCount" resultType="java.lang.Long" parameterType="java.util.Map"> <select id="listMobileCount" resultType="java.lang.Long" parameterType="java.util.Map">
select count(u.ID) from s_user_t u select
left join s_userobject_t uo on u.id = uo.USERID count(ten.ID)
left join s_department_t dm on dm.id = uo.DEPARTID from
where u.MOBILE =#{mobile} and dm.DESCRIPTION = #{otherno} 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> </select>
</mapper> </mapper>

@ -1,7 +1,5 @@
package cn.jyjz.flowable.config; 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.dataobject.Category;
import cn.jyjz.xiaoyao.oa.from.service.CategoryService; import cn.jyjz.xiaoyao.oa.from.service.CategoryService;
import org.flowable.common.engine.api.delegate.event.FlowableEvent; import org.flowable.common.engine.api.delegate.event.FlowableEvent;
@ -23,8 +21,6 @@ public class GlobalEntityInitListener implements FlowableEventListener {
@Autowired @Autowired
private CategoryService categoryService; private CategoryService categoryService;
@Autowired
private DepartmentService departmentService;
@Override @Override
public void onEvent(FlowableEvent flowableEvent) { public void onEvent(FlowableEvent flowableEvent) {
FlowableEventType type = flowableEvent.getType(); FlowableEventType type = flowableEvent.getType();
@ -41,17 +37,9 @@ public class GlobalEntityInitListener implements FlowableEventListener {
categoryService.updateById(category); 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);
}
} }
} }
} }

@ -310,11 +310,9 @@ public class FlowTaskController extends BaseController {
searchQuery.addLike("fromtaskname", taskName); searchQuery.addLike("fromtaskname", taskName);
} }
//获取用户预设检索条件id,如果存在检索条件,则高级检索失效 //获取用户预设检索条件id
String userSearchId = ""; String userSearchId = request.getParameter("userSearchId");
if(StringUtils.isBlank(taskName)){
userSearchId = request.getParameter("userSearchId");
}
User user = this.userService.getSessionUser(request); User user = this.userService.getSessionUser(request);
if (user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))) { if (user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))) {
@ -383,10 +381,10 @@ public class FlowTaskController extends BaseController {
@RequestParam(name = "izstatus", defaultValue = "", required = false) String izstatus, @RequestParam(name = "izstatus", defaultValue = "", required = false) String izstatus,
@RequestParam(name = "iztaskrrom", defaultValue = "", required = false) String iztaskrrom, @RequestParam(name = "iztaskrrom", defaultValue = "", required = false) String iztaskrrom,
@RequestParam(name = "izuptime", defaultValue = "", required = false) String izuptime, @RequestParam(name = "izuptime", defaultValue = "", required = false) String izuptime,
@RequestParam(name = "isFail", defaultValue = "false", required = false) String isFail,
HttpServletRequest request) { HttpServletRequest request) {
SearchQuery searchQuery = new SearchQuery(); SearchQuery searchQuery = new SearchQuery();
if (org.springframework.util.StringUtils.hasText(izupuser)) { if (org.springframework.util.StringUtils.hasText(izupuser)) {
// searchQuery.addEqual("fromuserid",izupuser);
if (izupuser.contains(",")) { if (izupuser.contains(",")) {
String[] userIds = izupuser.split(","); String[] userIds = izupuser.split(",");
List<String> arrayData = Arrays.asList(userIds); List<String> arrayData = Arrays.asList(userIds);
@ -422,22 +420,17 @@ public class FlowTaskController extends BaseController {
if (izstatus.contains(",")) { if (izstatus.contains(",")) {
String[] statusIds = izstatus.split(","); // 以逗号拆分字符串 String[] statusIds = izstatus.split(","); // 以逗号拆分字符串
List<String> arrayData = Arrays.asList(statusIds); List<String> arrayData = Arrays.asList(statusIds);
SearchQueryForm searchQueryForm = new SearchQueryForm();
searchQuery.addIn("states", arrayData); searchQuery.addIn("states", arrayData);
} else { } else {
searchQuery.addEqual("states", izstatus); searchQuery.addEqual("states", izstatus);
} }
}else{
if(Boolean.parseBoolean(isFail)){
searchQuery.addEqual("isFail","1");
searchQuery.addIn("states", Arrays.asList("2","3","5"));
}else{
searchQuery.addIn("states", Arrays.asList("2","3"));
}
} }
if (org.springframework.util.StringUtils.hasText(iztaskrrom)) { if (org.springframework.util.StringUtils.hasText(iztaskrrom)) {
if (iztaskrrom.contains(",")) { if (iztaskrrom.contains(",")) {
String[] taskrromIds = iztaskrrom.split(","); // 以逗号拆分字符串 String[] taskrromIds = iztaskrrom.split(","); // 以逗号拆分字符串
List<String> arrayData = Arrays.asList(taskrromIds); List<String> arrayData = Arrays.asList(taskrromIds);
SearchQueryForm searchQueryForm = new SearchQueryForm();
searchQuery.addIn("fromsourceid", arrayData); searchQuery.addIn("fromsourceid", arrayData);
} else { } else {
searchQuery.addEqual("fromsourceid", iztaskrrom); searchQuery.addEqual("fromsourceid", iztaskrrom);
@ -458,11 +451,11 @@ public class FlowTaskController extends BaseController {
// 如果开始时间不为空,则将其放入查询条件中 // 如果开始时间不为空,则将其放入查询条件中
if (startTimeStamp != null) { if (startTimeStamp != null) {
searchQuery.addGreater("fromuptimeStart", startTimeStamp); searchQuery.addGreater("createdateStart", startTimeStamp);
} }
// 如果结束时间不为空,则将其放入查询条件中 // 如果结束时间不为空,则将其放入查询条件中
if (endTimeStamp != null) { if (endTimeStamp != null) {
searchQuery.addLess("fromuptimeEnd", endTimeStamp); searchQuery.addLess("createdateEnd", endTimeStamp);
} }
} catch (ParseException e) { } catch (ParseException e) {
// 处理日期解析异常 // 处理日期解析异常
@ -479,7 +472,7 @@ public class FlowTaskController extends BaseController {
User user = this.userService.getSessionUser(request); User user = this.userService.getSessionUser(request);
if (user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))) { if (user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))) {
} else { } else {
searchQuery.addEqual("thisLoginUserid", user.getLoginname()); searchQuery.addEqual("thisLoginUserid", user.getId().toString());
searchQuery.addEqual("tenantid", tenantId); searchQuery.addEqual("tenantid", tenantId);
} }
String searchId = request.getParameter("searchId"); String searchId = request.getParameter("searchId");

@ -33,16 +33,15 @@ import cn.jyjz.xiaoyao.oa.from.dataobject.Flowablecc;
import cn.jyjz.xiaoyao.oa.from.service.*; import cn.jyjz.xiaoyao.oa.from.service.*;
import cn.jyjz.xiaoyao.oa.from.vo.FlowUnionVo; 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.oa.from.vo.RepeatedTaskVo;
import cn.jyjz.xiaoyao.ocr.dataobject.*; import cn.jyjz.xiaoyao.ocr.dataobject.*;
import cn.jyjz.xiaoyao.ocr.service.*; import cn.jyjz.xiaoyao.ocr.service.*;
import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting; import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting;
import cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo;
import cn.jyjz.xiaoyao.ocr.vo.OcrTaskchildPictureApproVo; import cn.jyjz.xiaoyao.ocr.vo.OcrTaskchildPictureApproVo;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@ -457,10 +456,9 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
variables.put("approvd", approve.getResult()); variables.put("approvd", approve.getResult());
OcrTaskchildPicture model = ocrTaskchildPictureService.getById(Long.parseLong(flowTaskInfo.getFormId())); OcrTaskchildPicture model = ocrTaskchildPictureService.getById(Long.parseLong(flowTaskInfo.getFormId()));
if (approve.getResult()) { if (approve.getResult()) {
disposeSucceedTask(task, processDefinition, variables, model, flowTaskInfo.getFormId(), userToken, approve); disposeSucceedTask(task, processDefinition, variables, model, flowTaskInfo.getFormId(), userToken);
} else { } else {
disposeFailureTask(task, flowTaskInfo.getFormId(), variables, approve); disposeFailureTask(task, flowTaskInfo.getFormId(), variables);
} }
userapproveService.save(userToken, approve, task, flowTaskInfo.getFormId()); userapproveService.save(userToken, approve, task, flowTaskInfo.getFormId());
successCount++; successCount++;
@ -477,7 +475,7 @@ 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) throws Exception { private void disposeSucceedTask(Task task, ProcessDefinition processDefinition, Map<String, Object> variables, OcrTaskchildPicture model, String formId, UserToken userToken) {
//进入下一个节点 //进入下一个节点
taskService.complete(task.getId(), variables); taskService.complete(task.getId(), variables);
updateAssignee(task.getProcessInstanceId(), task.getProcessDefinitionId(), processDefinition); updateAssignee(task.getProcessInstanceId(), task.getProcessDefinitionId(), processDefinition);
@ -490,25 +488,22 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
if (null != taskList && !taskList.isEmpty()) { if (null != taskList && !taskList.isEmpty()) {
taskData = taskList.get(0); taskData = taskList.get(0);
} }
OcrTaskchildPicture childPicture = ocrTaskchildPictureService.getById(Long.parseLong(formId));
childPicture.setTaskNode(taskData.getDescription());
if (ObjectUtils.isEmpty(taskData)) { if (ObjectUtils.isEmpty(taskData)) {
model.setFinishtime(System.currentTimeMillis()); model.setFinishtime(System.currentTimeMillis());
model.setStates(SystemConstantsOa.OA_STATUS_TYPE_END); model.setStates(SystemConstantsOa.OA_STATUS_TYPE_END);
OcrPicture picture = ocrPictureService.getById(model.getPictureid()); ocrTaskchildPictureService.updateById(model);
ocrTaskchildPictureService.sendFlowTaskResult(childPicture, picture, approve);
} else { } else {
//判断节点上的描述字段是否伟finale_judgment,如果是,记录到终审表中,如果终审表已经存在,不再重复记录 //判断节点上的描述字段是否伟finale_judgment,如果是,记录到终审表中,如果终审表已经存在,不再重复记录
if (StringUtils.isNotBlank(taskData.getDescription()) && taskData.getDescription().equals(SystemConstantsOa.OA_TASK_COMPLETE_FINALE_FORM)) { if (StringUtils.isNotBlank(taskData.getDescription()) && taskData.getDescription().equals(SystemConstantsOa.OA_TASK_COMPLETE_FINALE_FORM)) {
childPicture.setIsFinal(1);
User user = userService.findByLoginname(formData.getAssignee()); User user = userService.findByLoginname(formData.getAssignee());
userFinalService.save(user.getId().toString(), formId); userFinalService.save(user.getId().toString(), formId);
} }
OcrTaskchildPicture childPicture = ocrTaskchildPictureService.getById(Long.parseLong(formId));
this.sendMsg(childPicture, userToken); this.sendMsg(childPicture, userToken);
childPicture.setTaskId(taskData.getId()); childPicture.setTaskId(taskData.getId());
childPicture.setTaskname(taskData.getName()); childPicture.setTaskname(taskData.getName());
}
ocrTaskchildPictureService.updateById(childPicture); ocrTaskchildPictureService.updateById(childPicture);
}
//增加未查看记录 //增加未查看记录
userViewApproeService.saveUserViewApproe(formData.getAssignee(), formData.getFormid().toString(), formData.getTenantid().toString()); userViewApproeService.saveUserViewApproe(formData.getAssignee(), formData.getFormid().toString(), formData.getTenantid().toString());
@ -517,8 +512,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
/** /**
* *
*/ */
private void disposeFailureTask(Task task, String formId, Map<String, Object> variables, FlowApprove approve) throws private void disposeFailureTask(Task task, String formId, Map<String, Object> variables) {
Exception {
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult(); ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();
//我这里以 流程定义key(oa_category_t定义的关键字逻辑唯一) + 业务表主键(请假表、调岗表等) + 业务表对应的servicename //我这里以 流程定义key(oa_category_t定义的关键字逻辑唯一) + 业务表主键(请假表、调岗表等) + 业务表对应的servicename
String businesskey = processInstance.getBusinessKey(); String businesskey = processInstance.getBusinessKey();
@ -541,17 +535,15 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
//设置流程结束状态 //设置流程结束状态
iFormCustomService.endForm(busskey[1], SystemConstantsOa.OA_STATUS_TYPE_REFUSE, assignee, task.getProcessInstanceId(), task.getName()); iFormCustomService.endForm(busskey[1], SystemConstantsOa.OA_STATUS_TYPE_REFUSE, assignee, task.getProcessInstanceId(), task.getName());
} }
//1、获取终止节点
List<EndEvent> endNodes = findEndFlowElement(task.getProcessDefinitionId());
//2、执行终止 //2、执行终止
List<Execution> executions = runtimeService.createExecutionQuery().parentId(task.getProcessInstanceId()).list(); List<Execution> executions = runtimeService.createExecutionQuery().parentId(task.getProcessInstanceId()).list();
List<String> executionIds = new ArrayList<>(); List<String> executionIds = new ArrayList<>();
executions.forEach(execution -> executionIds.add(execution.getId())); executions.forEach(execution -> executionIds.add(execution.getId()));
OcrTaskchildPicture taskchildPicture = ocrTaskchildPictureService.getById(Long.parseLong(formId)); OcrTaskchildPicture taskchildPicture = ocrTaskchildPictureService.getById(Long.parseLong(formId));
taskchildPicture.setFinishtime(System.currentTimeMillis()); taskchildPicture.setFinishtime(System.currentTimeMillis());
taskchildPicture.setIsFinal(1);
ocrTaskchildPictureService.updateById(taskchildPicture); ocrTaskchildPictureService.updateById(taskchildPicture);
OcrPicture picture = ocrPictureService.getById(taskchildPicture.getPictureid());
ocrTaskchildPictureService.sendFlowTaskResult(taskchildPicture, picture, approve);
} }
//发送消息 //发送消息
@ -567,7 +559,6 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
jsonObject.put("taskId", model.getFromtaskid()); jsonObject.put("taskId", model.getFromtaskid());
jsonObject.put("nodeName", model.getTaskname()); jsonObject.put("nodeName", model.getTaskname());
jsonObject.put("states", 1); jsonObject.put("states", 1);
jsonObject.put("statesName", "待审批");
jsonObject.put("sendUserId", userToken.getUserid()); jsonObject.put("sendUserId", userToken.getUserid());
jsonObject.put("sendUserName", userToken.getUsername()); jsonObject.put("sendUserName", userToken.getUsername());
jsonObject.put("sendTime", System.currentTimeMillis()); jsonObject.put("sendTime", System.currentTimeMillis());
@ -587,8 +578,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* *
* @param processDefinition * @param processDefinition
*/ */
public void updateAssignee(String processInstanceId, String processDefinitionId, ProcessDefinition public void updateAssignee(String processInstanceId, String processDefinitionId, ProcessDefinition processDefinition) {
processDefinition) {
//如果是多个候选人或者是候选组,做任务拾取 //如果是多个候选人或者是候选组,做任务拾取
FlowTaskCompleteVO flowTaskCompleteVO = updateNowTaskAssignee(processInstanceId, processDefinitionId); FlowTaskCompleteVO flowTaskCompleteVO = updateNowTaskAssignee(processInstanceId, processDefinitionId);
@ -986,7 +976,6 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
ParamterPage paramterPage = new ParamterPage(); ParamterPage paramterPage = new ParamterPage();
paramterPage.setStart((pageUtils.getCurrPage() - 1) * pageUtils.getPageSize()); paramterPage.setStart((pageUtils.getCurrPage() - 1) * pageUtils.getPageSize());
paramterPage.setPagesize(pageUtils.getPageSize()); paramterPage.setPagesize(pageUtils.getPageSize());
Page<OcrTaskchildPicture> page = new Page<>();
if (StringUtils.isNotBlank(pageUtils.getSortname())) { if (StringUtils.isNotBlank(pageUtils.getSortname())) {
paramterPage.setSortname(pageUtils.getSortname()); paramterPage.setSortname(pageUtils.getSortname());
@ -1000,96 +989,97 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
paramterPage.setSortorder("DESC"); paramterPage.setSortorder("DESC");
} }
query.put("page", paramterPage);
Long count = ocrTaskchildPictureService.listFinalCount(query); Long count = ocrTaskchildPictureService.listFinalCount(query);
query.put("page", paramterPage);
List<OcrTaskchildPicture> list = ocrTaskchildPictureService.listFinal(query); List<OcrTaskchildPicture> list = ocrTaskchildPictureService.listFinal(query);
// for (OcrTaskchildPicture taskchildPicture : list) { for (OcrTaskchildPicture taskchildPicture : list) {
// //查询对应的流程分类 //查询对应的流程分类
// Category category = categoryService.selectDtoById(taskchildPicture.getCategoryid()); Category category = categoryService.selectDtoById(taskchildPicture.getCategoryid());
// taskchildPicture.setCategoryDto(category); taskchildPicture.setCategoryDto(category);
//
// if (StringUtils.isNotBlank(taskchildPicture.getProcessdefinitionid())) { if (StringUtils.isNotBlank(taskchildPicture.getProcessdefinitionid())) {
//
// List<Task> taskList = this.nowRunTask(taskchildPicture.getProcessinstanceid(), taskchildPicture.getProcessdefinitionid()); List<Task> taskList = this.nowRunTask(taskchildPicture.getProcessinstanceid(), taskchildPicture.getProcessdefinitionid());
// if (null != taskList && !taskList.isEmpty()) { if (null != taskList && !taskList.isEmpty()) {
// taskchildPicture.setTaskId(taskList.get(0).getId()); taskchildPicture.setTaskId(taskList.get(0).getId());
//
// Task tasknow = taskService.createTaskQuery().taskId(taskchildPicture.getTaskId()).singleResult(); Task tasknow = taskService.createTaskQuery().taskId(taskchildPicture.getTaskId()).singleResult();
// BpmnModel bpmnModel = repositoryService.getBpmnModel(tasknow.getProcessDefinitionId()); BpmnModel bpmnModel = repositoryService.getBpmnModel(tasknow.getProcessDefinitionId());
// // 获取节点定义id // 获取节点定义id
// String taskDefinitionKey = tasknow.getTaskDefinitionKey(); 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获取节点元素 // // 根据节点定义id获取节点元素
// FlowElement flowElement = bpmnModel.getFlowElement(taskDefinitionKey); FlowElement flowElement = bpmnModel.getFlowElement(taskHiInstance.getTaskDefinitionKey());
// if (flowElement instanceof UserTask) { if (flowElement instanceof UserTask) {
// UserTask userTask = (UserTask) flowElement; UserTask userTask = (UserTask) flowElement;
//
// taskchildPicture.setDocumentation(userTask.getDocumentation()); taskchildPicture.setDocumentation(userTask.getDocumentation());
// } }
// } // 还需要根据 HistoricTaskInstance 找到对应的 审批意见
// List<Comment> processInstanceComments = taskService.getProcessInstanceComments(taskchildPicture.getProcessinstanceid());
// //查询历史 for (Comment comment : processInstanceComments) {
// List<HistoricTaskInstanceDto> historicTaskInstanceDtos = new ArrayList<>();
// // 查询当前任务的流转信息 if (comment.getTaskId().equals(taskHiInstance.getId())) {
// List<HistoricTaskInstance> taskHiInstances = historyService.createHistoricTaskInstanceQuery() // 审批意见
// .processInstanceId(taskchildPicture.getProcessinstanceid()) String fullMessage = comment.getFullMessage();
// .includeProcessVariables() dto.setComment(fullMessage);
// .orderByHistoricTaskInstanceStartTime() }
// .asc() }
// .list(); historicTaskInstanceDtos.add(dto);
// for (HistoricTaskInstance taskHiInstance : taskHiInstances) { }
// HistoricTaskInstanceDto dto = new HistoricTaskInstanceDto(); taskchildPicture.setTransferRecords(historicTaskInstanceDtos);
// 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()); pageUtils.setTotalCount(count.intValue());
pageUtils.setList(list); pageUtils.setList(list);
@ -1302,8 +1292,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* @param tenantId * @param tenantId
* @param pageUtils * @param pageUtils
*/ */
public void getMyProcessInstances(User user, String tenantId, Map<String, Object> searchQuery, PageUtils public void getMyProcessInstances(User user, String tenantId, Map<String, Object> searchQuery, PageUtils pageUtils, String userSearchId) {
pageUtils, String userSearchId) {
ParamterPage paramterPage = new ParamterPage(); ParamterPage paramterPage = new ParamterPage();
paramterPage.setStart((pageUtils.getCurrPage() - 1) * pageUtils.getPageSize()); paramterPage.setStart((pageUtils.getCurrPage() - 1) * pageUtils.getPageSize());
paramterPage.setPagesize(pageUtils.getPageSize()); paramterPage.setPagesize(pageUtils.getPageSize());
@ -1328,14 +1317,14 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
query.put("searchassignee", user.getLoginname()); query.put("searchassignee", user.getLoginname());
query.putAll(searchQuery); query.putAll(searchQuery);
if (!StringUtils.isBlank(userSearchId)) { // if (!StringUtils.isBlank(userSearchId)) {
OcrUsersearch ocrUsersearch = ocrUsersearchService.selectByUserSearchId(userSearchId); // OcrUsersearch ocrUsersearch = ocrUsersearchService.selectByUserSearchId(userSearchId);
SearchQuery additionalQuery = new SearchQuery(); // SearchQuery additionalQuery = new SearchQuery();
for (OcrUsersearchchild usersearchchild : ocrUsersearch.getOcrUsersearchchildList()) { // for (OcrUsersearchchild usersearchchild : ocrUsersearch.getOcrUsersearchchildList()) {
this.formattingSearchChild1(additionalQuery, usersearchchild); // this.formattingSearchChild1(additionalQuery, usersearchchild);
} // }
query.putAll(additionalQuery.getQuery()); // query.putAll(additionalQuery.getQuery());
} // }
Long count = ocrTaskchildPictureService.listmytaskCount(query); Long count = ocrTaskchildPictureService.listmytaskCount(query);
@ -1352,91 +1341,91 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
taskchildPicture.setPicture(ocrPictureOne); taskchildPicture.setPicture(ocrPictureOne);
taskchildPicture.setFinishTime(ocrPictureOne.getSubmitDateTimestamp()); taskchildPicture.setFinishTime(ocrPictureOne.getSubmitDateTimestamp());
} }
//
// //查询对应的流程分类 //查询对应的流程分类
// Category category = categoryService.selectDtoById(Long.parseLong(taskchildPicture.getCategoryid())); Category category = categoryService.selectDtoById(Long.parseLong(taskchildPicture.getCategoryid()));
// taskchildPicture.setCategoryDto(category); taskchildPicture.setCategoryDto(category);
//
// if (StringUtils.isNotBlank(taskchildPicture.getProcessdefinitionid())) { if (StringUtils.isNotBlank(taskchildPicture.getProcessdefinitionid())) {
//
// List<Task> taskList = this.nowRunTask(taskchildPicture.getProcessinstanceid(), taskchildPicture.getProcessdefinitionid()); List<Task> taskList = this.nowRunTask(taskchildPicture.getProcessinstanceid(), taskchildPicture.getProcessdefinitionid());
// if (null != taskList && !taskList.isEmpty()) { if (null != taskList && !taskList.isEmpty()) {
// taskchildPicture.setTaskId(taskList.get(0).getId()); taskchildPicture.setTaskId(taskList.get(0).getId());
//
// Task tasknow = taskService.createTaskQuery().taskId(taskchildPicture.getTaskId()).singleResult(); Task tasknow = taskService.createTaskQuery().taskId(taskchildPicture.getTaskId()).singleResult();
// BpmnModel bpmnModel = repositoryService.getBpmnModel(tasknow.getProcessDefinitionId()); BpmnModel bpmnModel = repositoryService.getBpmnModel(tasknow.getProcessDefinitionId());
// // 获取节点定义id // 获取节点定义id
// String taskDefinitionKey = tasknow.getTaskDefinitionKey(); 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获取节点元素 // // 根据节点定义id获取节点元素
// FlowElement flowElement = bpmnModel.getFlowElement(taskDefinitionKey); FlowElement flowElement = bpmnModel.getFlowElement(taskHiInstance.getTaskDefinitionKey());
// if (flowElement instanceof UserTask) { if (flowElement instanceof UserTask) {
// UserTask userTask = (UserTask) flowElement; UserTask userTask = (UserTask) flowElement;
//
// taskchildPicture.setDocumentation(userTask.getDocumentation()); taskchildPicture.setDocumentation(userTask.getDocumentation());
// } }
// } // 还需要根据 HistoricTaskInstance 找到对应的 审批意见
// List<Comment> processInstanceComments = taskService.getProcessInstanceComments(taskchildPicture.getProcessinstanceid());
// //查询历史 for (Comment comment : processInstanceComments) {
// List<HistoricTaskInstanceDto> historicTaskInstanceDtos = new ArrayList<>();
// // 查询当前任务的流转信息 if (comment.getTaskId().equals(taskHiInstance.getId())) {
// List<HistoricTaskInstance> taskHiInstances = historyService.createHistoricTaskInstanceQuery() // 审批意见
// .processInstanceId(taskchildPicture.getProcessinstanceid()) String fullMessage = comment.getFullMessage();
// .includeProcessVariables() dto.setComment(fullMessage);
// .orderByHistoricTaskInstanceStartTime() }
// .asc() }
// .list(); historicTaskInstanceDtos.add(dto);
// for (HistoricTaskInstance taskHiInstance : taskHiInstances) { }
// HistoricTaskInstanceDto dto = new HistoricTaskInstanceDto(); taskchildPicture.setTransferRecords(historicTaskInstanceDtos);
// 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()); pageUtils.setTotalCount(count.intValue());
@ -1510,8 +1499,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* @param tenantId * @param tenantId
* @param pageUtils * @param pageUtils
*/ */
public List<OcrTaskchildPictureAppro> getMyProcessInstancesNew(User user, String public List<OcrTaskchildPictureAppro> getMyProcessInstancesNew(User user, String tenantId, Map<String, Object> searchQuery, PageUtils pageUtils) {
tenantId, Map<String, Object> searchQuery, PageUtils pageUtils) {
ParamterPage paramterPage = new ParamterPage(); ParamterPage paramterPage = new ParamterPage();
paramterPage.setStart((pageUtils.getCurrPage() - 1) * pageUtils.getPageSize()); paramterPage.setStart((pageUtils.getCurrPage() - 1) * pageUtils.getPageSize());
paramterPage.setPagesize(pageUtils.getPageSize()); paramterPage.setPagesize(pageUtils.getPageSize());
@ -1656,8 +1644,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* *
* @return * @return
*/ */
public IPage<FlowUnionVo> getMyListCc(Map<String, Object> query, UserToken userToken, ParamterPage public IPage<FlowUnionVo> getMyListCc(Map<String, Object> query, UserToken userToken, ParamterPage paramterPage) {
paramterPage) {
//查询抄送给当前用户的fromid集合 //查询抄送给当前用户的fromid集合
QueryWrapper queryWrapper = new QueryWrapper(); QueryWrapper queryWrapper = new QueryWrapper();
@ -1829,22 +1816,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
@Override @Override
public ResultVo repetitionTask() { public ResultVo repetitionTask() {
List<RepeatedContentVo> repeatedContentVoList = flowableccMybatisDao.repetitionTask(); return ResultVoUtil.success(flowableccMybatisDao.repetitionTask());
List<String> formIdsToUpdate = new ArrayList<>();
if (repeatedContentVoList.size() > 0 && repeatedContentVoList.get(0).getRepeatedTaskList().size() > 0) {
String formIds = repeatedContentVoList.get(0).getRepeatedTaskList().get(0).getFormId();
String[] formIdsArray = formIds.split(",");
for (String formId : formIdsArray) {
formIdsToUpdate.add(formId.trim()); // 去除字符串首尾的空格并添加到集合中
}
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);
} }
@Override @Override
@ -1861,8 +1833,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* @param usersearchchild * @param usersearchchild
* @return * @return
*/ */
private QueryWrapper<OcrTaskchildPicture> formattingSearchChild private QueryWrapper<OcrTaskchildPicture> formattingSearchChild(QueryWrapper<OcrTaskchildPicture> queryWrapper, OcrUsersearchchild usersearchchild) {
(QueryWrapper<OcrTaskchildPicture> queryWrapper, OcrUsersearchchild usersearchchild) {
switch (usersearchchild.getSearchRelationType()) { switch (usersearchchild.getSearchRelationType()) {
case "where": case "where":
this.formattingSearchType(queryWrapper, usersearchchild); this.formattingSearchType(queryWrapper, usersearchchild);
@ -1886,8 +1857,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* @param usersearchchild * @param usersearchchild
* @return * @return
*/ */
private QueryWrapper<OcrTaskchildPicture> formattingSearchType private QueryWrapper<OcrTaskchildPicture> formattingSearchType(QueryWrapper<OcrTaskchildPicture> queryWrapper, OcrUsersearchchild usersearchchild) {
(QueryWrapper<OcrTaskchildPicture> queryWrapper, OcrUsersearchchild usersearchchild) {
//查询类型 相等true 不相等fase //查询类型 相等true 不相等fase
boolean queryType = "eq".equals(usersearchchild.getSearchtype()); boolean queryType = "eq".equals(usersearchchild.getSearchtype());
@ -1983,134 +1953,132 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
return queryWrapper; return queryWrapper;
} }
private SearchQuery formattingSearchChild1(SearchQuery searchQuery, OcrUsersearchchild usersearchchild) { // private SearchQuery formattingSearchChild1(SearchQuery searchQuery, OcrUsersearchchild usersearchchild) {
switch (usersearchchild.getSearchRelationType()) { // switch (usersearchchild.getSearchRelationType()) {
case "where": // case "where":
// 添加 "where" 查询条件 // // 添加 "where" 查询条件
this.formattingSearchType1(searchQuery, usersearchchild); // this.formattingSearchType1(searchQuery, usersearchchild);
break; // break;
case "and": // case "and":
// 添加 "and" 查询条件 // // 添加 "and" 查询条件
searchQuery.addRulesOp(usersearchchild.getSearchfield(), "and"); // searchQuery.addRulesOp(usersearchchild.getSearchfield(),"and");
SearchQuery andQuery = this.formattingSearchType1(searchQuery, usersearchchild); // SearchQuery andQuery = this.formattingSearchType1(searchQuery, usersearchchild);
searchQuery.setSearchQuery(andQuery); // searchQuery.setSearchQuery(andQuery);
break; // break;
case "or": // case "or":
// 添加 "or" 查询条件 // // 添加 "or" 查询条件
searchQuery.addRulesOp(usersearchchild.getSearchfield(), "or"); // searchQuery.addRulesOp(usersearchchild.getSearchfield(),"or");
SearchQuery orQuery = this.formattingSearchType1(searchQuery, usersearchchild); // SearchQuery orQuery = this.formattingSearchType1(searchQuery, usersearchchild);
searchQuery.setSearchQuery(orQuery); // searchQuery.setSearchQuery(orQuery);
break; // break;
default: // default:
break; // break;
} // }
return searchQuery; // return searchQuery;
} // }
//
private SearchQuery formattingSearchType1(SearchQuery searchQuery, OcrUsersearchchild usersearchchild) { // private SearchQuery formattingSearchType1(SearchQuery searchQuery, OcrUsersearchchild usersearchchild) {
//查询类型 相等true 不相等fase // //查询类型 相等true 不相等fase
boolean queryType = "eq".equals(usersearchchild.getSearchtype()); // boolean queryType = "eq".equals(usersearchchild.getSearchtype());
//
// 1.获取检查数据,确定数据类型 // // 1.获取检查数据,确定数据类型
String valueType = SearchParaFormatting.clickSearchValue(usersearchchild.getSearchvalue()); // String valueType = SearchParaFormatting.clickSearchValue(usersearchchild.getSearchvalue());
List<String> arrayData = null; //集合型数据 // List<String> arrayData = null; //集合型数据
List<Integer> sectionInts = null; //纯数字区间型数据 // List<Integer> sectionInts = null; //纯数字区间型数据
String[] sections = null; //字符串区间型数据 // String[] sections = null; //字符串区间型数据
DateTime beginTime = null; //日期时间区间型数据 // DateTime beginTime = null; //日期时间区间型数据
DateTime endTime = null; //日期时间区间型数据 // DateTime endTime = null; //日期时间区间型数据
//
// 2.根据数据类型,解构数据 // // 2.根据数据类型,解构数据
switch (valueType) { // switch (valueType) {
case "array": // case "array":
//处理多文件 // //处理多文件
String[] datas = usersearchchild.getSearchvalue().split(","); // String[] datas = usersearchchild.getSearchvalue().split(",");
arrayData = Arrays.asList(datas); // arrayData = Arrays.asList(datas);
break; // break;
case "section": // case "section":
//格式化数据,仅在做区间的时候去除空格,其他地方不进行空格去除. // //格式化数据,仅在做区间的时候去除空格,其他地方不进行空格去除.
sections = usersearchchild.getSearchvalue().trim().replaceAll("\\s+", "").split("-"); // sections = usersearchchild.getSearchvalue().trim().replaceAll("\\s+", "").split("-");
//校验是否纯数字,纯数字的话要转成int,否则比对时会有问题 // //校验是否纯数字,纯数字的话要转成int,否则比对时会有问题
sectionInts = new ArrayList<>(); // sectionInts = new ArrayList<>();
for (String data : sections) { // for (String data : sections) {
if (data.matches("\\d+")) { // if (data.matches("\\d+")) {
sectionInts.add(Integer.parseInt(data)); // sectionInts.add(Integer.parseInt(data));
} // }
} // }
break; // break;
case "time": // case "time":
//格式化时间数据 // //格式化时间数据
String[] times = usersearchchild.getSearchvalue().trim().replaceAll("\\s+", "").split("-"); // String[] times = usersearchchild.getSearchvalue().trim().replaceAll("\\s+", "").split("-");
beginTime = DateUtil.parse(times[0] + " 00:00:00", "yyyy/MM/dd HH:mm:ss"); // beginTime = DateUtil.parse(times[0], "yyyy/MM/dd");
endTime = DateUtil.parse(times[1] + " 23:59:59", "yyyy/MM/dd HH:mm:ss"); // endTime = DateUtil.parse(times[1], "yyyy/MM/dd");
break; // break;
default: // default:
} // }
//
// 3.根据查询类型 组装查询条件 相等 // // 3.根据查询类型 组装查询条件 相等
switch (valueType) { // switch (valueType) {
case "array": // case "array":
//集合数据 // //集合数据
//相等 // //相等
if (queryType) { // if (queryType) {
searchQuery.addIn(usersearchchild.getSearchfield(), arrayData); // searchQuery.addIn(usersearchchild.getSearchfield(), arrayData);
break; // break;
} // }
//不相等 // //不相等
searchQuery.addNotIn(usersearchchild.getSearchfield(), arrayData); // searchQuery.addNotIn(usersearchchild.getSearchfield(), arrayData);
break; // break;
//
case "section": // case "section":
//数字区间查询 // //数字区间查询
if (sectionInts != null && sectionInts.size() == 2) { // if (sectionInts != null && sectionInts.size() == 2) {
if (queryType) { // if (queryType) {
//相等 // //相等
searchQuery.addGreaterEqual(usersearchchild.getSearchfield(), sectionInts.get(0)); // searchQuery.addGreaterEqual(usersearchchild.getSearchfield(), sectionInts.get(0));
searchQuery.addLessEqual(usersearchchild.getSearchfield(), sectionInts.get(1)); // searchQuery.addLessEqual(usersearchchild.getSearchfield(), sectionInts.get(1));
break; // break;
} // }
//不相等 // //不相等
// searchQuery.addLess(usersearchchild.getSearchfield(), sectionInts.get(0));
searchQuery.addLess(usersearchchild.getSearchfield(), sectionInts.get(0)); // searchQuery.addGreater(usersearchchild.getSearchfield(), sectionInts.get(1));
searchQuery.addGreater(usersearchchild.getSearchfield(), sectionInts.get(1)); // break;
break; // }
} //
// //字符串区间查询
//字符串区间查询 // if (queryType) {
if (queryType) { // //相等
//相等 // searchQuery.addGreaterEqual(usersearchchild.getSearchfield(), sections[0]);
searchQuery.addGreaterEqual(usersearchchild.getSearchfield(), sections[0]); // searchQuery.addLessEqual(usersearchchild.getSearchfield(), sections[1]);
searchQuery.addLessEqual(usersearchchild.getSearchfield(), sections[1]); // break;
break; // }
} // //不相等
//不相等 // searchQuery.addLess(usersearchchild.getSearchfield(), sections[0]);
searchQuery.addLess(usersearchchild.getSearchfield(), sections[0]); // searchQuery.addGreater(usersearchchild.getSearchfield(), sections[1]);
searchQuery.addGreater(usersearchchild.getSearchfield(), sections[1]); // break;
break; //
//
// case "time":
case "time": // //时间区间数据
//时间区间数据 // //相等
//相等 // if (queryType) {
if (queryType) { // searchQuery.addGreaterEqual(usersearchchild.getSearchfield(), beginTime);
searchQuery.addGreaterEqual(usersearchchild.getSearchfield() + "Start", beginTime.getTime()); // searchQuery.addLessEqual(usersearchchild.getSearchfield(), endTime);
searchQuery.addLessEqual(usersearchchild.getSearchfield() + "End", endTime.getTime()); // break;
break; // }
} // //不相等
//不相等 // searchQuery.addLess(usersearchchild.getSearchfield(), beginTime);
searchQuery.addRulesOp(usersearchchild.getSearchfield() + "Start", "or"); // searchQuery.addGreater(usersearchchild.getSearchfield(), endTime);
searchQuery.addLess(usersearchchild.getSearchfield() + "Start", beginTime.getTime()); // break;
searchQuery.addGreater(usersearchchild.getSearchfield() + "End", endTime.getTime()); //
break; // default:
// if (queryType) {
default: // searchQuery.addEqual(usersearchchild.getSearchfield(), usersearchchild.getSearchvalue());
if (queryType) { // break;
searchQuery.addEqual(usersearchchild.getSearchfield(), usersearchchild.getSearchvalue()); // }
break; // searchQuery.addNotEqual(usersearchchild.getSearchfield(), usersearchchild.getSearchvalue());
} // }
searchQuery.addNotEqual(usersearchchild.getSearchfield(), usersearchchild.getSearchvalue()); // return searchQuery;
} // }
return searchQuery;
}
} }

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

@ -19,18 +19,4 @@ public interface PrevailCloudApi {
* @return * @return
*/ */
ApiPage<PictureSourceResult> pullPictureSource(PictureSourceParameter pictureSourceParameter) throws Exception; 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.core.bean.BeanUtil;
import cn.hutool.json.JSONUtil; 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.PrevailCloudApi;
import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceParameter; import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceParameter;
import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult; import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult;
import cn.jyjz.xiaoyao.ocr.api.utils.*; 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.TaskQueue;
import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity;
import cn.jyjz.xiaoyao.ocr.util.httputil.HttpClient; import cn.jyjz.xiaoyao.ocr.util.httputil.HttpClient;
import cn.jyjz.xiaoyao.ocr.util.httputil.HttpMethod; import cn.jyjz.xiaoyao.ocr.util.httputil.HttpMethod;
import cn.jyjz.xiaoyao.ocr.util.httputil.HttpParamers; import cn.jyjz.xiaoyao.ocr.util.httputil.HttpParamers;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import liquibase.pro.packaged.S; import liquibase.pro.packaged.S;
import lombok.SneakyThrows;
import org.apache.commons.collections.SequencedHashMap; import org.apache.commons.collections.SequencedHashMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; 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 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; 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; private String interfaceDomain;
/** /**
* *
*/ */
@Value("${ocr.api.wly.accessKey}")
private String accessKey; private String accessKey;
/** /**
* *
*/ */
@Value("${ocr.api.wly.accessCode}")
private String accessCode; private String accessCode;
/** /**
* 5 * 5
*/ */
@Value("${ocr.api.wly.connectTimeout}")
private Integer connectTimeout = 5000; private Integer connectTimeout = 5000;
/** /**
* 1 * 1
*/ */
@Value("${ocr.api.wly.readTimeout}")
private Integer readTimeout = 60000; private Integer readTimeout = 60000;
private String localImagePath;
/** /**
* *
* @return * @return

@ -1,26 +1,18 @@
package cn.jyjz.xiaoyao.ocr.controller; package cn.jyjz.xiaoyao.ocr.controller;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.jyjz.xiaoyao.ocr.api.PrevailCloudApi; import cn.jyjz.xiaoyao.ocr.api.PrevailCloudApi;
import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceParameter; import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceParameter;
import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult; 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.api.utils.ApiPage;
import cn.jyjz.xiaoyao.ocr.thread.ImageDownloadMonitoring;
import cn.jyjz.xiaoyao.ocr.thread.TaskQueue; import cn.jyjz.xiaoyao.ocr.thread.TaskQueue;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.time.Instant; import java.time.Instant;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -31,14 +23,9 @@ import java.util.List;
* @version 1.0 * @version 1.0
* @date 2024/3/14 19:47 * @date 2024/3/14 19:47
*/ */
@Slf4j
@RestController @RestController
@RequestMapping("/test/api") @RequestMapping("/test/api")
public class ApiTestController { public class ApiTestController {
@Resource
private ApiConfig apiConfig;
@Autowired @Autowired
private PrevailCloudApi prevailCloudApi; private PrevailCloudApi prevailCloudApi;
@ -84,128 +71,4 @@ public class ApiTestController {
return "处理失败"; 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));
pictureSourceParameter.setTenantNo(1714548920583360512L);
pictureSourceParameter.setAccountNo(1714887674875514880L);
List<String> notAddedToQueueTaskIds = new ArrayList<>();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
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();
pictureSourceParameter.setStartTime(Date.from(startInstant));
pictureSourceParameter.setEndTime(Date.from(endInstant));
pictureSourceParameter.setPageNo(currentPage);
ApiPage<PictureSourceResult> apiPage = prevailCloudApi.pullPictureSource(pictureSourceParameter);
List<PictureSourceResult> listResult = apiPage.getRecords();
int count = apiPage.getTotal();
int localCount = listResult.size();
int size = 0;
for (PictureSourceResult pictureSourceResult : listResult) {
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) {
totalCount += count;
isCountAdded = true; // 标记当天的统计信息已经被累加过了
}
// 输出当前日期范围内的统计信息
log.error("{}图片总数:{}条,本次获取:{}条,可处理数据:{}条",startDate.toString("yyyy-MM-dd"),count,localCount,size);
// 准备处理下一页的数据
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;
}
} }

@ -66,28 +66,6 @@ public class OcrAiApprovalTools {
return toolscount; 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.getUserid(),request);
return toolscount;
}
/* /*
ai ai
*/ */

@ -81,11 +81,7 @@ public class OcrCheckDuplicateController {
} }
//调用查询参数解析方法解析为queryWrapper //调用查询参数解析方法解析为queryWrapper
queryWrapper = SearchParaFormatting.searchParaParse(queryWrapper, paraMap); 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("tenant_id", tenantId);
queryWrapper.eq("suspiciousfile", "0"); queryWrapper.eq("suspiciousfile", "0");
queryWrapper.orderBy(true,true,"submit_date_timestamp"); queryWrapper.orderBy(true,true,"submit_date_timestamp");
@ -118,9 +114,6 @@ public class OcrCheckDuplicateController {
OcrCheckDuplicate dto = this.ocrCheckDuplicateService.getCheckDuplicateStatus(checkDuplicateNo); OcrCheckDuplicate dto = this.ocrCheckDuplicateService.getCheckDuplicateStatus(checkDuplicateNo);
if (null != dto) { if (null != dto) {
if(dto.getStatus()==2){
return ResultVoUtil.success("查重任务执行完毕",dto);
}
return ResultVoUtil.success(dto); return ResultVoUtil.success(dto);
} else { } else {
return ResultVoUtil.error(); return ResultVoUtil.error();

@ -1,43 +1,20 @@
package cn.jyjz.xiaoyao.ocr.controller; 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.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.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil; 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.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.dto.OcrFieldDto;
import cn.jyjz.xiaoyao.ocr.service.OcrFieldService; import cn.jyjz.xiaoyao.ocr.service.OcrFieldService;
import cn.jyjz.xiaoyao.ocr.vo.OcrFieldVo; 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.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import liquibase.pro.packaged.S;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; 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.List;
import java.util.stream.Collectors;
@RestController @RestController
@RequestMapping("/ocr/field") @RequestMapping("/ocr/field")
@ -48,10 +25,6 @@ public class OcrFieldController extends BaseController {
@Autowired @Autowired
private OcrFieldService ocrFieldService; private OcrFieldService ocrFieldService;
@Autowired
private UserService userService;
/** /**
* *
* @return * @return
@ -66,32 +39,6 @@ public class OcrFieldController extends BaseController {
return resultVo; return resultVo;
} }
/**
*
* @return
*/
@ApiOperation(value="根据评审类型查询字段列表", notes="根据评审类型查询字段列表")
@GetMapping(value = "/page")
public ResultVo<IPage<OcrField>> page(@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;
}
/** /**
* *
* @return * @return
@ -112,21 +59,13 @@ public class OcrFieldController extends BaseController {
*/ */
@ApiOperation(value="删除筛选字段", notes="删除筛选字段") @ApiOperation(value="删除筛选字段", notes="删除筛选字段")
@GetMapping(value = "/delete") @GetMapping(value = "/delete")
public ResultVo delete(@RequestParam(name="id") @ApiParam(value = "字段ID", required = true) String ids) { public ResultVo delete(@RequestParam(name="id") @ApiParam(value = "字段ID", required = true) Long id) {
List<OcrField> ocrFields = ocrFieldService.listByIds(Arrays.asList(ids.split(",")));
List<OcrField> newOcrField = ocrFields.stream().peek(s -> { OcrFieldDto ocrFieldDto = ocrFieldService.delete(id);
s.setUpdateTime(DateUtil.date().toSqlDate()); if(ocrFieldDto != null){
s.setDel(1);
}).collect(Collectors.toList());
ocrFieldService.updateBatchById(newOcrField);
return ResultVoUtil.success(); return ResultVoUtil.success();
} }
return ResultVoUtil.error("删除失败");
@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));
} }
/** /**
@ -135,9 +74,14 @@ public class OcrFieldController extends BaseController {
*/ */
@ApiOperation(value="字段新增和修改", notes="字段新增和修改") @ApiOperation(value="字段新增和修改", notes="字段新增和修改")
@PostMapping(value = "/saveOrUpdate") @PostMapping(value = "/saveOrUpdate")
public ResultVo saveOrUpdate(@ApiParam(value = "字段信息", required = true) OcrFieldVo ocrFieldVo) { public ResultVo saveOrUpdate(@ApiParam(value = "字段信息", required = true) @RequestBody OcrFieldVo ocrFieldVo) {
try { 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) { } catch (BeansException e) {
e.printStackTrace(); 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.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; 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.SearchConfigEnum;
import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting; import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
@ -267,6 +265,7 @@ public class OcrPictureController extends BaseController {
} }
QueryWrapper<OcrPicture> queryWrapper = new QueryWrapper<>(); QueryWrapper<OcrPicture> queryWrapper = new QueryWrapper<>();
String search_month = req.getParameter("search_month"); String search_month = req.getParameter("search_month");
@ -296,8 +295,8 @@ public class OcrPictureController extends BaseController {
//提报人模糊搜索 //提报人模糊搜索
String upUserName = req.getParameter("upUserName"); String upUserName = req.getParameter("upUserName");
if (StringUtils.isNotBlank(upUserName)) { if(StringUtils.isNotBlank(upUserName)){
queryWrapper.like("upName", upUserName); queryWrapper.like("upName",upUserName);
} }
//根据参数枚举获取检索参数并映射为数据库的字段的key-v map //根据参数枚举获取检索参数并映射为数据库的字段的key-v map
@ -314,34 +313,6 @@ public class OcrPictureController extends BaseController {
queryWrapper.eq("tenant_id", tenantId); queryWrapper.eq("tenant_id", tenantId);
Page<OcrPicture> page = new Page<OcrPicture>(pageNo, pageSize); Page<OcrPicture> page = new Page<OcrPicture>(pageNo, pageSize);
IPage<OcrPicture> pageList = ocrPictureService.page(page, queryWrapper); 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::getId, ocrPictureOne.getTaskchildpictureid());
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;
}
}
ocrPicturesNew.add(ocrPictureOne);
}
pageList.setRecords(ocrPicturesNew);
return ResultVoUtil.success(pageList); return ResultVoUtil.success(pageList);
} }
@ -432,7 +403,7 @@ public class OcrPictureController extends BaseController {
@RequestParam(name = "pictureId", required = false) String pictureId, @RequestParam(name = "pictureId", required = false) String pictureId,
HttpServletRequest req) { HttpServletRequest req) {
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(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); 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); Map<Object, List<Map<String,String>>> selectsearch = ocrSearchHistoryService.selectsearch(search, userToken.getLoginname(),userToken.getUserid(),tenantId);
if(StringUtils.isNotBlank(search)){
OcrSearchHistory ocrsearchhistory =new OcrSearchHistory(); OcrSearchHistory ocrsearchhistory =new OcrSearchHistory();
ocrsearchhistory.setHistoryname(search); ocrsearchhistory.setHistoryname(search);
ocrsearchhistory.setTenantId(Long.valueOf(tenantId)); ocrsearchhistory.setTenantId(Long.valueOf(tenantId));
ocrsearchhistory.setUserid(Long.valueOf(userToken.getUserid())); ocrsearchhistory.setUserid(Long.valueOf(userToken.getUserid()));
ocrsearchhistory.setCreatedate(System.currentTimeMillis()); ocrsearchhistory.setCreatedate(System.currentTimeMillis());
ocrSearchHistoryService.save(ocrsearchhistory); ocrSearchHistoryService.save(ocrsearchhistory);
}
// return new ResponseEntity<Object>(selectsearch, HttpStatus.OK); // return new ResponseEntity<Object>(selectsearch, HttpStatus.OK);
return ResultVoUtil.success(selectsearch); return ResultVoUtil.success(selectsearch);

@ -67,8 +67,7 @@ public class OcrTaskchildDubiousFileController {
public ResultVo<Page<OcrTaskChildPictureVo>> dubiousfilelist(HttpServletRequest request, public ResultVo<Page<OcrTaskChildPictureVo>> dubiousfilelist(HttpServletRequest request,
@RequestParam(value = "pageNo", required = false, defaultValue = "0") Integer pageNo, @RequestParam(value = "pageNo", required = false, defaultValue = "0") Integer pageNo,
@RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize, @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize,
@RequestParam(value = "orderByUptime",required = false) String orderByUptime, @RequestParam(value = "orderbyname", required = true, defaultValue = "asc") String orderbyname) {
@RequestParam(value = "orderBySimilarity",required = false) String orderBySimilarity) {
String tenantId = request.getHeader("X-Tenant-Id"); String tenantId = request.getHeader("X-Tenant-Id");
@ -98,7 +97,7 @@ public class OcrTaskchildDubiousFileController {
// //
// //IPage<OcrPicture> page = ocrpictureservice.page(iPage, wrapper); // //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); return ResultVoUtil.success(page);
} }

@ -401,8 +401,10 @@ public class OcrTaskchildPictureController extends BaseController {
@RequestParam(name = "orderType") String orderType, @RequestParam(name = "orderType") String orderType,
@RequestParam(name = "orderName") String orderName, @RequestParam(name = "orderName") String orderName,
@RequestParam(name = "checkDuplicateId") String checkDuplicateId, @RequestParam(name = "checkDuplicateId") String checkDuplicateId,
@RequestParam(name = "pictureId") String pictureId) { @RequestParam(name = "pictureId") String pictureId,
Page<OcrTaskChildPictureVo> result = ocrTaskchildPictureService.getPackageSimilarityList(pageNo, pageSize, orderType, orderName, checkDuplicateId, 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); return ResultVoUtil.success(result);
} }

@ -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 @Mapper
public interface OcrPictureMybatisDao extends BaseMapper<OcrPicture> { 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> {
}

@ -25,9 +25,6 @@ public interface OcrTaskchildPictureMybatisDao extends BaseMapper<OcrTaskchildPi
*/ */
public List<OcrTaskchildPicture> listFinal(Map<String, Object> query); public List<OcrTaskchildPicture> listFinal(Map<String, Object> query);
List<OcrTaskchildPicture> listFinalTask(Map<String, Object> query);
/** /**
* *
* @param query * @param query
@ -51,13 +48,10 @@ public interface OcrTaskchildPictureMybatisDao extends BaseMapper<OcrTaskchildPi
String selectocpicture(@Param("tenantid")String tenantid,@Param("packageid")String packageid,@Param("id")String id); 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); List<OcrTaskChildPictureVo> getPictureHistoryList(@Param("pictureIds") List<String> pictureIds, @Param("taskname") String taskname);
List<OcrTaskChildPictureVo> getDubiousfileList(@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); 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); 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);
List<OcrTaskChildPictureVo> getSimilarityList(@Param("pictureIds") List<String> pictureIds);
} }

@ -41,8 +41,7 @@ public class OcrCheckDuplicateResult implements Serializable {
@ApiModelProperty(value = "图片id") @ApiModelProperty(value = "图片id")
private Long pictureId; private Long pictureId;
@ApiModelProperty(value = "当前图片与任务包其他图片比对结果 (废弃,入库导致数据量过大)") @ApiModelProperty(value = "当前图片与任务包其他图片比对结果")
@TableField(exist = false)
private String compareResultJson; private String compareResultJson;
@ApiModelProperty(value = "查重任务id") @ApiModelProperty(value = "查重任务id")
@ -54,8 +53,4 @@ public class OcrCheckDuplicateResult implements Serializable {
@ApiModelProperty(value = "阈值分组排序值,数值越低排序越靠前,") @ApiModelProperty(value = "阈值分组排序值,数值越低排序越靠前,")
private Integer similarityGroupOrder; 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.admin.dataobject.Tenant;
import cn.jyjz.xiaoyao.common.base.jsonDomain.DateSerializer; 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.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
@ -20,10 +17,6 @@ import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.sql.Date; import java.sql.Date;
import java.util.AbstractMap;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Data @Data
@Builder @Builder
@ -31,7 +24,7 @@ import java.util.stream.Stream;
@AllArgsConstructor @AllArgsConstructor
@Schema(name = "字段信息", title = "字段信息") @Schema(name = "字段信息", title = "字段信息")
@TableName(value = "ocr_field") @TableName(value = "ocr_field")
public class OcrField implements BaseDto,java.io.Serializable { public class OcrField implements Serializable {
private static final long serialVersionUID = 8088861709460050761L; private static final long serialVersionUID = 8088861709460050761L;
@Schema(description = "主键") @Schema(description = "主键")
@TableId(value = "id",type = IdType.AUTO) @TableId(value = "id",type = IdType.AUTO)
@ -87,30 +80,4 @@ public class OcrField implements BaseDto,java.io.Serializable {
@Schema(description = "是否可点击,0:否,1是") @Schema(description = "是否可点击,0:否,1是")
@TableField(value="is_tap") @TableField(value="is_tap")
private Integer isTap; private Integer isTap;
@Schema(description = "是否可隐藏,0:否,1是")
@TableField(value="is_hide")
private Integer isHide;
//保存当前登录用户的数据权限范围的搜索条件
@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") @TableField(value = "similarity_score")
private Integer similarityscore; private Integer similarityscore;
@ApiModelProperty(value = "下载到本地,失败次数")
@TableField(value = "download_error_count")
private Integer downloadErrorCount;
@ApiModelProperty(value = "图片查重的比对图片集合") @ApiModelProperty(value = "图片查重的比对图片集合")
@TableField(exist = false) @TableField(exist = false)
private List<OcrPicture> listCom; private List<OcrPicture> listCom;
@ -346,10 +342,6 @@ public class OcrPicture implements BaseDto, java.io.Serializable {
@TableField(value = "submit_date_timestamp") @TableField(value = "submit_date_timestamp")
private Long submitDateTimestamp; private Long submitDateTimestamp;
@ApiModelProperty(value = "是否重复0.不重复 1.重复 (历史比对中阈值存在100的会显示此值)")
@TableField(value = "is_repeat")
private Integer isRepeat;
@ApiModelProperty(value = "任务状态") @ApiModelProperty(value = "任务状态")
@TableField(exist = false) @TableField(exist = false)
private Integer states; private Integer states;
@ -365,7 +357,6 @@ public class OcrPicture implements BaseDto, java.io.Serializable {
@ApiModelProperty(value = "拍照时间") @ApiModelProperty(value = "拍照时间")
@TableField(value = "photo_date_timestamp") @TableField(value = "photo_date_timestamp")
@JsonSerialize(using = DateSerializer.class)
private Long photoDateTimestamp; private Long photoDateTimestamp;
@ApiModelProperty(value = "节点状态") @ApiModelProperty(value = "节点状态")
@ -376,9 +367,6 @@ public class OcrPicture implements BaseDto, java.io.Serializable {
@TableField(exist = false) @TableField(exist = false)
private String taskId; private String taskId;
//保存当前登录用户的数据权限范围的搜索条件 //保存当前登录用户的数据权限范围的搜索条件
@TableField(exist = false) @TableField(exist = false)
@JsonIgnore @JsonIgnore

@ -1,7 +1,6 @@
package cn.jyjz.xiaoyao.ocr.dataobject; package cn.jyjz.xiaoyao.ocr.dataobject;
import cn.jyjz.xiaoyao.common.base.jsonDomain.DateNotimeSerializer; 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.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
@ -65,8 +64,7 @@ public class OcrPictureInfo {
* *
*/ */
@TableField(value = "create_time") @TableField(value = "create_time")
// @JsonSerialize(using = DateNotimeSerializer.class) @JsonSerialize(using = DateNotimeSerializer.class)
@JsonSerialize(using = DateSerializer.class)
private Long createTime; 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") @TableField(value = "TASKNAME")
private String taskname; private String taskname;
@Schema(description = "当前节点名称")
@TableField(value = "TASKNODE")
private String taskNode;
@Schema(description = "当前节点id") @Schema(description = "当前节点id")
@TableField(value = "TASKID") @TableField(value = "TASKID")
private String taskId; private String taskId;
@ -207,14 +203,6 @@ public class OcrTaskchildPicture implements BaseDto, java.io.Serializable {
@TableField(value = "FINISHTIME") @TableField(value = "FINISHTIME")
private Long 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 = "项目对象") @ApiModelProperty(value = "项目对象")
@TableField(exist = false) @TableField(exist = false)
private Category categoryDto; private Category categoryDto;

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

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

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

@ -22,8 +22,6 @@ public interface IOcrSearchHistoryService extends IService<OcrSearchHistory> {
ResultVo toolscount(String tenantid, String userId, HttpServletRequest request); ResultVo toolscount(String tenantid, String userId, HttpServletRequest request);
ResultVo toolsTaskApprovalCount(String tenantid, String userId, HttpServletRequest request);
Map<Object,Object> selectaisp(String userid,String id,Integer nodeType); 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> { 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,13 +1,9 @@
package cn.jyjz.xiaoyao.ocr.service; 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.common.mybatisplus.base.BaseService;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrField; import cn.jyjz.xiaoyao.ocr.dataobject.OcrField;
import cn.jyjz.xiaoyao.ocr.dto.OcrFieldDto; import cn.jyjz.xiaoyao.ocr.dto.OcrFieldDto;
import cn.jyjz.xiaoyao.ocr.vo.OcrFieldVo; 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; import java.util.List;
@ -19,8 +15,6 @@ public interface OcrFieldService extends BaseService<OcrField> {
/** /**
* *
*/ */
IPage<OcrField> pageList(ParamterPage paramterPage, QueryWrapper<OcrField> queryWrapper);
List<OcrFieldDto> list(Integer reviewType); List<OcrFieldDto> list(Integer reviewType);
/** /**
@ -35,5 +29,5 @@ public interface OcrFieldService extends BaseService<OcrField> {
/** /**
* *
*/ */
ResultVo saveData(OcrField ocrField); void saveData(OcrField ocrField);
} }

@ -1,9 +0,0 @@
package cn.jyjz.xiaoyao.ocr.service;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrFrontConf;
public interface OcrFrontConfService extends BaseService<OcrFrontConf> {
void updateConfig();
}

@ -61,8 +61,6 @@ public interface OcrPictureService extends BaseService<OcrPicture> {
*/ */
int savePictures(List<OcrPicture> ocrPictureList); int savePictures(List<OcrPicture> ocrPictureList);
void savePicturesInfo(OcrPicture ocrPicture);
ResultVo createPackageTask(List<OcrPicture> pageList, String tenantId, UserToken userToken, String searchMonth, HttpServletRequest req, String buessinessno, Map<String, Object> paramMap); ResultVo createPackageTask(List<OcrPicture> pageList, String tenantId, UserToken userToken, String searchMonth, HttpServletRequest req, String buessinessno, Map<String, Object> paramMap);
Map<String,String> getOcrPictureClassifyAndHash(String img); Map<String,String> getOcrPictureClassifyAndHash(String img);
@ -71,6 +69,14 @@ public interface OcrPictureService extends BaseService<OcrPicture> {
OcrPicture getPackagePictureInfo(String packageId, String pictureId, UserToken userToken); OcrPicture getPackagePictureInfo(String packageId, String pictureId, UserToken userToken);
/**
* id
* @param pictureIds
* @param nodeType
* @return
*/
List<OcrPicture> getPictureNodeStatesList(List<String> pictureIds,Integer nodeType);
// Long getPhotoDateTime(OcrPicture picture); // Long getPhotoDateTime(OcrPicture picture);
} }

@ -1,22 +0,0 @@
package cn.jyjz.xiaoyao.ocr.service;
import java.util.List;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPictureclass;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
*
*/
public interface OcrPictureclassService extends BaseService<OcrPictureclass> {
/**
*
*
* @param queryWrapper
* @return List<OcrPictureclass>
*/
List<OcrPictureclass> queryListNoPage(QueryWrapper<OcrPictureclass> queryWrapper);
}

@ -1,5 +1,6 @@
package cn.jyjz.xiaoyao.ocr.service; package cn.jyjz.xiaoyao.ocr.service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -16,7 +17,6 @@ import cn.jyjz.xiaoyao.ocr.vo.PictureDetailVo;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
/** /**
* *
@ -113,8 +113,6 @@ public interface OcrTaskchildPictureService extends BaseService<OcrTaskchildPict
/** /**
* *
*
* @param page
* @param query * @param query
* @return * @return
*/ */
@ -149,9 +147,9 @@ public interface OcrTaskchildPictureService extends BaseService<OcrTaskchildPict
Page<OcrTaskChildPictureVo> getSimilarityList(Integer pageNo, Integer pageSize, String pictureId, String orderType, String orderValue, UserToken userToken); Page<OcrTaskChildPictureVo> getSimilarityList(Integer pageNo, Integer pageSize, String pictureId, String orderType, String orderValue, UserToken userToken);
Page<OcrTaskChildPictureVo> getPackageSimilarityList(Integer pageNo, Integer pageSize, String oderType, String oderName, String checkDuplicateId, String pictureId); Page<OcrTaskChildPictureVo> getPackageSimilarityList(Integer pageNo, Integer pageSize, String oderType, String oderName, String checkDuplicateId, String pictureId, UserToken userToken);
void sendFlowTaskResult(OcrTaskchildPicture taskchildPicture, OcrPicture picture, FlowApprove flowApprove) throws Exception; void sendFlowTaskResult(OcrTaskchildPicture taskchildPicture, OcrPicture picture, FlowApprove flowApprove);
List<OcrTaskChildPictureVo> getDubiousfileList(List<String> pictureIds, String userNodeType); List<OcrTaskChildPictureVo> getDubiousfileList(List<String> pictureIds, String userNodeType);
} }

@ -106,7 +106,6 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
//异步调用查重任务 //异步调用查重任务
checkDuplicateService.comparePictureResultSave(ocrPictureList, sysUser, id); checkDuplicateService.comparePictureResultSave(ocrPictureList, sysUser, id);
checkDuplicate.setStatus(2); checkDuplicate.setStatus(2);
checkDuplicate.setCompletionTime(System.currentTimeMillis());
} catch (Exception e) { } catch (Exception e) {
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw); PrintWriter pw = new PrintWriter(sw);
@ -116,7 +115,6 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
logger.error("异步执行图片比对异常:", e); logger.error("异步执行图片比对异常:", e);
logger.error("异步执行图片比对异常:", e.getMessage()); logger.error("异步执行图片比对异常:", e.getMessage());
checkDuplicate.setStatus(3); checkDuplicate.setStatus(3);
checkDuplicate.setCompletionTime(System.currentTimeMillis());
} finally { } finally {
checkDuplicateService.updateById(checkDuplicate); checkDuplicateService.updateById(checkDuplicate);
} }
@ -178,8 +176,8 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
* 6.ocr_picturesimilarity_score * 6.ocr_picturesimilarity_score
*/ */
@Override @Override
// @Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void comparePictureResultSave(List<OcrPicture> ocrPictureList, UserToken sysUser, Long checkDuplicateId){ public void comparePictureResultSave(List<OcrPicture> ocrPictureList, UserToken sysUser, Long checkDuplicateId) throws Exception {
List<OcrCheckDuplicateResult> saveList = new ArrayList<>(); List<OcrCheckDuplicateResult> saveList = new ArrayList<>();
//需要创建任务的图片集合 //需要创建任务的图片集合
@ -198,11 +196,11 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
if (org.apache.commons.lang3.StringUtils.isBlank(ocrPicture.getImgHash())) { if (org.apache.commons.lang3.StringUtils.isBlank(ocrPicture.getImgHash())) {
String url = ocrPicture.getLocalpictrueurl(); String url = ocrPicture.getLocalpictrueurl();
if(StringUtils.isBlank(url)){ if(StringUtils.isBlank(url)){
// if(StringUtils.isBlank(ocrPicture.getImgurl())){ if(StringUtils.isBlank(ocrPicture.getImgurl())){
// }
// url = ocrPicture.getImgurl();
continue; continue;
} }
url = ocrPicture.getImgurl();
}
Map<String, String> map = this.getOcrPictureClassifyAndHash(url); Map<String, String> map = this.getOcrPictureClassifyAndHash(url);
if (map != null) { if (map != null) {
@ -228,12 +226,11 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
logger.info("图片没有hash值进入分类并获取hash接口:{}",JSONObject.toJSON(ocrPictureNext)); logger.info("图片没有hash值进入分类并获取hash接口:{}",JSONObject.toJSON(ocrPictureNext));
String url = ocrPictureNext.getLocalpictrueurl(); String url = ocrPictureNext.getLocalpictrueurl();
if(StringUtils.isBlank(url)){ if(StringUtils.isBlank(url)){
// if(StringUtils.isBlank(ocrPictureNext.getImgurl())){ if(StringUtils.isBlank(ocrPictureNext.getImgurl())){
// continue;
// }
// url = ocrPictureNext.getImgurl();
continue; continue;
} }
url = ocrPictureNext.getImgurl();
}
Map<String, String> map = this.getOcrPictureClassifyAndHash(url); Map<String, String> map = this.getOcrPictureClassifyAndHash(url);
if (map != null) { if (map != null) {
ocrPictureNext.setImgHash(map.get("hash")); ocrPictureNext.setImgHash(map.get("hash"));
@ -286,68 +283,37 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
OcrCheckDuplicateResult ocrCheckDuplicateResult = new OcrCheckDuplicateResult(); OcrCheckDuplicateResult ocrCheckDuplicateResult = new OcrCheckDuplicateResult();
ocrCheckDuplicateResult.setPictureId(ocrPicture.getId()); ocrCheckDuplicateResult.setPictureId(ocrPicture.getId());
ocrCheckDuplicateResult.setMaxSimilarity(maxSimilarity.doubleValue()); ocrCheckDuplicateResult.setMaxSimilarity(maxSimilarity.doubleValue());
BigDecimal b3 = new BigDecimal("100");
if (maxSimilarity.compareTo(b3)==0) {
ocrCheckDuplicateResult.setIsRepeat(1);
}else {
ocrCheckDuplicateResult.setIsRepeat(0);
}
ocrCheckDuplicateResult.setCompareResultJson(JSONObject.toJSONString(resultMap)); ocrCheckDuplicateResult.setCompareResultJson(JSONObject.toJSONString(resultMap));
ocrCheckDuplicateResult.setCheckDuplicateId(checkDuplicateId); ocrCheckDuplicateResult.setCheckDuplicateId(checkDuplicateId);
if(similarityGroupOrderMap.get(ocrPicture.getId().toString())!=null){ if(similarityGroupOrderMap.get(ocrPicture.getId().toString())!=null){
ocrCheckDuplicateResult.setSimilarityGroupOrder(similarityGroupOrderMap.get(ocrPicture.getId().toString())); ocrCheckDuplicateResult.setSimilarityGroupOrder(similarityGroupOrderMap.get(ocrPicture.getId().toString()));
} }
//1.3开启入库操作,不能进行批量入库,会导致内存被拉崩
saveList.add(ocrCheckDuplicateResult); saveList.add(ocrCheckDuplicateResult);
List<OcrPicture> pictures = new ArrayList<>();
pictures.add(ocrPicture);
try {
this.saveCheckDuplicateData(checkDuplicateId,saveList,pictures,ocrPictureList.get(0).getTenantId().toString(),sysUser);
} catch (Exception e) {
logger.error("比对结果入库异常! error:{}",e.getMessage());
} }
saveList = new ArrayList<>();
}
}
} }
logger.info("查重任务:{},开启创建任务",checkDuplicateId);
/** if (CollectionUtils.isNotEmpty(ocrPictureList)) {
* ocrTaskchildPictureService.createTask(ocrPictureList, ocrPictureList.get(0).getTenantId().toString(), sysUser);
* @return }
*/ logger.info("查重任务:{},结束创建任务",checkDuplicateId);
@Transactional(rollbackFor = Exception.class) //批量入库
public boolean saveCheckDuplicateData(Long checkDuplicateId,List<OcrCheckDuplicateResult> saveList,List<OcrPicture> ocrPictureList, String tenantId,UserToken sysUser) throws Exception { logger.info("查重任务:{},开启批量入库任务",checkDuplicateId);
//1.批量入库
logger.debug("查重任务:{},开启批量入库任务",checkDuplicateId);
boolean b = checkDuplicateResultService.saveOrUpdateBatch(saveList); boolean b = checkDuplicateResultService.saveOrUpdateBatch(saveList);
if (!b) { if (!b) {
logger.error("入库比对结果失败,{}",checkDuplicateId);
throw new Exception("批量入库比对结果失败!"); throw new Exception("批量入库比对结果失败!");
} }
//2.开始更新图片最高阈值 logger.info("查重任务:{},结束批量入库任务",checkDuplicateId);
logger.debug("查重任务:{},更新最高阈值",checkDuplicateId); //开始更新图片最高阈值
b = this.updatePictureSimilarityScore(saveList); logger.info("查重任务:{},更新最高阈值",checkDuplicateId);
if (!b) { this.updatePictureSimilarityScore(saveList);
logger.error("更新最高阈值,{}",checkDuplicateId); logger.info("查重任务:{},结束更新最高阈值",checkDuplicateId);
throw new Exception("更新最高阈值失败!"); //开始更新 图片历史比对数据结果
}
//3.开始更新 图片历史比对数据结果
logger.info("查重任务:{},更新图片历史比对结果",checkDuplicateId); logger.info("查重任务:{},更新图片历史比对结果",checkDuplicateId);
b = this.updateCompareToPictureDuplicateHis(saveList); this.updateCompareToPictureDuplicateHis(saveList);
if (!b) { logger.info("查重任务:{},结束图片历史比对结果",checkDuplicateId);
logger.error("更新图片历史比对结果失败,{}",checkDuplicateId);
throw new Exception("更新图片历史比对结果失败!");
} }
//4.开始更新 图片历史比对数据结果
logger.info("查重任务:{},开启创建任务",checkDuplicateId);
if (CollectionUtils.isNotEmpty(ocrPictureList)) {
ocrTaskchildPictureService.createTask(ocrPictureList, ocrPictureList.get(0).getTenantId().toString(), sysUser);
}
return true;
}
@Override @Override
public Boolean removeCheckDuplicate(String checkDuplicateNo, String tenantId) { public Boolean removeCheckDuplicate(String checkDuplicateNo, String tenantId) {
@ -376,19 +342,9 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
*/ */
private boolean updatePictureSimilarityScore(List<OcrCheckDuplicateResult> saveList) throws Exception { private boolean updatePictureSimilarityScore(List<OcrCheckDuplicateResult> saveList) throws Exception {
List<OcrPicture> updateList = new ArrayList<>(); List<OcrPicture> updateList = new ArrayList<>();
List<OcrPicture> updateList1 = new ArrayList<>();
for (OcrCheckDuplicateResult ocrCheckDuplicateResult : saveList) { for (OcrCheckDuplicateResult ocrCheckDuplicateResult : saveList) {
OcrPicture picture = pictureService.selectDtoById(ocrCheckDuplicateResult.getPictureId()); OcrPicture picture = pictureService.selectDtoById(ocrCheckDuplicateResult.getPictureId());
OcrPicture ocrPicture = new OcrPicture(); OcrPicture ocrPicture = new OcrPicture();
if(ocrCheckDuplicateResult.getIsRepeat()==1){
OcrPicture ocrPicture1 = new OcrPicture();
if(picture.getIsRepeat() == null || picture.getIsRepeat() != 1){
ocrPicture1.setId(picture.getId());
ocrPicture1.setIsRepeat(1);
updateList1.add(ocrPicture1);
}
}
pictureService.updateBatchById(updateList1);
//如果当前图片没有历史阈值,直接更新上阈值 //如果当前图片没有历史阈值,直接更新上阈值
if (picture.getSimilarityscore() == null) { if (picture.getSimilarityscore() == null) {
ocrPicture.setId(picture.getId()); ocrPicture.setId(picture.getId());
@ -522,7 +478,8 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
Page<OcrPicture> pageVO = new Page<OcrPicture>(pageNo, pageSize); Page<OcrPicture> pageVO = new Page<OcrPicture>(pageNo, pageSize);
pageVO.setRecords(collect); pageVO.setRecords(collect);
pageVO.setTotal(ocrCheckDuplicateResults.size()); pageVO.setTotal(records.size());
return pageVO; return pageVO;
} }

@ -1,30 +1,19 @@
package cn.jyjz.xiaoyao.ocr.service.impl; package cn.jyjz.xiaoyao.ocr.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.jyjz.xiaoyao.common.base.param.ParamterPage;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl; import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrFieldMybatisDao; import cn.jyjz.xiaoyao.ocr.dataDao.OcrFieldMybatisDao;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrField; import cn.jyjz.xiaoyao.ocr.dataobject.OcrField;
import cn.jyjz.xiaoyao.ocr.dto.OcrFieldDto; import cn.jyjz.xiaoyao.ocr.dto.OcrFieldDto;
import cn.jyjz.xiaoyao.ocr.service.OcrFieldService; import cn.jyjz.xiaoyao.ocr.service.OcrFieldService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.sql.Date;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
@ -36,7 +25,6 @@ public class OcrFieldServiceImpl extends BaseServiceImpl<OcrFieldMybatisDao, Ocr
@Autowired @Autowired
private OcrFieldMybatisDao ocrFieldMybatisDao; private OcrFieldMybatisDao ocrFieldMybatisDao;
@Override @Override
public List<OcrFieldDto> list(Integer reviewType){ public List<OcrFieldDto> list(Integer reviewType){
List<OcrFieldDto> ocrFieldDtoList = new ArrayList<>(); List<OcrFieldDto> ocrFieldDtoList = new ArrayList<>();
@ -69,18 +57,6 @@ public class OcrFieldServiceImpl extends BaseServiceImpl<OcrFieldMybatisDao, Ocr
return ocrFieldDtoList; return ocrFieldDtoList;
} }
@Override
public IPage<OcrField> pageList(ParamterPage paramterPage, QueryWrapper<OcrField> queryWrapper){
try {
queryWrapper.eq("del", 0);
queryWrapper.orderByAsc("sort");
return this.selectSearchListPage(paramterPage, queryWrapper);
} catch (BeansException e) {
e.printStackTrace();
}
return null;
}
@Override @Override
public List<OcrFieldDto> listAll(){ public List<OcrFieldDto> listAll(){
List<OcrFieldDto> ocrFieldDtoList = new ArrayList<>(); List<OcrFieldDto> ocrFieldDtoList = new ArrayList<>();
@ -130,26 +106,20 @@ public class OcrFieldServiceImpl extends BaseServiceImpl<OcrFieldMybatisDao, Ocr
} }
@Override @Override
public ResultVo saveData(OcrField ocrField){ public void saveData(OcrField ocrField){
try { try {
if (Objects.nonNull(ocrField.getId())) {
String name = ocrField.getName(); String name = ocrField.getName();
LambdaQueryWrapper<OcrField> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<OcrField> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(OcrField::getName, name); queryWrapper.eq(OcrField::getName, name);
OcrField ocrFieldOne = this.getOne(queryWrapper); OcrField ocrFieldOne = this.getOne(queryWrapper);
if(Objects.nonNull(ocrFieldOne)&&!ocrFieldOne.getId().equals(ocrField.getId())){ if (ocrFieldOne != null) {
return ResultVoUtil.error(ResultVo.ERROR,"字段名称已存在"); ocrField.setId(ocrFieldOne.getId()); // 设置 ID以便更新指定记录
}
ocrField.setUpdateTime(DateUtil.date().toSqlDate());
updateById(ocrField); // 更新记录 updateById(ocrField); // 更新记录
} else { } else {
ocrField.setCreateTime(DateUtil.date().toSqlDate());
ocrField.setUpdateTime(DateUtil.date().toSqlDate());
save(ocrField); // 保存记录 save(ocrField); // 保存记录
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
return ResultVoUtil.success();
} }
} }

@ -1,37 +0,0 @@
package cn.jyjz.xiaoyao.ocr.service.impl;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiConfig;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrFrontConfMapper;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrFrontConf;
import cn.jyjz.xiaoyao.ocr.service.OcrFrontConfService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class OcrFrontConfServiceImpl extends BaseServiceImpl<OcrFrontConfMapper, OcrFrontConf> implements OcrFrontConfService {
@Resource
private ApiConfig apiConfig;
@Value("${spring.profiles.active}")
private String env;
@Override
public void updateConfig() {
QueryWrapper<OcrFrontConf> wrapper = new QueryWrapper<>();
wrapper.eq("env", env);
OcrFrontConf frontConf = this.getOne(wrapper);
if (frontConf != null){
apiConfig.setInterfaceDomain(frontConf.getWlyInterfaceDomain());
apiConfig.setAccessKey(frontConf.getWlyAccessKey());
apiConfig.setAccessCode(frontConf.getWlyAccessCode());
apiConfig.setConnectTimeout(frontConf.getWlyConnectTimeout());
apiConfig.setReadTimeout(frontConf.getWlyReadTimeout());
}
}
}

@ -10,29 +10,14 @@ import cn.jyjz.xiaoyao.common.base.util.RequestBaseUtil;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo; import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil; import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import cn.jyjz.xiaoyao.common.base.vo.UserToken; import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import cn.jyjz.xiaoyao.oa.from.dataobject.Category; import cn.jyjz.xiaoyao.oa.from.dataobject.Category;
import cn.jyjz.xiaoyao.oa.from.service.CategoryService; import cn.jyjz.xiaoyao.oa.from.service.CategoryService;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiConfig;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrPictureMybatisDao; import cn.jyjz.xiaoyao.ocr.dataDao.OcrPictureMybatisDao;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPackagetask; import cn.jyjz.xiaoyao.ocr.dataobject.*;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture; import cn.jyjz.xiaoyao.ocr.service.*;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPictureInfo;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrUsersearch;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrUsersearchchild;
import cn.jyjz.xiaoyao.ocr.service.OcrPackagetaskService;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureInfoService;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
import cn.jyjz.xiaoyao.ocr.service.OcrTaskchildPictureService;
import cn.jyjz.xiaoyao.ocr.service.OcrUsersearchService;
import cn.jyjz.xiaoyao.ocr.thread.TaskQueue; import cn.jyjz.xiaoyao.ocr.thread.TaskQueue;
import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity; import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity;
import cn.jyjz.xiaoyao.ocr.util.DataDictionaryUtil; import cn.jyjz.xiaoyao.ocr.util.*;
import cn.jyjz.xiaoyao.ocr.util.HashCompareUtil;
import cn.jyjz.xiaoyao.ocr.util.ImageClassUtil;
import cn.jyjz.xiaoyao.ocr.util.SearchEnum;
import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -41,26 +26,23 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.awt.color.ColorSpace; import java.awt.color.ColorSpace;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.File; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.net.URL; import java.net.URL;
import java.net.URLConnection; import java.net.URLConnection;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -70,8 +52,8 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao, OcrPicture> implements OcrPictureService { public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao, OcrPicture> implements OcrPictureService {
@Resource @Value("${ocr.api.wly.localImagePath}")
private ApiConfig apiConfig; private String localImagePath;
@Value("${image.similarityPath}") @Value("${image.similarityPath}")
private String similarityPath; private String similarityPath;
@ -93,6 +75,11 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
@Resource @Resource
private OcrPictureInfoService ocrPictureInfoService; private OcrPictureInfoService ocrPictureInfoService;
private Object lock = new Object(); private Object lock = new Object();
/**
*
*/
@Value("${ocr.api.wly.interface-domain}")
private String interfaceDomain;
/** /**
* *
*/ */
@ -328,11 +315,19 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
@Override @Override
public OcrPicture getPackagePictureInfo(String checkDuplicateId, String pictureId, UserToken userToken) { public OcrPicture getPackagePictureInfo(String checkDuplicateId, String pictureId, UserToken userToken) {
OcrPicture ocrPicture = pictureMybatisDao.getPackagePictureInfo(checkDuplicateId,pictureId); String userNodeType = ProcessConstant.userNodeType.getOrDefault(userToken.getNodeType(), "一级审批");
ocrPicture.getPictureInfo().setCreateTime(ocrPicture.getPhotoDateTimestamp());
return ocrPicture; return pictureMybatisDao.getPackagePictureInfo(checkDuplicateId,pictureId,userNodeType);
}
@Override
public List<OcrPicture> getPictureNodeStatesList(List<String> pictureIds, Integer nodeType) {
String userNodeType = ProcessConstant.userNodeType.getOrDefault(nodeType, "一级审批");
return pictureMybatisDao.getPictureNodeStatesList(pictureIds,userNodeType);
} }
// @Override // @Override
// public Long getPhotoDateTime(OcrPicture picture) { // public Long getPhotoDateTime(OcrPicture picture) {
// long timestamp = 0L; // long timestamp = 0L;
@ -670,7 +665,7 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
} }
@Override @Override
public int savePictures(List<OcrPicture> ocrPictureList){ public int savePictures(List<OcrPicture> ocrPictureList) {
//1.字典数据 解析入库 //1.字典数据 解析入库
boolean b = dataDictionaryUtil.pictureDataDictionarySaveArray(ocrPictureList); boolean b = dataDictionaryUtil.pictureDataDictionarySaveArray(ocrPictureList);
@ -678,26 +673,16 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
//2.调整图片地址,补齐域名 //2.调整图片地址,补齐域名
for (OcrPicture picture : ocrPictureList) { for (OcrPicture picture : ocrPictureList) {
picture.setCreateTime(System.currentTimeMillis()); //获取创建时间戳 picture.setCreateTime(System.currentTimeMillis()); //获取创建时间戳
// picture.setImgurl(interfaceDomain + picture.getImgurl());
} }
try { boolean saveBatch = this.saveBatch(ocrPictureList);
boolean saveBatch = false;
synchronized(lock) {
// 同步的代码块
saveBatch = this.saveBatch(ocrPictureList);
}
//3.添加图片信息 //3.添加图片信息
if (saveBatch) { if (saveBatch) {
// this.savePicturesInfo(ocrPictureList); this.savePicturesInfo(ocrPictureList);
this.convertImage(ocrPictureList); this.convertImage(ocrPictureList);
return ocrPictureList.size(); return ocrPictureList.size();
} }
log.error("存储图片失败:{}",JSONObject.toJSON(ocrPictureList));
}catch (Exception e){
log.error("存储图片异常:{}",e.getMessage());
}
return 0; return 0;
} }
@ -705,7 +690,7 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
List<OcrPictureInfo> list = new ArrayList<>(); List<OcrPictureInfo> list = new ArrayList<>();
for (OcrPicture ocrPicture : ocrPictureList) { for (OcrPicture ocrPicture : ocrPictureList) {
if (StringUtils.isNotBlank(ocrPicture.getImgurl())) { if (StringUtils.isNotBlank(ocrPicture.getImgurl())) {
OcrPictureInfo imageInfo = getImageInfo(ocrPicture.getImgurl(),true); OcrPictureInfo imageInfo = getImageInfo(ocrPicture.getImgurl());
if (ObjectUtil.isNotEmpty(imageInfo)) { if (ObjectUtil.isNotEmpty(imageInfo)) {
imageInfo.setPictureId(ocrPicture.getId()); imageInfo.setPictureId(ocrPicture.getId());
imageInfo.setImgName(ocrPicture.getImgname()); imageInfo.setImgName(ocrPicture.getImgname());
@ -716,49 +701,18 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
ocrPictureInfoService.saveBatch(list); ocrPictureInfoService.saveBatch(list);
} }
/** private OcrPictureInfo getImageInfo(String imageUrl) {
*
* @param ocrPicture
*/
@Override
public void savePicturesInfo(OcrPicture ocrPicture) {
boolean isConnection = true;
String url = ocrPicture.getImgurl();
if(!StringUtils.isEmpty(ocrPicture.getLocalpictrueurl())){
url = ocrPicture.getLocalpictrueurl();
isConnection = false;
}
OcrPictureInfo imageInfo = getImageInfo(url,isConnection);
imageInfo.setPictureId(ocrPicture.getId());
imageInfo.setImgName(ocrPicture.getImgname());
ocrPictureInfoService.save(imageInfo);
}
/**
*
* @param imageUrl
* @param isConnection url
* @return
*/
private OcrPictureInfo getImageInfo(String imageUrl,boolean isConnection) {
try { try {
BufferedImage image = null;
Integer imageSize = 0;
if(isConnection){
// 创建URL对象 // 创建URL对象
URL url = new URL(imageUrl); URL url = new URL(imageUrl);
// 打开连接 // 打开连接
URLConnection urlConnection = url.openConnection(); URLConnection urlConnection = url.openConnection();
// 获取图片大小 // 获取图片大小
imageSize = urlConnection.getContentLength(); Integer imageSize = urlConnection.getContentLength();
// 使用ImageIO读取图片 // 使用ImageIO读取图片
image= ImageIO.read(url); BufferedImage image = ImageIO.read(url);
}else{
File file = new File(imageUrl);
image = ImageIO.read(file);
imageSize =(int)file.length();
}
if (image != null) { if (image != null) {
OcrPictureInfo info = new OcrPictureInfo(); OcrPictureInfo info = new OcrPictureInfo();
@ -797,37 +751,20 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
log.info("Cannot read image from URL."); log.info("Cannot read image from URL.");
return null; return null;
} }
} catch (Exception e) { } catch (IOException e) {
log.error("Error: " + e.getMessage()); log.error("Error: " + e.getMessage());
} }
return null; return null;
} }
private void convertImage(List<OcrPicture> list) { private void convertImage(List<OcrPicture> list) {
for (OcrPicture ocrPicture : list) { for (OcrPicture ocrPicture : list) {
PictureImgToLocalEntity entity = new PictureImgToLocalEntity(); PictureImgToLocalEntity entity = new PictureImgToLocalEntity();
entity.setPictureId(ocrPicture.getId()); entity.setPictureId(ocrPicture.getId());
entity.setImgUrl(ocrPicture.getImgurl()); entity.setImgUrl(ocrPicture.getImgurl());
String imgurl = ocrPicture.getImgurl(); String imgurl = ocrPicture.getImgurl();
entity.setLocalPath(apiConfig.getLocalImagePath() + imgurl.substring(imgurl.lastIndexOf("/"))); entity.setLocalPath(localImagePath + imgurl.substring(imgurl.lastIndexOf("/")));
TaskQueue.pictureImgToLocalPushData(entity);
boolean addedToQueue = false;
int count = 1;
while (!addedToQueue){
try {
addedToQueue = TaskQueue.pictureImgToLocalPushData(entity);
if(addedToQueue) {
break;
}
Thread.sleep(5000);
} catch (InterruptedException e) {
log.error("放入图片下载队列,等待休眠异常:{}",e.getMessage());
}
count++;
}
} }
} }

@ -1,43 +0,0 @@
package cn.jyjz.xiaoyao.ocr.service.impl;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrPictureclassMybatisDao;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPictureclass;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrUsersearch;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureclassService;
import cn.jyjz.xiaoyao.ocr.service.OcrUsersearchService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
*
*/
@Service
@Slf4j
public class OcrPictureclassServiceImpl extends BaseServiceImpl<OcrPictureclassMybatisDao, OcrPictureclass> implements OcrPictureclassService {
@Autowired
private OcrPictureclassMybatisDao ocrpictureclassmybatisdao;
@Override
public List<OcrPictureclass> queryListNoPage(QueryWrapper<OcrPictureclass> queryWrapper) {
Long count = ocrpictureclassmybatisdao.selectCount(queryWrapper);
Page<OcrPictureclass> page = new Page(1,count);
page.setMaxLimit(count);
IPage<OcrPictureclass> iPage = this.page(page,queryWrapper);
return iPage.getRecords();
}
}

@ -84,11 +84,9 @@ public class OcrSearchHistoryServiceImpl extends ServiceImpl<OcrSearchHistoryMap
List<SFrontmenuT> frontmenuTList = isFrontmenuTService.queryUserMenuById(assignee); List<SFrontmenuT> frontmenuTList = isFrontmenuTService.queryUserMenuById(assignee);
if(CollUtil.isNotEmpty(frontmenuTList)){ if(CollUtil.isNotEmpty(frontmenuTList)){
for (SFrontmenuT sFrontmenuT : frontmenuTList) { for (SFrontmenuT sFrontmenuT : frontmenuTList) {
if(StringUtils.isNotBlank(search)){
if(sFrontmenuT.getResKey().equals(FrontMenuEnum.WORKSHEETMAIN.getResKey())){ if(sFrontmenuT.getResKey().equals(FrontMenuEnum.WORKSHEETMAIN.getResKey())){
strings1 = ocrsearchhistorymapper.selectsearch1(userId,search,tenantId); strings1 = ocrsearchhistorymapper.selectsearch1(userId,search,tenantId);
} }
}
if(sFrontmenuT.getResKey().equals(FrontMenuEnum.TASKMAIN.getResKey())){ if(sFrontmenuT.getResKey().equals(FrontMenuEnum.TASKMAIN.getResKey())){
strings2 = ocrsearchhistorymapper.selectsearch2(assignee,search,tenantId); strings2 = ocrsearchhistorymapper.selectsearch2(assignee,search,tenantId);
} }
@ -100,13 +98,12 @@ public class OcrSearchHistoryServiceImpl extends ServiceImpl<OcrSearchHistoryMap
// List<Map<Object,List<Map<String,String>>>> list = new ArrayList<>(); // List<Map<Object,List<Map<String,String>>>> list = new ArrayList<>();
Map<Object,List<Map<String,String>>> map=new HashMap<>(); Map<Object,List<Map<String,String>>> map=new HashMap<>();
if(StringUtils.isNotBlank(search)){
map.put("ai",strings1); map.put("ai",strings1);
}
map.put("preliminary",strings2); map.put("preliminary",strings2);
map.put("final",strings3); map.put("final",strings3);
// list.add(map); // list.add(map);
return map; return map;
} }
@ -138,82 +135,7 @@ public class OcrSearchHistoryServiceImpl extends ServiceImpl<OcrSearchHistoryMap
int pendingApprovalCount = 0; // 待审批的数量 int pendingApprovalCount = 0; // 待审批的数量
int approvedCount = 0; // 通过的数量 int approvedCount = 0; // 通过的数量
int notGoCount = 0; // 不通过的数量 int notGoCount = 0; // 不通过的数量
int repeat = 0; // 重复数量
for (OcrTaskchildPictureAppro ocrTaskchildPictureAppro : ocrTaskchildPictureApproList) {
if(ocrTaskchildPictureAppro.getIsRepeat() != null && ocrTaskchildPictureAppro.getIsRepeat() == 1){
repeat++;
}
if (ocrTaskchildPictureAppro.getStatshis() != null) {
switch (ocrTaskchildPictureAppro.getStatshis()) {
case 1:
pendingApprovalCount++;
break;
case 2:
approvedCount++;
break;
case 3:
notGoCount++;
break;
default:
break;
}
} else {
//暂定,后期修改
pendingApprovalCount++;
}
}
Map<String, Integer> counts = new HashMap<>();
counts.put("total", approvedCount + pendingApprovalCount + notGoCount); //任务总数
counts.put("treat", pendingApprovalCount); //待审批
counts.put("approvedCount", approvedCount+notGoCount); //已审批
counts.put("repeat", repeat); //重复图片
resultVo.setCode("OK");
resultVo.setMessage("成功");
resultVo.setData(counts);
} catch (Exception e) {
e.printStackTrace();
}
return resultVo;
}
@Override
public ResultVo toolsTaskApprovalCount(String tenantid, String userId, HttpServletRequest request) {
ResultVo<Map<String, Integer>> resultVo = null;
try {
//系统中记录的ai统计租户id
String counttenantid = iCacheManager.get(CacheConstants.TOOLSCOUNT_TENANTID_MODEL_NAME,tenantid+"_"+userId);
// if(!StringUtils.isBlank(counttenantid)){
// return ResultVoUtil.error("true");
// }
//用户登录信息写入缓存
iCacheManager.put(CacheConstants.TOOLSCOUNT_TENANTID_MODEL_NAME,tenantid+"_"+userId,"true",CacheConstants.TOOLSCOUNT_TENANTID_CACHE_TIME);
SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_");
String taskName = request.getParameter("keyword");
if (StringUtils.isNotBlank(taskName)) {
searchQuery.addLike("fromtaskname", taskName);
}
User user = this.userService.getSessionUser(request);
PageUtils pageUtils = new PageUtils();
pageUtils.setPageSize(9999);
pageUtils.setCurrPage(1);
List<OcrTaskchildPictureAppro> ocrTaskchildPictureApproList = flowTaskService.getMyProcessInstancesNew(user, tenantid, searchQuery.getQuery(), pageUtils);
resultVo = new ResultVo<>();
int pendingApprovalCount = 0; // 待审批的数量
int approvedCount = 0; // 通过的数量
int notGoCount = 0; // 不通过的数量
int repeat = 0; // 重复数量
int repeatedNodulesCount = 0; //重复小结数
for (OcrTaskchildPictureAppro ocrTaskchildPictureAppro : ocrTaskchildPictureApproList) { for (OcrTaskchildPictureAppro ocrTaskchildPictureAppro : ocrTaskchildPictureApproList) {
if(ocrTaskchildPictureAppro.getIsRepeat() != null && ocrTaskchildPictureAppro.getIsRepeat() == 1){
repeat++;
}
if(ocrTaskchildPictureAppro.getIsRepeatedNodules() !=null && ocrTaskchildPictureAppro.getIsRepeatedNodules() == 1){
repeatedNodulesCount++;
}
if (ocrTaskchildPictureAppro.getStatshis() != null) { if (ocrTaskchildPictureAppro.getStatshis() != null) {
switch (ocrTaskchildPictureAppro.getStatshis()) { switch (ocrTaskchildPictureAppro.getStatshis()) {
case 1: case 1:
@ -235,13 +157,9 @@ public class OcrSearchHistoryServiceImpl extends ServiceImpl<OcrSearchHistoryMap
} }
Map<String, Integer> counts = new HashMap<>(); Map<String, Integer> counts = new HashMap<>();
counts.put("total", approvedCount + pendingApprovalCount + notGoCount); //任务总数 counts.put("total", approvedCount + pendingApprovalCount + notGoCount);
counts.put("treat", pendingApprovalCount); //待审批 counts.put("treat", pendingApprovalCount);
counts.put("alreadyApprove", approvedCount+notGoCount); //已审批 counts.put("approvedCount", approvedCount+notGoCount);
counts.put("approvedCount", approvedCount); //已通过
counts.put("notGoCount", notGoCount); //未通过
counts.put("repeat", repeat); //重复图片
counts.put("repeatedNodules", repeatedNodulesCount); //重复小结数
resultVo.setCode("OK"); resultVo.setCode("OK");
resultVo.setMessage("成功"); resultVo.setMessage("成功");
resultVo.setData(counts); resultVo.setData(counts);
@ -285,7 +203,8 @@ public class OcrSearchHistoryServiceImpl extends ServiceImpl<OcrSearchHistoryMap
List<String> approvedList = new ArrayList<>(); // 存储通过的pictureId集合 List<String> approvedList = new ArrayList<>(); // 存储通过的pictureId集合
List<String> failedList = new ArrayList<>(); // 存储不通过的pictureId集合 List<String> failedList = new ArrayList<>(); // 存储不通过的pictureId集合
if(pictureIds.size()!=0){ if(pictureIds.size()!=0){
List<OcrTaskChildPictureVo> failedPictureIds = taskchildPictureMybatisDao.getSimilarityList(pictureIds); String userNodeType = ProcessConstant.userNodeType.getOrDefault(nodeType, "一级审批");
List<OcrTaskChildPictureVo> failedPictureIds = taskchildPictureMybatisDao.getPictureHistoryList(pictureIds, userNodeType);
for (OcrTaskChildPictureVo picture : failedPictureIds) { for (OcrTaskChildPictureVo picture : failedPictureIds) {
if (picture.getHistoryStates() == 3) { if (picture.getHistoryStates() == 3) {
failedList.add(picture.getId()); failedList.add(picture.getId());

@ -2,7 +2,6 @@ package cn.jyjz.xiaoyao.ocr.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.jyjz.flowable.common.ProcessConstant; import cn.jyjz.flowable.common.ProcessConstant;
import cn.jyjz.xiaoyao.common.base.util.StringUtils;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil; import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import cn.jyjz.xiaoyao.common.base.vo.UserToken; import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrTaskchildDubiousFileMapper; import cn.jyjz.xiaoyao.ocr.dataDao.OcrTaskchildDubiousFileMapper;
@ -48,14 +47,13 @@ public class OcrTaskchildDubiousFileServiceImpl extends ServiceImpl<OcrTaskchild
* *
* @param pageNo * @param pageNo
* @param pageSize * @param pageSize
* @param orderByUptime * @param orderbyname
* @param orderBySimilarity
* @param userToken * @param userToken
* @param tenantId * @param tenantId
* @return * @return
*/ */
@Override @Override
public Page<OcrTaskChildPictureVo> dubiousfilelist(Integer pageNo, Integer pageSize,String orderByUptime,String orderBySimilarity,UserToken userToken, String tenantId) { public Page<OcrTaskChildPictureVo> dubiousfilelist(Integer pageNo, Integer pageSize, String orderbyname, UserToken userToken, String tenantId) {
Page<OcrTaskChildPictureVo> objectPage = new Page<>(Integer.valueOf(pageNo), Integer.valueOf(pageSize)); Page<OcrTaskChildPictureVo> objectPage = new Page<>(Integer.valueOf(pageNo), Integer.valueOf(pageSize));
@ -76,41 +74,13 @@ public class OcrTaskchildDubiousFileServiceImpl extends ServiceImpl<OcrTaskchild
List<OcrTaskChildPictureVo> taskChildPictures = ocrTaskchildPictureService.getDubiousfileList(new ArrayList<>(pictureIdList), userNodeType); List<OcrTaskChildPictureVo> taskChildPictures = ocrTaskchildPictureService.getDubiousfileList(new ArrayList<>(pictureIdList), userNodeType);
if (CollUtil.isNotEmpty(taskChildPictures)) { if (CollUtil.isNotEmpty(taskChildPictures)) {
//按时间字段排序
Comparator<OcrTaskChildPictureVo> comparator = null; if ("desc".equals(orderbyname)) {
taskChildPictures.sort(Comparator.comparing(OcrTaskChildPictureVo::getSubmitDateTimestamp).reversed());
// 判断 orderByUptime 是否不为空
if (orderByUptime != null && StringUtils.isNotEmpty(orderByUptime)) {
if ("asc".equals(orderByUptime)) {
comparator = Comparator.comparing(OcrTaskChildPictureVo::getSubmitDateTimestamp);
} else if ("desc".equals(orderByUptime)) {
comparator = Comparator.comparing(OcrTaskChildPictureVo::getSubmitDateTimestamp).reversed();
}
}
// 判断 orderBysimilarity 是否不为空
if (orderBySimilarity != null && StringUtils.isNotEmpty(orderBySimilarity)) {
Comparator<OcrTaskChildPictureVo> similarityComparator = null;
if ("asc".equals(orderBySimilarity)) {
similarityComparator = Comparator.comparing(OcrTaskChildPictureVo::getSimilarityScore);
} else if ("desc".equals(orderBySimilarity)) {
similarityComparator = Comparator.comparing(OcrTaskChildPictureVo::getSimilarityScore).reversed();
}
// 如果 orderByUptime 和 orderBysimilarity 都不为空,则先按照 orderBysimilarity 排序
if (comparator != null) {
comparator = comparator.thenComparing(similarityComparator);
} else { } else {
comparator = similarityComparator; taskChildPictures.sort(Comparator.comparing(OcrTaskChildPictureVo::getSubmitDateTimestamp));
}
} }
// 进行排序
if (comparator != null) {
taskChildPictures.sort(comparator);
}
List<OcrTaskChildPictureVo> records = taskChildPictures.stream().skip((pageNo - 1) * pageSize).limit(pageSize).collect(Collectors.toList()); List<OcrTaskChildPictureVo> records = taskChildPictures.stream().skip((pageNo - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
objectPage.setRecords(records); objectPage.setRecords(records);
objectPage.setTotal(taskChildPictures.size()); objectPage.setTotal(taskChildPictures.size());

@ -1,5 +1,6 @@
package cn.jyjz.xiaoyao.ocr.service.impl; package cn.jyjz.xiaoyao.ocr.service.impl;
import cn.hutool.core.map.MapBuilder;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.jyjz.flowable.common.ProcessConstant; import cn.jyjz.flowable.common.ProcessConstant;
import cn.jyjz.flowable.common.SystemConstantsOa; import cn.jyjz.flowable.common.SystemConstantsOa;
@ -8,31 +9,19 @@ import cn.jyjz.flowable.entity.FlowApprove;
import cn.jyjz.flowable.service.IFlowInstanceService; import cn.jyjz.flowable.service.IFlowInstanceService;
import cn.jyjz.flowable.service.IFlowTaskService; import cn.jyjz.flowable.service.IFlowTaskService;
import cn.jyjz.flowable.service.IFormCustomService; import cn.jyjz.flowable.service.IFormCustomService;
import cn.jyjz.xiaoyao.admin.dataobject.Department;
import cn.jyjz.xiaoyao.admin.service.DepartmentService;
import cn.jyjz.xiaoyao.common.base.param.ParamterPage; import cn.jyjz.xiaoyao.common.base.param.ParamterPage;
import cn.jyjz.xiaoyao.common.base.util.SpringUtils; import cn.jyjz.xiaoyao.common.base.util.SpringUtils;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo; import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil; import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import cn.jyjz.xiaoyao.common.base.vo.UserToken; import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import cn.jyjz.xiaoyao.oa.from.dataobject.Category; import cn.jyjz.xiaoyao.oa.from.dataobject.Category;
import cn.jyjz.xiaoyao.oa.from.dataobject.Userapprove; import cn.jyjz.xiaoyao.oa.from.dataobject.Userapprove;
import cn.jyjz.xiaoyao.oa.from.service.CategoryService; import cn.jyjz.xiaoyao.oa.from.service.CategoryService;
import cn.jyjz.xiaoyao.oa.from.service.UserapproveService; import cn.jyjz.xiaoyao.oa.from.service.UserapproveService;
import cn.jyjz.xiaoyao.ocr.api.PrevailCloudApi;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiConfig;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiHelper;
import cn.jyjz.xiaoyao.ocr.api.utils.RequestData;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrTaskchildPictureMybatisDao; import cn.jyjz.xiaoyao.ocr.dataDao.OcrTaskchildPictureMybatisDao;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture; import cn.jyjz.xiaoyao.ocr.dataobject.*;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPictureDuplicateHis;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPictureInfo;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPictureAppro;
import cn.jyjz.xiaoyao.ocr.dto.ApproveNodeDto; import cn.jyjz.xiaoyao.ocr.dto.ApproveNodeDto;
import cn.jyjz.xiaoyao.ocr.dto.FlowResultDto; import cn.jyjz.xiaoyao.ocr.dto.FlowResultDto;
import cn.jyjz.xiaoyao.ocr.dto.ResultDto;
import cn.jyjz.xiaoyao.ocr.dto.UserapproveDto; import cn.jyjz.xiaoyao.ocr.dto.UserapproveDto;
import cn.jyjz.xiaoyao.ocr.service.IOcrPictureDuplicateHisService; import cn.jyjz.xiaoyao.ocr.service.IOcrPictureDuplicateHisService;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureInfoService; import cn.jyjz.xiaoyao.ocr.service.OcrPictureInfoService;
@ -40,23 +29,23 @@ import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
import cn.jyjz.xiaoyao.ocr.service.OcrTaskchildPictureService; import cn.jyjz.xiaoyao.ocr.service.OcrTaskchildPictureService;
import cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo; import cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo;
import cn.jyjz.xiaoyao.ocr.vo.PictureDetailVo; import cn.jyjz.xiaoyao.ocr.vo.PictureDetailVo;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.flowable.bpmn.model.FlowElement;
import org.flowable.bpmn.model.UserTask;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.task.api.Task; import org.flowable.task.api.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
@ -71,7 +60,6 @@ import java.util.stream.Collectors;
@Service("ocrTaskchildPictureService") @Service("ocrTaskchildPictureService")
@Slf4j @Slf4j
public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchildPictureMybatisDao, OcrTaskchildPicture> implements OcrTaskchildPictureService { public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchildPictureMybatisDao, OcrTaskchildPicture> implements OcrTaskchildPictureService {
@Resource @Resource
private OcrTaskchildPictureMybatisDao ocrtaskchildpicturemybatisdao; private OcrTaskchildPictureMybatisDao ocrtaskchildpicturemybatisdao;
@ -94,13 +82,10 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
IFlowInstanceService flowInstanceService; IFlowInstanceService flowInstanceService;
@Resource @Resource
private IOcrPictureDuplicateHisService pictureDuplicateHisService; private CategoryService categoryService;
@Resource @Resource
private PrevailCloudApi prevailCloudApi; private IOcrPictureDuplicateHisService pictureDuplicateHisService;
@Autowired
private DepartmentService departmentService;
/** /**
* *
@ -327,8 +312,8 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
//TODO 没有对应项目,返回提示信息 //TODO 没有对应项目,返回提示信息
continue; continue;
} }
Department department = departmentService.getOne(new LambdaQueryWrapper<Department>().eq(Department::getDeptno, tenantId)); Category category = categoryService.getById(ocrPicture.getCategoryid());
if (null == department || StringUtils.isBlank(department.getProcessdefinitionid())) { if (null == category || StringUtils.isBlank(category.getProcessdefinitionid())) {
continue; continue;
} }
//创建工单,如果创建成功,增加标志,用于过滤条件使用 //创建工单,如果创建成功,增加标志,用于过滤条件使用
@ -338,13 +323,13 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request)); RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request));
//发起流程 //发起流程
flowInstanceService.startProcessInstanceById( flowInstanceService.startProcessInstanceById(
department.getProcessdefinitionid(), category.getProcessdefinitionid(),
null, null,
request, request,
ocrTaskchildPicture.getId().toString(), ocrTaskchildPicture.getId().toString(),
department.getServicename() category.getServicename()
); );
IFormCustomService iFormCustomService = SpringUtils.getBean(department.getServicename()); IFormCustomService iFormCustomService = SpringUtils.getBean(category.getServicename());
FlowModelVO formData = iFormCustomService.getForm(ocrTaskchildPicture.getId().toString()); FlowModelVO formData = iFormCustomService.getForm(ocrTaskchildPicture.getId().toString());
List<Task> taskList = iFlowTaskService.nowRunTask(formData.getProcessInstanceId(), ocrTaskchildPicture.getProcessdefinitionid()); List<Task> taskList = iFlowTaskService.nowRunTask(formData.getProcessInstanceId(), ocrTaskchildPicture.getProcessdefinitionid());
Task taskData = null; Task taskData = null;
@ -616,7 +601,7 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
*/ */
public List<OcrTaskchildPicture> listFinal(Map<String, Object> query) { public List<OcrTaskchildPicture> listFinal(Map<String, Object> query) {
return this.ocrtaskchildpicturemybatisdao.listFinalTask(query); return this.ocrtaskchildpicturemybatisdao.listFinal(query);
} }
@ -663,8 +648,8 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
} }
@Override @Override
public List<OcrTaskChildPictureVo> getPictureHistoryList(List<String> pictureIds, String pictureId) { public List<OcrTaskChildPictureVo> getPictureHistoryList(List<String> pictureIds, String taskname) {
return ocrtaskchildpicturemybatisdao.getPictureHistoryList(pictureIds, pictureId); return ocrtaskchildpicturemybatisdao.getPictureHistoryList(pictureIds, taskname);
} }
@Override @Override
@ -687,23 +672,12 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
OcrPictureDuplicateHis duplicateHis = pictureDuplicateHisService.getOne(new LambdaQueryWrapper<OcrPictureDuplicateHis>().eq(OcrPictureDuplicateHis::getPictureId, pictureId)); OcrPictureDuplicateHis duplicateHis = pictureDuplicateHisService.getOne(new LambdaQueryWrapper<OcrPictureDuplicateHis>().eq(OcrPictureDuplicateHis::getPictureId, pictureId));
Page<OcrTaskChildPictureVo> objectPage = new Page<>(); Page<OcrTaskChildPictureVo> objectPage = new Page<>();
if (ObjectUtils.isNotEmpty(duplicateHis) && org.apache.commons.lang3.StringUtils.isNotBlank(duplicateHis.getCheckDuplicateResultHisJson())) { if (ObjectUtils.isNotEmpty(duplicateHis) && org.apache.commons.lang3.StringUtils.isNotBlank(duplicateHis.getCheckDuplicateResultHisJson())) {
String userNodeType = ProcessConstant.userNodeType.getOrDefault(userToken.getNodeType(), "一级审批");
JSONObject jsonObject = JSONObject.parseObject(duplicateHis.getCheckDuplicateResultHisJson()); JSONObject jsonObject = JSONObject.parseObject(duplicateHis.getCheckDuplicateResultHisJson());
Set<String> pictureIds = jsonObject.keySet(); Set<String> pictureIds = jsonObject.keySet();
List<OcrTaskChildPictureVo> taskChildPicturesOld = this.getPictureHistoryList(new ArrayList<>(pictureIds), pictureId); List<OcrTaskChildPictureVo> taskChildPictures = this.getPictureHistoryList(new ArrayList<>(pictureIds), userNodeType);
List<OcrTaskChildPictureVo> taskChildPictures = new ArrayList<>();
for (OcrTaskChildPictureVo taskChildPicture : taskChildPicturesOld) {
if(taskChildPicture.getPictureId()!=null){
taskChildPictures.add(taskChildPicture);
}
}
for (OcrTaskChildPictureVo taskChildPicture : taskChildPictures) { for (OcrTaskChildPictureVo taskChildPicture : taskChildPictures) {
if(jsonObject.getString(taskChildPicture.getPictureId())!=null){
taskChildPicture.setSimilarityScore(Integer.parseInt(jsonObject.getString(taskChildPicture.getPictureId().toString()))); taskChildPicture.setSimilarityScore(Integer.parseInt(jsonObject.getString(taskChildPicture.getPictureId().toString())));
}else{
taskChildPicture.setSimilarityScore(1);
}
} }
if (orderValue.equals("similarityScore")) { if (orderValue.equals("similarityScore")) {
if ("desc".equals(orderType)) { if ("desc".equals(orderType)) {
@ -727,20 +701,22 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
} }
@Override @Override
public Page<OcrTaskChildPictureVo> getPackageSimilarityList(Integer pageNo, Integer pageSize, String oderType, String oderName, String checkDuplicateId, String pictureId) { public Page<OcrTaskChildPictureVo> getPackageSimilarityList(Integer pageNo, Integer pageSize, String oderType, String oderName, String checkDuplicateId, String pictureId, UserToken userToken) {
Page<OcrTaskChildPictureVo> page = new Page<>(pageNo, pageSize); Page<OcrTaskChildPictureVo> page = new Page<>(pageNo, pageSize);
return ocrtaskchildpicturemybatisdao.getPackageSimilarityList(page, checkDuplicateId, pictureId, oderType, oderName); String userNodeType = ProcessConstant.userNodeType.getOrDefault(userToken.getNodeType(), "一级审批");
return ocrtaskchildpicturemybatisdao.getPackageSimilarityList(page, checkDuplicateId, pictureId, oderType, oderName, userNodeType);
} }
@Override @Override
public void sendFlowTaskResult(OcrTaskchildPicture taskchildPicture, OcrPicture picture, FlowApprove flowApprove) throws Exception { public void sendFlowTaskResult(OcrTaskchildPicture taskchildPicture, OcrPicture picture, FlowApprove flowApprove) {
FlowResultDto flowResultDto = new FlowResultDto(); FlowResultDto flowResultDto = new FlowResultDto();
flowResultDto.setTenantNo(picture.getTenantId()); flowResultDto.setTenantNo(picture.getTenantId());
flowResultDto.setAccountNo(Long.parseLong(picture.getPictureid())); flowResultDto.setAccountNo(Long.parseLong(picture.getPictureid()));
flowResultDto.setTaskNo(Long.parseLong(picture.getRemark())); flowResultDto.setTaskNo(Long.parseLong(picture.getRemark()));
flowResultDto.setPictureMatchDegree(BigDecimal.valueOf(picture.getSimilarityscore())); flowResultDto.setPictureMatchDegree(BigDecimal.valueOf(picture.getSimilarityscore()));
flowResultDto.setIsPictureRepeat(picture.getField14()==null?0:Integer.valueOf(picture.getField14())); flowResultDto.setIsPictureRepeat(Integer.valueOf(picture.getField14()));
flowResultDto.setIsPictureRight(picture.getIztrueorfalse()==null?0:picture.getIztrueorfalse()); flowResultDto.setIsPictureRight(picture.getIztrueorfalse());
Integer resultStatus = Objects.equals(taskchildPicture.getStates(), SystemConstantsOa.OA_STATUS_TYPE_END) ? SystemConstantsOa.OCR_STATUS_SUCCESS : SystemConstantsOa.OCR_STATUS_FAILURE; Integer resultStatus = Objects.equals(taskchildPicture.getStates(), SystemConstantsOa.OA_STATUS_TYPE_END) ? SystemConstantsOa.OCR_STATUS_SUCCESS : SystemConstantsOa.OCR_STATUS_FAILURE;
flowResultDto.setApproveResult(resultStatus); flowResultDto.setApproveResult(resultStatus);
flowResultDto.setApproveRemark(flowApprove.getComment()); flowResultDto.setApproveRemark(flowApprove.getComment());
@ -753,9 +729,8 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
} }
} }
flowResultDto.setApproveDetailList(nodeList); flowResultDto.setApproveDetailList(nodeList);
prevailCloudApi.sendFlowTaskResult(picture.getTenantId().toString(),JSON.toJSONString(flowResultDto));
}
}
@Override @Override
public List<OcrTaskChildPictureVo> getDubiousfileList(List<String> pictureIds, String taskname) { public List<OcrTaskChildPictureVo> getDubiousfileList(List<String> pictureIds, String taskname) {

@ -72,7 +72,7 @@ public class OcrUsersearchchildServiceImpl extends BaseServiceImpl<OcrUsersearch
vo.setIzproductname(ocrUsersearchchild.getSearchvalue()); vo.setIzproductname(ocrUsersearchchild.getSearchvalue());
} }
if(SearchConfigEnum.FIELD16.getId().equals(searchfield)){ if(SearchConfigEnum.FIELD16.getId().equals(searchfield)){
vo.setIzstatus(ocrUsersearchchild.getSearchvalue()); vo.setIztaskstatus(ocrUsersearchchild.getSearchvalue());
} }
if(SearchConfigEnum.FIELD17.getId().equals(searchfield)){ if(SearchConfigEnum.FIELD17.getId().equals(searchfield)){
vo.setIzprojecttype(ocrUsersearchchild.getSearchvalue()); vo.setIzprojecttype(ocrUsersearchchild.getSearchvalue());

@ -252,6 +252,7 @@ public class TaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchildPic
//iFlowFormMessageService.sendMsg(user.getLoginname(),model.getUsername() + SystemMessage.SYS_OA_TYPE_LEAVE + SystemMessage.SYS_OA_TO_DO,taskId,processInstanceId,fromid, CacheQyweixinConstants.OA_DISTIONARY_TYPE_MSG_SHENPI,model.getCategoryid().toString()); //iFlowFormMessageService.sendMsg(user.getLoginname(),model.getUsername() + SystemMessage.SYS_OA_TYPE_LEAVE + SystemMessage.SYS_OA_TO_DO,taskId,processInstanceId,fromid, CacheQyweixinConstants.OA_DISTIONARY_TYPE_MSG_SHENPI,model.getCategoryid().toString());
} }
model.setAssigneename(stringBuffer.toString()); model.setAssigneename(stringBuffer.toString());
return this.ocrTaskchildPictureService.updateById(model); return this.ocrTaskchildPictureService.updateById(model);
} }
return false; return false;

@ -1,79 +0,0 @@
package cn.jyjz.xiaoyao.ocr.thread;
import cn.jyjz.xiaoyao.common.base.util.SpringUtils;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
@Slf4j
public class ImageDownloadMonitoring {
@Autowired
private OcrPictureService ocrPictureService;
private static Logger logger = LoggerFactory.getLogger(TaskQueue.class);
/**
*
*
* @return
*/
public boolean startImageDownloadMonitoring(String localImagePath) {
Runnable runnable = new Runnable() {
@SneakyThrows
@Override
public void run() {
OcrPictureService ocrPictureService = SpringUtils.getBean("ocrPictureService");
// while (true) {
logger.debug("图片下载监测中...");
// try {
// 查询数据库中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.sleep(60000);
// } catch (Exception e) {
// logger.error("图片下载监测出错{}", e.getMessage());
// Thread.sleep(5000);
// }
// }
}
};
Thread thread = new Thread(runnable);
thread.start();
return true;
}
}

@ -1,6 +1,5 @@
package cn.jyjz.xiaoyao.ocr.thread; package cn.jyjz.xiaoyao.ocr.thread;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner; import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -13,13 +12,10 @@ import org.springframework.stereotype.Component;
*/ */
@Component @Component
public class TaskRunner implements CommandLineRunner { public class TaskRunner implements CommandLineRunner {
@Override @Override
public void run(String... args) throws Exception { public void run(String... args) throws Exception {
TaskThreadPool taskThreadPool = new TaskThreadPool(); TaskThreadPool taskThreadPool = new TaskThreadPool();
taskThreadPool.startPictureDisposePull(); taskThreadPool.startPictureDisposePull();
taskThreadPool.startPictureImgToLocalPull(); taskThreadPool.startPictureImgToLocalPull();
// ImageDownloadMonitoring imageDownloadMonitoring = new ImageDownloadMonitoring();
// imageDownloadMonitoring.startImageDownloadMonitoring(localImagePath);
} }
} }

@ -4,7 +4,6 @@ import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult;
import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity; import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity;
import cn.jyjz.xiaoyao.ocr.thread.tasks.PictureDisposeTask; import cn.jyjz.xiaoyao.ocr.thread.tasks.PictureDisposeTask;
import cn.jyjz.xiaoyao.ocr.thread.tasks.PictureImgToLocalTask; import cn.jyjz.xiaoyao.ocr.thread.tasks.PictureImgToLocalTask;
import liquibase.pro.packaged.E;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -22,7 +21,6 @@ public class TaskThreadPool {
private static Logger logger = LoggerFactory.getLogger(TaskQueue.class); private static Logger logger = LoggerFactory.getLogger(TaskQueue.class);
ExecutorService threadPool = null; ExecutorService threadPool = null;
ExecutorService threadPoolImg = null;
public TaskThreadPool() { public TaskThreadPool() {
if (threadPool == null) { if (threadPool == null) {
@ -34,15 +32,6 @@ public class TaskThreadPool {
new LinkedBlockingDeque<>(), new LinkedBlockingDeque<>(),
Executors.defaultThreadFactory(), Executors.defaultThreadFactory(),
new ThreadPoolExecutor.DiscardOldestPolicy()); new ThreadPoolExecutor.DiscardOldestPolicy());
threadPoolImg = new ThreadPoolExecutor(
10,
40,
3,
TimeUnit.SECONDS,
new LinkedBlockingDeque<>(),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.DiscardOldestPolicy());
} }
} }
@ -56,8 +45,8 @@ public class TaskThreadPool {
@SneakyThrows @SneakyThrows
@Override @Override
public void run() { public void run() {
logger.debug("无量云接口数据处理消费线程检测中...");
while (true) { while (true) {
logger.debug("无量云接口数据处理消费线程检测中...,队列数量:{}",TaskQueue.pictureDisposeQueue.size());
PictureSourceResult pictureSourceResult = TaskQueue.pictureDisposePullData(); PictureSourceResult pictureSourceResult = TaskQueue.pictureDisposePullData();
if (pictureSourceResult != null) { if (pictureSourceResult != null) {
threadPool.execute(new PictureDisposeTask(pictureSourceResult)); threadPool.execute(new PictureDisposeTask(pictureSourceResult));
@ -82,12 +71,13 @@ public class TaskThreadPool {
@SneakyThrows @SneakyThrows
@Override @Override
public void run() { public void run() {
logger.debug("图片下载消费线程检测中...");
while (true) { while (true) {
logger.debug("图片下载消费线程检测中...,队列数量:{}",TaskQueue.pictureImgToLocalQueue.size());
try { try {
PictureImgToLocalEntity pictureImgToLocalEntity = TaskQueue.pictureImgToLocalPullData(); PictureImgToLocalEntity pictureImgToLocalEntity = TaskQueue.pictureImgToLocalPullData();
if (pictureImgToLocalEntity != null) { if (pictureImgToLocalEntity != null) {
threadPoolImg.execute(new PictureImgToLocalTask(pictureImgToLocalEntity)); threadPool.execute(new PictureImgToLocalTask(pictureImgToLocalEntity));
} else { } else {
Thread.sleep(5000); Thread.sleep(5000);
} }

@ -4,7 +4,6 @@ import cn.hutool.core.util.ObjectUtil;
import cn.jyjz.xiaoyao.common.base.util.SpringUtils; import cn.jyjz.xiaoyao.common.base.util.SpringUtils;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture; import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureService; 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.thread.entity.PictureImgToLocalEntity;
import cn.jyjz.xiaoyao.ocr.util.DownloadImgUtil; import cn.jyjz.xiaoyao.ocr.util.DownloadImgUtil;
import cn.jyjz.xiaoyao.ocr.util.ImageUtils; import cn.jyjz.xiaoyao.ocr.util.ImageUtils;
@ -81,22 +80,7 @@ public class PictureImgToLocalTask implements Runnable {
// picture.setPhotoDateTimestamp(timestamp); // picture.setPhotoDateTimestamp(timestamp);
// } // }
ocrPictureService.updateById(picture); ocrPictureService.updateById(picture);
logger.info("图片本地化,回写数据完成!");
logger.info("开启获取图片信息操作!");
ocrPictureService.savePicturesInfo(picture);
logger.info("获取图片信息操作,结束!");
} }
}else{
//判断是否是第一次失败!
if(picture.getDownloadErrorCount()==null){
picture.setDownloadErrorCount(0);
}
//判断如果没超过5次则放回队列进行重试
if( picture.getDownloadErrorCount()!=null && picture.getDownloadErrorCount()<5){
TaskQueue.pictureImgToLocalPushData(pictureImgToLocal);
picture.setDownloadErrorCount(picture.getDownloadErrorCount()+1);
}
ocrPictureService.updateById(picture);
} }
} }

@ -5,8 +5,6 @@ import org.slf4j.LoggerFactory;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.InputStream; import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.URL; import java.net.URL;
/** /**
@ -34,16 +32,8 @@ public class DownloadImgUtil {
while ((n = in.read(buffer)) != -1) { while ((n = in.read(buffer)) != -1) {
out.write(buffer, 0, n); out.write(buffer, 0, n);
} }
out.flush();
} catch (Exception e) { } catch (Exception e) {
logger.error("转储异常问题msg:{}",e.getMessage()); logger.error(e.getMessage());
logger.error("转储异常问题json:{}",e.getStackTrace());
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
String exceptionDetails = sw.toString();// 包含堆栈跟踪信息的字符串
logger.error("图片本地化,转储图片异常:{}",exceptionDetails);
return false; return false;
} }
return true; return true;

@ -21,7 +21,7 @@ public enum SearchConfigEnum {
//任务来源 //任务来源
FIELD4("iztaskrrom","field4"), FIELD4("iztaskrrom","field4"),
//任务状态 //任务状态
FIELD16("izstatus","field16"), FIELD16("iztaskstatus","field16"),
//拜访省份/直辖市、 //拜访省份/直辖市、
PROCINCE("izvisitpro","releaseprovince"), PROCINCE("izvisitpro","releaseprovince"),
//厂商 //厂商

@ -1,8 +1,6 @@
package cn.jyjz.xiaoyao.ocr.vo; package cn.jyjz.xiaoyao.ocr.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
@ -20,9 +18,6 @@ import java.io.Serializable;
public class OcrFieldVo implements Serializable { public class OcrFieldVo implements Serializable {
private static final long serialVersionUID = 8088861709460050761L; private static final long serialVersionUID = 8088861709460050761L;
@Schema(description = "主键")
private Long id;
@Schema(description = "字段名称",required = true) @Schema(description = "字段名称",required = true)
private String name; private String name;
@ -34,16 +29,4 @@ public class OcrFieldVo implements Serializable {
@Schema(description = "是否必选",required = true) @Schema(description = "是否必选",required = true)
private Integer isrequired; private Integer isrequired;
@Schema(description = "排序字段")
private Integer sort;
@Schema(description = "是否高亮")
private Integer isHighlight;
@Schema(description = "是否可点击")
private Integer isTap;
@Schema(description = "是否隐藏")
private Integer isHide;
} }

@ -30,7 +30,7 @@ public class SearchConditionVO {
private String iztaskrrom; private String iztaskrrom;
@ApiModelProperty(value = "任务状态") @ApiModelProperty(value = "任务状态")
private String izstatus; private String iztaskstatus;
@ApiModelProperty(value = "拜访省份/直辖市、") @ApiModelProperty(value = "拜访省份/直辖市、")
private String izvisitpro; private String izvisitpro;

@ -213,16 +213,7 @@
t2.FROMUPTIME fromTime, t2.FROMUPTIME fromTime,
t2.UPDATETIME updateTime, t2.UPDATETIME updateTime,
t2.TASKID taskId, t2.TASKID taskId,
( t2.ID formId
SELECT GROUP_CONCAT(t4.ID)
FROM ocr_picture t4
WHERE t4.field8 = t1.content
AND t4.ID IN (
SELECT child.PICTUREID
FROM oa_userfinal_t final
LEFT JOIN ocr_taskchild_picture child ON final.FORMID = child.ID
)
) AS formId
from (select count(field8) count, field8 content, ID id, imgUrl from (select count(field8) count, field8 content, ID id, imgUrl
FROM ocr_picture FROM ocr_picture
where ID in (select child.PICTUREID from oa_userfinal_t final left join ocr_taskchild_picture child on final.FORMID = child.ID) where ID in (select child.PICTUREID from oa_userfinal_t final left join ocr_taskchild_picture child on final.FORMID = child.ID)

@ -226,29 +226,30 @@
</sql> </sql>
<select id="getPackagePictureInfo" resultMap="BaseResultMap"> <select id="getPackagePictureInfo" resultMap="BaseResultMap">
SELECT t2.*, SELECT t2.*,t3.*,ifnull(t5.STATSHIS, 1) historyStates,t4.STATES,t4.TASKID,t4.ID taskchildId
t3.*,
t4.STATES,
t4.TASKID,
t4.ID taskchildId,
COALESCE(
(SELECT t5.STATSHIS
FROM oa_userapprove_t t5
WHERE t5.FORMID = t4.ID
ORDER BY t5.CREATEDATE DESC
LIMIT 1),
1) AS historyStates
FROM ocr_check_duplicate_result t1 FROM ocr_check_duplicate_result t1
LEFT JOIN ocr_picture t2 ON t1.picture_id = t2.ID LEFT JOIN ocr_picture t2 ON t1.picture_id = t2.ID
left join ocr_picture_info t3 on t2.ID = t3.picture_id left join ocr_picture_info t3 on t2.ID=t3.picture_id
left join ocr_taskchild_picture t4 on t2.ID = t4.PICTUREID left join ocr_taskchild_picture t4 on t2.ID=t4.PICTUREID
left join oa_userapprove_t t5 on t4.ID=t5.FORMID and t5.TASKNAME = '${userNodeType}'
where t1.check_duplicate_id = #{packageId} where t1.check_duplicate_id = #{packageId}
and t2.suspiciousfile = 0
<if test="pictureId != null and pictureId != ''"> <if test="pictureId != null and pictureId != ''">
and t1.picture_id = #{pictureId} and t1.picture_id = #{pictureId}
</if> </if>
ORDER BY t1.max_similarity desc, t1.similarity_group_order asc, t2.submit_date_timestamp asc ORDER BY t1.max_similarity desc,t1.similarity_group_order asc, t2.submit_date_timestamp DESC
LIMIT 1 LIMIT 1
</select> </select>
<select id="getPictureNodeStatesList" resultType="cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture">
SELECT t1.*,
ifnull(t3.STATSHIS, 1) historyStates
FROM ocr_picture t1
LEFT JOIN ocr_taskchild_picture t2
on t1.ID = t2.PICTUREID
LEFT JOIN oa_userapprove_t t3 on t2.ID = t3.FORMID and t3.TASKNAME = '${userNodeType}'
where t1.ID in
<foreach collection="pictureIds" open="(" close=")" item="item" separator="," index="index">
#{item}
</foreach>
</select>
</mapper> </mapper>

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

Loading…
Cancel
Save