Merge remote-tracking branch 'origin/test' into feat/QxOcrFieldMg-20240412

# Conflicts:
#	jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrFieldController.java
#	jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrFieldService.java
#	jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrFieldServiceImpl.java
pull/110/head
15007173189@163.com 1 year ago
commit e8e6c529e2

37
.gitignore vendored

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

8
.idea/.gitignore vendored

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

@ -1,55 +0,0 @@
<?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="-parameters" />
<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="-parameters" />
<module name="jyjz-framework-security" options="-parameters" />
<module name="jyjz-framework-securityweb" options="-parameters" />
<module name="jyjz-parent" options="-parameters" />
<module name="jyjz-system" options="-parameters" />
<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>

@ -1,41 +0,0 @@
<?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-base/src/main/resources" 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-mybatisplus/src/main/resources" 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-redis/src/main/resources" 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-task/src/main/resources" 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-upload/src/main/resources" 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-common/jyjz-common-web/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-common/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-common/src/main/resources" 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-security/src/main/resources" 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-framework/jyjz-framework-securityweb/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-framework/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-framework/src/main/resources" 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-abase/src/main/resources" 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-admin/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-system/jyjz-system-authority/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-system/jyjz-system-authority/src/main/resources" 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-cms/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-system/jyjz-system-oa/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-system/jyjz-system-oa/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-system/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyjz-system/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/runstart/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/runstart/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>
</project>

@ -1,70 +0,0 @@
<?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="http://10.5.54.75:8081/repository/maven-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="nexus-75" />
<option name="name" value="nexus-75" />
<option name="url" value="http://10.5.54.75:8081/repository/maven-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="Central Repository" />
<option name="url" value="http://maven.aliyun.com/nexus/content/repositories/central/" />
</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="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="nexus-75" />
<option name="name" value="nexus-75" />
<option name="url" value="http://maven.aliyun.com/nexus/content/groups/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="snapshots" />
<option name="name" value="snapshots" />
<option name="url" value="https://maven.aliyun.com/nexus/content/groups/public" />
</remote-repository>
</component>
</project>

@ -1,14 +0,0 @@
<?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>

@ -1,124 +0,0 @@
<?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>

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

@ -1,165 +0,0 @@
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

@ -0,0 +1,237 @@
<#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>

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

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

@ -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,20 +91,47 @@
<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 checkENG="true" minlength="2" maxlength="50"/> <input type="text" id="deptno" name="deptno" placeholder="业务主体编码" data-required="1" class="form-control" required 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,13 +94,41 @@
<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" readonly="readonly" class="form-control" required checkENG="true" minlength="2" maxlength="50"/> <input type="text" id="deptno" name="deptno" placeholder="业务主体编码" data-required="1" class="form-control" required 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">
@ -180,8 +208,8 @@
$(document).ready(function () { $(document).ready(function () {
parent.axgetXiaoyao("${ctx}/backstage/admin/department/showDeptJsTree" ,null,false,function (data) { parent.axgetXiaoyao("${ctx}/backstage/admin/department/showDeptJsTree" ,null,false,function (datatree) {
_deptTree = $.fn.zTree.init($("#departZtreeUl"),setting, data); _deptTree = $.fn.zTree.init($("#departZtreeUl"),setting, datatree);
_deptTree.expandAll(true); _deptTree.expandAll(true);
@ -194,6 +222,8 @@
$("#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));
@ -209,6 +239,12 @@
$("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,12 +89,43 @@
</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: {
@ -123,13 +154,103 @@
$("#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)){
var _tableListDepartment; parent.toastr.error("未选择流程。");
}else{
parent.axpostXiaoyao("${ctx}/backstage/admin/department/updateflowable",{"Processdefinitionid":Processdefinitionid,"deptid":deptid,"category":category},true ,function (data) {
if(data.code == "OK"){
refreshTable();
}
});
}
}
function changeFlowRadio(category,processdefinitionid){
$("#caProcessdefinitionid").val(processdefinitionid);
$("#category").val(category);
}
var _tableListDepartment;
var jsptoolbar = ''; var 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){
@ -168,23 +289,42 @@
}, },
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,
{ width:150,valign: "middle",field:'departname',title:'部门名称',sortable:true}, formatter:function(value,oData,index) {
{ width:150,valign: "middle",field:'departdesc',title:'部门描述',sortable:true}, var listOperation = oData.processdefinitionid == null ? "否" : "是";
{ width:150,valign: "middle",field:'enabled',title:'是否启用',sortable:true,
formatter:function (value,oData,index) {
var listOperation = "";
if(oData.enabled == 1){ return listOperation;
listOperation = "启用"; }
}else { },
listOperation = "停用"; { width:150,valign: "middle",field:'enabled',title:'是否启用',sortable:true,
} formatter:function (value,oData,index) {
var listOperation = "";
return listOperation; if(oData.enabled == 1){
listOperation = "启用";
}else {
listOperation = "停用";
} }
},
{ width:150,valign: "middle",field:'sorting',title:'排序',sortable:true}, return listOperation;
}
},
{ width:150,valign: "middle",field:'sorting',title:'排序',sortable:true},
{ {
width:200, width:200,
field: 'id', field: 'id',
@ -196,6 +336,8 @@
$(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;
} }
} }
@ -222,11 +364,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() + "";

@ -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="departmentId" id="departmentId" type="hidden"> <input name="departmentIds" id="departmentIds" 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,11 +154,7 @@
</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>
@ -294,8 +290,41 @@
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));
@ -308,6 +337,22 @@
$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
@ -323,13 +368,7 @@
$(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': {
@ -355,16 +394,7 @@
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="departmentId" id="departmentId" type="hidden"> <input name="departmentIds" id="departmentIds" 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,11 +157,7 @@
</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>
@ -286,8 +282,40 @@
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': {
@ -316,6 +344,21 @@
$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
@ -331,13 +374,7 @@
$(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 () {
@ -347,20 +384,6 @@
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);
@ -379,16 +402,23 @@
$("#email").val(usermodel.email); $("#email").val(usermodel.email);
$("#nationid").val(usermodel.nationid); $("#nationid").val(usermodel.nationid);
var nodeId = usermodel.departmentId; var tempId = "";
$.each(usermodel.deptlist,function (index,deptDate){
if(undefined != nodeId && null != nodeId){ if(null != deptDate){
var node = _deptTree.getNodeByParam("id",nodeId); var node = _deptTree.getNodeByParam("id",deptDate.id);
_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);
@ -402,12 +432,6 @@
$("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();

@ -101,7 +101,36 @@ public class DepartmentController extends BaseController{
this.departmentService.clearDeptCacheById(tab.getId().toString()); this.departmentService.clearDeptCacheById(tab.getId().toString());
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,8 +196,10 @@ 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); int isok = this.userService.save(tab, rolesid,departmentIds);
if (isok > 0) { if (isok > 0) {
String[] tenantselect = request.getParameterValues("tenantselect"); String[] tenantselect = request.getParameterValues("tenantselect");
@ -252,8 +254,10 @@ 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); int isok = this.userService.editUser(tab, rolesid,departmentIds);
if (isok > 0) { if (isok > 0) {
String[] tenantselect = request.getParameterValues("tenantselect"); String[] tenantselect = request.getParameterValues("tenantselect");

@ -52,6 +52,7 @@ 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只有一层节点记录上一级节点主键")
@ -129,7 +130,38 @@ public class Department implements BaseDto,java.io.Serializable {
@Schema(description = "更新时间") @Schema(description = "更新时间")
@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;
@ -165,7 +197,15 @@ 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) // @TableField(exist = false)
List<Tenant> tenantList; // 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();
if (it.hasNext()) { while (it.hasNext()) {
Department dept = it.next(); Department dept = it.next();
if (null != sb && sb.length() > 0) { if (null != sb && sb.length() > 0) {

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

@ -205,7 +205,18 @@ 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){ public int save(User user, String[] rolesid,String departmentIds){
//spring密码加密啊算法 //spring密码加密啊算法
BCryptPasswordEncoder bcryptPasswordEncoder = new BCryptPasswordEncoder(); BCryptPasswordEncoder bcryptPasswordEncoder = new BCryptPasswordEncoder();
@ -299,12 +299,18 @@ public class UserServiceImpl extends BaseServiceImpl<UserMybatisDao,User> imple
isok = this.usermybatisdao.insert(user); isok = this.usermybatisdao.insert(user);
//保存用户是否成功 //保存用户是否成功
if(isok > 0){ if(isok > 0){
Userobject uo = new Userobject();
uo.setUserid(user.getId()); String[] deptids = departmentIds.split(",");
uo.setDepartid(user.getDepartmentId());
//保存用户与部门的关系 for(String dids:deptids){
Userobject uo = new Userobject();
uo.setUserid(user.getId());
uo.setDepartid(Long.parseLong(dids));
//保存用户与部门的关系
this.userobjectMybatisDao.insert(uo);
}
this.userobjectMybatisDao.insert(uo);
//判断接收的角色是否为空,如果为空用户角色使用默认角色 //判断接收的角色是否为空,如果为空用户角色使用默认角色
if(null != rolesid && rolesid.length > 0){ if(null != rolesid && rolesid.length > 0){
@ -426,7 +432,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMybatisDao,User> imple
*/ */
@Override @Override
@Transactional @Transactional
public int editUser(User user,String[] rolesid){ public int editUser(User user,String[] rolesid,String departmentIds){
//获得数据库中用户信息 //获得数据库中用户信息
User olduser = this.usermybatisdao.selectById(user.getId()); User olduser = this.usermybatisdao.selectById(user.getId());
@ -442,17 +448,27 @@ 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);
Userobject uo = new Userobject(); String[] deptids = departmentIds.split(",");
uo.setUserid(user.getId());
uo.setDepartid(user.getDepartmentId()); for(String dids:deptids){
//保存用户与部门的关系 Userobject uo = new Userobject();
this.userobjectMybatisDao.insert(uo); uo.setUserid(user.getId());
} uo.setDepartid(Long.parseLong(dids));
//保存用户与部门的关系
this.userobjectMybatisDao.insert(uo);
}
// Userobject uo = new Userobject();
// uo.setUserid(user.getId());
// uo.setDepartid(user.getDepartmentId());
// //保存用户与部门的关系
// this.userobjectMybatisDao.insert(uo);
// }
//判断接收的角色是否为空 //判断接收的角色是否为空
if(null != rolesid && rolesid.length > 0){ if(null != rolesid && rolesid.length > 0){
@ -616,7 +632,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;

@ -75,16 +75,16 @@ public class UserTokenServiceImpl implements UserTokenService {
private UserTenantService userTenantService; private UserTenantService userTenantService;
@Resource @Resource
private DepartmentService departmentService; private DepartmentService departmentService;
@Resource @Resource
private OauthuserService oauthuserService; private OauthuserService oauthuserService;
@Resource @Resource
private UserTokenOnlineService userTokenOnlineService; private UserTokenOnlineService userTokenOnlineService;
@Autowired @Autowired
private TenantService tenantService; private TenantService tenantService;
public User findByLoginname(String loginname) { public User findByLoginname(String loginname) {
cn.jyjz.xiaoyao.admin.dataobject.User userData = userService.findByLoginname(loginname); cn.jyjz.xiaoyao.admin.dataobject.User userData = userService.findByLoginname(loginname);
@ -120,7 +120,7 @@ public class UserTokenServiceImpl implements UserTokenService {
} }
public User findByUserid(Long userid) { public User findByUserid(Long userid) {
cn.jyjz.xiaoyao.admin.dataobject.User userData = userService.findById(userid); cn.jyjz.xiaoyao.admin.dataobject.User userData = userService.findById(userid);
if(null == userData){ if(null == userData){
return null; return null;
@ -130,7 +130,7 @@ public class UserTokenServiceImpl implements UserTokenService {
//userData.setDepartname(department.getDepartname()); //userData.setDepartname(department.getDepartname());
userData.setDepartmentRootId(department.getId()); userData.setDepartmentRootId(department.getId());
} }
User user = BeanUtil.copyProperties(userData,User.class); User user = BeanUtil.copyProperties(userData,User.class);
return user; return user;
} }
@ -174,7 +174,7 @@ public class UserTokenServiceImpl implements UserTokenService {
return null; return null;
} }
AdminUserModel adminUserModel = (AdminUserModel) this.getSessionUserFromCache(userToken.getTokenid()); AdminUserModel adminUserModel = (AdminUserModel) this.getSessionUserFromCache(userToken.getTokenid());
if(null != adminUserModel){ if(null != adminUserModel){
return adminUserModel; return adminUserModel;
} }
@ -238,11 +238,11 @@ 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);
//查询第三方登录用户对象 //查询第三方登录用户对象
List<Oauthuser> oauthuserList = oauthuserService.selectByUserId(userVo.getId().toString()); List<Oauthuser> oauthuserList = oauthuserService.selectByUserId(userVo.getId().toString());
userVo.setOauthUserList(oauthuserList); userVo.setOauthUserList(oauthuserList);
@ -262,7 +262,7 @@ public class UserTokenServiceImpl implements UserTokenService {
Object objectflow = flowableUserLoginService.flowableUserLogin(adminUserModel.getUser()); Object objectflow = flowableUserLoginService.flowableUserLogin(adminUserModel.getUser());
adminUserModel.setFlowableUser(objectflow); adminUserModel.setFlowableUser(objectflow);
} }
return adminUserModel; return adminUserModel;
} }
@ -289,39 +289,39 @@ public class UserTokenServiceImpl implements UserTokenService {
*/ */
public ResultVo refreshToken(UserToken userToken, String logintoken, HttpServletRequest request){ public ResultVo refreshToken(UserToken userToken, String logintoken, HttpServletRequest request){
userToken = JwtUtils.decode(logintoken); userToken = JwtUtils.decode(logintoken);
log.error("TokenExpiredException-------刷新token===============================2====logintoken==={}--",logintoken); log.error("TokenExpiredException-------刷新token===============================2====logintoken==={}--",logintoken);
//原始缓存 //原始缓存
String sourcetokenid = userToken.getTokenid(); String sourcetokenid = userToken.getTokenid();
//删除原缓存信息 //删除原缓存信息
iCacheManager.remove(CacheConstants.USER_MODEL_NAME,sourcetokenid); iCacheManager.remove(CacheConstants.USER_MODEL_NAME,sourcetokenid);
log.error("TokenExpiredException-------刷新token===============================4====userToken==={}--",userToken); log.error("TokenExpiredException-------刷新token===============================4====userToken==={}--",userToken);
if(!UserUtils.validateId(userToken)){ if(!UserUtils.validateId(userToken)){
return ResultVoUtil.error(); return ResultVoUtil.error();
} }
//刷新缓存 //刷新缓存
String newToken = JwtUtils.getRefreshToken(userToken); String newToken = JwtUtils.getRefreshToken(userToken);
log.error("TokenExpiredException-------刷新token===============================3====newToken==={}--",newToken); log.error("TokenExpiredException-------刷新token===============================3====newToken==={}--",newToken);
if(StringUtils.isBlank(newToken)){ if(StringUtils.isBlank(newToken)){
SecurityContextHolder.getContext().setAuthentication(null); SecurityContextHolder.getContext().setAuthentication(null);
return ResultVoUtil.error(); return ResultVoUtil.error();
} }
//重新查询用户基本信息 //重新查询用户基本信息
User user = this.findByLoginname(userToken.getLoginname()); User user = this.findByLoginname(userToken.getLoginname());
AdminUserModel adminUserModel = (AdminUserModel) this.formatUserToAdminUserModel(user); AdminUserModel adminUserModel = (AdminUserModel) this.formatUserToAdminUserModel(user);
//用户信息缓存 //用户信息缓存
this.saveSessionUser(adminUserModel); this.saveSessionUser(adminUserModel);
//更新S_USERONLINE_T 表信息 //更新S_USERONLINE_T 表信息
this.userTokenOnlineService.updateModel(sourcetokenid,adminUserModel.getId()); this.userTokenOnlineService.updateModel(sourcetokenid,adminUserModel.getId());
//用户名不等于空 并且未认证过 进行登录验证 //用户名不等于空 并且未认证过 进行登录验证
if (adminUserModel != null) { if (adminUserModel != null) {
// 验证通过 构建Secruity登录对象 // 验证通过 构建Secruity登录对象
@ -331,14 +331,14 @@ public class UserTokenServiceImpl implements UserTokenService {
log.error("TokenExpiredException-------刷新token===============================1={}",token); log.error("TokenExpiredException-------刷新token===============================1={}",token);
return ResultVoUtil.success(token); return ResultVoUtil.success(token);
} }
/** /**
* spring * spring
* @param obj * @param obj
* @param request * @param request
*/ */
public void updateAuthentication(Object obj,HttpServletRequest request){ public void updateAuthentication(Object obj,HttpServletRequest request){
AdminUserModel adminUserModel = (AdminUserModel) obj; AdminUserModel adminUserModel = (AdminUserModel) obj;
//用户名不等于空 并且未认证过 进行登录验证 //用户名不等于空 并且未认证过 进行登录验证
if (adminUserModel != null) { if (adminUserModel != null) {
@ -383,7 +383,7 @@ public class UserTokenServiceImpl implements UserTokenService {
return true; return true;
} }
/** /**
* *
* @param otherno * @param otherno
@ -414,7 +414,7 @@ public class UserTokenServiceImpl implements UserTokenService {
return userTenantService.listLoginNameCount(otherno,loginname); return userTenantService.listLoginNameCount(otherno,loginname);
} }
/** /**
* *
* @param otherno * @param otherno
@ -432,9 +432,9 @@ public class UserTokenServiceImpl implements UserTokenService {
*/ */
@Override @Override
public boolean getTenantStatus(String agentcode){ public boolean getTenantStatus(String agentcode){
LambdaQueryWrapper<Tenant> tenantLambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Department> tenantLambdaQueryWrapper = new LambdaQueryWrapper<>();
tenantLambdaQueryWrapper.eq(Tenant::getOtherno,agentcode); tenantLambdaQueryWrapper.eq(Department::getDescription,agentcode);
Tenant tenant = tenantService.getOne(tenantLambdaQueryWrapper); Department department = departmentService.getOne(tenantLambdaQueryWrapper);
return tenant != null && tenant.getStatus() == 0; return department != null && department.getEnabled() == 1;
} }
} }

@ -26,6 +26,14 @@
<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">
@ -53,6 +61,14 @@
<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">
@ -79,7 +95,15 @@
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">
@ -109,6 +133,14 @@
<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
@ -187,7 +219,15 @@
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-->
@ -216,7 +256,15 @@
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 RIGHT JOIN S_USEROBJECT_T uo ON uo.USERID = u.ID from S_USER_T u
${ew.customSqlSegment} ${ew.customSqlSegment}
</select> </select>

@ -42,66 +42,41 @@
</trim> </trim>
</where> </where>
<if test="page != null"> <if test="page != null">
<if test="page.sortname != null"> order by ${page.sortname} ${page.sortorder}</if> <if test="page.sortname != null"> order by ${page.sortname} ${page.sortorder}</if>
limit ${page.start}, ${page.Pagesize} limit ${page.start}, ${page.Pagesize}
</if> </if>
</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 select count(u.ID) from s_user_t u
count(ten.ID) left join s_userobject_t uo on u.id = uo.USERID
from left join s_department_t dm on dm.id = uo.DEPARTID
S_TENANT_T ten where u.LOGINNAME =#{loginname} and dm.DESCRIPTION = #{otherno}
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(ten.ID) count(dm.ID)
from from
S_TENANT_T ten s_department_t dm
where where
ten.OTHERNO = #{otherno} dm.DESCRIPTION = #{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 select count(u.ID) from s_user_t u
count(ten.ID) left join s_userobject_t uo on u.id = uo.USERID
from left join s_department_t dm on dm.id = uo.DEPARTID
S_TENANT_T ten where u.LOGINNAME =#{loginname} and dm.DESCRIPTION = #{otherno}
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 select count(u.ID) from s_user_t u
count(ten.ID) left join s_userobject_t uo on u.id = uo.USERID
from left join s_department_t dm on dm.id = uo.DEPARTID
S_TENANT_T ten where u.MOBILE =#{mobile} and dm.DESCRIPTION = #{otherno}
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,5 +1,7 @@
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;
@ -21,11 +23,13 @@ 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();
FlowableEntityEventImpl flowableEntityEvent = (FlowableEntityEventImpl) flowableEvent; FlowableEntityEventImpl flowableEntityEvent = (FlowableEntityEventImpl) flowableEvent;
Object object = flowableEntityEvent.getEntity(); Object object = flowableEntityEvent.getEntity();
if(object instanceof ProcessDefinitionEntity){ if(object instanceof ProcessDefinitionEntity){
ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity)object; ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity)object;
@ -37,9 +41,17 @@ 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,9 +310,11 @@ public class FlowTaskController extends BaseController {
searchQuery.addLike("fromtaskname", taskName); searchQuery.addLike("fromtaskname", taskName);
} }
//获取用户预设检索条件id //获取用户预设检索条件id,如果存在检索条件,则高级检索失效
String userSearchId = request.getParameter("userSearchId"); String 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(","))) {
@ -381,10 +383,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);
@ -420,17 +422,22 @@ 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);
@ -451,11 +458,11 @@ public class FlowTaskController extends BaseController {
// 如果开始时间不为空,则将其放入查询条件中 // 如果开始时间不为空,则将其放入查询条件中
if (startTimeStamp != null) { if (startTimeStamp != null) {
searchQuery.addGreater("createdateStart", startTimeStamp); searchQuery.addGreater("fromuptimeStart", startTimeStamp);
} }
// 如果结束时间不为空,则将其放入查询条件中 // 如果结束时间不为空,则将其放入查询条件中
if (endTimeStamp != null) { if (endTimeStamp != null) {
searchQuery.addLess("createdateEnd", endTimeStamp); searchQuery.addLess("fromuptimeEnd", endTimeStamp);
} }
} catch (ParseException e) { } catch (ParseException e) {
// 处理日期解析异常 // 处理日期解析异常
@ -472,7 +479,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.getId().toString()); searchQuery.addEqual("thisLoginUserid", user.getLoginname());
searchQuery.addEqual("tenantid", tenantId); searchQuery.addEqual("tenantid", tenantId);
} }
String searchId = request.getParameter("searchId"); String searchId = request.getParameter("searchId");
@ -629,7 +636,8 @@ public class FlowTaskController extends BaseController {
public ResultVo removeTask(HttpServletRequest request) { public ResultVo removeTask(HttpServletRequest request) {
String fromid = request.getParameter("fromid"); String fromid = request.getParameter("fromid");
String taskid = request.getParameter("taskid"); String taskid = request.getParameter("taskid");
return flowTaskService.removeTask(fromid, taskid); String deptid = request.getParameter("deptid");
return flowTaskService.removeTask(fromid, taskid,deptid);
//return ResultVoUtil.success(); //return ResultVoUtil.success();
} }
@ -649,7 +657,8 @@ public class FlowTaskController extends BaseController {
public ResultVo historyTask(HttpServletRequest request) { public ResultVo historyTask(HttpServletRequest request) {
String fromid = request.getParameter("fromid"); String fromid = request.getParameter("fromid");
String taskid = request.getParameter("buessinessno"); String taskid = request.getParameter("buessinessno");
return flowTaskService.removeTask(fromid, taskid); String deptid = request.getParameter("deptid");
return flowTaskService.removeTask(fromid, taskid,deptid);
//return ResultVoUtil.success(); //return ResultVoUtil.success();
} }

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

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

@ -54,7 +54,7 @@ public interface IFlowTaskService {
* @param * @param
* @param processDefinition * @param processDefinition
*/ */
public void updateAssignee(String processInstanceId, String processDefinitionId, ProcessDefinition processDefinition); public void updateAssignee(String processInstanceId, String processDefinitionId, ProcessDefinition processDefinition,String deptid);
void sendMsg(OcrTaskchildPicture model, UserToken userToken); void sendMsg(OcrTaskchildPicture model, UserToken userToken);
void finishedList(PageUtils pageUtils, HttpServletRequest request); void finishedList(PageUtils pageUtils, HttpServletRequest request);
@ -142,7 +142,7 @@ public interface IFlowTaskService {
* *
* @param processInstanceId * @param processInstanceId
*/ */
public FlowTaskCompleteVO updateNowTaskAssignee(String processInstanceId, String processDefinitionId); public FlowTaskCompleteVO updateNowTaskAssignee(String processInstanceId, String processDefinitionId,String deptid);
/** /**
* *
@ -170,7 +170,7 @@ public interface IFlowTaskService {
* *
* @param fromid * @param fromid
*/ */
public ResultVo removeTask(String fromid, String taskid); public ResultVo removeTask(String fromid, String taskid,String deptid);
/** /**
* *

@ -45,7 +45,7 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
private UserViewapproeService userViewApproeService; private UserViewapproeService userViewApproeService;
@Override @Override
public boolean startProcessInstanceById(String procDefId, Map<String, Object> variables, HttpServletRequest request, String formid, String servicename) { public boolean startProcessInstanceById(String procDefId, Map<String, Object> variables, HttpServletRequest request, String formid, String servicename,String deptid) {
IFormCustomService iFormCustomService = null; IFormCustomService iFormCustomService = null;
if (StringUtils.isNotBlank(servicename)) { if (StringUtils.isNotBlank(servicename)) {
@ -87,7 +87,7 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
processInstance = runtimeService.startProcessInstanceById(procDefId, businessKey, variables); processInstance = runtimeService.startProcessInstanceById(procDefId, businessKey, variables);
if (null != iFormCustomService) { if (null != iFormCustomService) {
FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId()); FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId(),deptid);
if (null == flowTaskCompleteVO) { if (null == flowTaskCompleteVO) {
throw new ServiceException("没有审批人,请联系管理员,流程定义:" + businessKey); throw new ServiceException("没有审批人,请联系管理员,流程定义:" + businessKey);
@ -128,7 +128,7 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
} }
@Override @Override
public boolean startProcessInstanceById(String procDefId, String userName, String createuser, String formid, String servicename) { public boolean startProcessInstanceById(String procDefId, String userName, String createuser, String formid, String servicename,String depti) {
IFormCustomService iFormCustomService = null; IFormCustomService iFormCustomService = null;
if (StringUtils.isNotBlank(servicename)) { if (StringUtils.isNotBlank(servicename)) {
@ -159,7 +159,7 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
processInstance = runtimeService.startProcessInstanceById(procDefId, businessKey, variables); processInstance = runtimeService.startProcessInstanceById(procDefId, businessKey, variables);
if (null != iFormCustomService) { if (null != iFormCustomService) {
FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId()); FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId(),depti);
if (null == flowTaskCompleteVO) { if (null == flowTaskCompleteVO) {
throw new ServiceException("没有审批人,请联系管理员,流程定义:" + businessKey); throw new ServiceException("没有审批人,请联系管理员,流程定义:" + businessKey);

@ -33,6 +33,8 @@ 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.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;
@ -40,6 +42,7 @@ 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;
@ -454,7 +457,7 @@ 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, approve,approve.getDeptid());
} else { } else {
disposeFailureTask(task, flowTaskInfo.getFormId(), variables, approve); disposeFailureTask(task, flowTaskInfo.getFormId(), variables, approve);
@ -474,10 +477,11 @@ 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, FlowApprove approve,String deptid) throws Exception {
//进入下一个节点 //进入下一个节点
taskService.complete(task.getId(), variables); taskService.complete(task.getId(), variables);
updateAssignee(task.getProcessInstanceId(), task.getProcessDefinitionId(), processDefinition); updateAssignee(task.getProcessInstanceId(), task.getProcessDefinitionId(), processDefinition,deptid);
String category = processDefinition.getCategory(); String category = processDefinition.getCategory();
Category categoryDto = this.categoryService.getCategory(category); Category categoryDto = this.categoryService.getCategory(category);
IFormCustomService iFormCustomService = SpringUtils.getBean(categoryDto.getServicename()); IFormCustomService iFormCustomService = SpringUtils.getBean(categoryDto.getServicename());
@ -488,23 +492,24 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
taskData = taskList.get(0); taskData = taskList.get(0);
} }
OcrTaskchildPicture childPicture = ocrTaskchildPictureService.getById(Long.parseLong(formId)); 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);
ocrTaskchildPictureService.updateById(model);
OcrPicture picture = ocrPictureService.getById(model.getPictureid()); OcrPicture picture = ocrPictureService.getById(model.getPictureid());
ocrTaskchildPictureService.sendFlowTaskResult(childPicture, picture, approve); 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);
} }
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());
@ -513,7 +518,8 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
/** /**
* *
*/ */
private void disposeFailureTask(Task task, String formId, Map<String, Object> variables, FlowApprove approve) throws Exception { private void disposeFailureTask(Task task, String formId, Map<String, Object> variables, FlowApprove approve) throws
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();
@ -542,6 +548,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
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()); OcrPicture picture = ocrPictureService.getById(taskchildPicture.getPictureid());
ocrTaskchildPictureService.sendFlowTaskResult(taskchildPicture, picture, approve); ocrTaskchildPictureService.sendFlowTaskResult(taskchildPicture, picture, approve);
@ -581,10 +588,11 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* *
* @param processDefinition * @param processDefinition
*/ */
public void updateAssignee(String processInstanceId, String processDefinitionId, ProcessDefinition processDefinition) { public void updateAssignee(String processInstanceId, String processDefinitionId, ProcessDefinition
processDefinition,String deptid) {
//如果是多个候选人或者是候选组,做任务拾取 //如果是多个候选人或者是候选组,做任务拾取
FlowTaskCompleteVO flowTaskCompleteVO = updateNowTaskAssignee(processInstanceId, processDefinitionId); FlowTaskCompleteVO flowTaskCompleteVO = updateNowTaskAssignee(processInstanceId, processDefinitionId,deptid);
if (null != flowTaskCompleteVO) { if (null != flowTaskCompleteVO) {
@ -673,7 +681,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* *
* @param processInstanceId * @param processInstanceId
*/ */
public FlowTaskCompleteVO updateNowTaskAssignee(String processInstanceId, String processDefinitionId) { public FlowTaskCompleteVO updateNowTaskAssignee(String processInstanceId, String processDefinitionId,String deptid) {
FlowTaskCompleteVO flowTaskCompleteVO = null; FlowTaskCompleteVO flowTaskCompleteVO = null;
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId); BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
@ -710,7 +718,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
//发起人员登录账号 //发起人员登录账号
String startUserId = hi.getStartUserId(); String startUserId = hi.getStartUserId();
//通过候选组主键,查询审批人员信息,并自动拾取 //通过候选组主键,查询审批人员信息,并自动拾取
loginuser = candidateuserService.getClaimUser(startUserId, groupid); loginuser = candidateuserService.getClaimUser(startUserId, groupid,deptid);
if (StringUtils.isNotBlank(loginuser)) { if (StringUtils.isNotBlank(loginuser)) {
taskService.claim(task.getId(), loginuser); taskService.claim(task.getId(), loginuser);
} }
@ -979,6 +987,7 @@ 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());
@ -992,97 +1001,96 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
paramterPage.setSortorder("DESC"); paramterPage.setSortorder("DESC");
} }
Long count = ocrTaskchildPictureService.listFinalCount(query);
query.put("page", paramterPage); query.put("page", paramterPage);
Long count = ocrTaskchildPictureService.listFinalCount(query);
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获取节点元素 // // 根据节点定义id获取节点元素
FlowElement flowElement = bpmnModel.getFlowElement(taskDefinitionKey); // FlowElement flowElement = bpmnModel.getFlowElement(taskDefinitionKey);
if (flowElement instanceof UserTask) { // if (flowElement instanceof UserTask) {
UserTask userTask = (UserTask) flowElement; // UserTask userTask = (UserTask) flowElement;
//
taskchildPicture.setDocumentation(userTask.getDocumentation()); // taskchildPicture.setDocumentation(userTask.getDocumentation());
} // }
} // }
//
//查询历史 // //查询历史
List<HistoricTaskInstanceDto> historicTaskInstanceDtos = new ArrayList<>(); // List<HistoricTaskInstanceDto> historicTaskInstanceDtos = new ArrayList<>();
// 查询当前任务的流转信息 // // 查询当前任务的流转信息
List<HistoricTaskInstance> taskHiInstances = historyService.createHistoricTaskInstanceQuery() // List<HistoricTaskInstance> taskHiInstances = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(taskchildPicture.getProcessinstanceid()) // .processInstanceId(taskchildPicture.getProcessinstanceid())
.includeProcessVariables() // .includeProcessVariables()
.orderByHistoricTaskInstanceStartTime() // .orderByHistoricTaskInstanceStartTime()
.asc() // .asc()
.list(); // .list();
for (HistoricTaskInstance taskHiInstance : taskHiInstances) { // for (HistoricTaskInstance taskHiInstance : taskHiInstances) {
HistoricTaskInstanceDto dto = new HistoricTaskInstanceDto(); // HistoricTaskInstanceDto dto = new HistoricTaskInstanceDto();
dto.setTaskId(taskHiInstance.getId()); // dto.setTaskId(taskHiInstance.getId());
dto.setTaskName(taskHiInstance.getName()); // dto.setTaskName(taskHiInstance.getName());
dto.setFinishTime(taskHiInstance.getEndTime()); // dto.setFinishTime(taskHiInstance.getEndTime());
if (taskHiInstance.getDurationInMillis() != null) { // if (taskHiInstance.getDurationInMillis() != null) {
dto.setDuration(taskHiInstance.getDurationInMillis() / 1000 + "秒"); // dto.setDuration(taskHiInstance.getDurationInMillis() / 1000 + "秒");
} // }
dto.setTaskDefKey(taskHiInstance.getTaskDefinitionKey()); // dto.setTaskDefKey(taskHiInstance.getTaskDefinitionKey());
//
//Map<String,Object> variables = taskHiInstance.getTaskLocalVariables(); // //Map<String,Object> variables = taskHiInstance.getTaskLocalVariables();
//
Map<String, Object> variables = taskHiInstance.getProcessVariables(); // Map<String, Object> variables = taskHiInstance.getProcessVariables();
//
if (null != variables && null != variables.get("approvd")) { // if (null != variables && null != variables.get("approvd")) {
dto.setState(variables.get("approvd").toString()); // dto.setState(variables.get("approvd").toString());
} // }
//
if (StringUtils.isNotBlank(taskHiInstance.getAssignee())) { // if (StringUtils.isNotBlank(taskHiInstance.getAssignee())) {
if (SystemConstantsOa.OA_TASK_SKIP_ASSIGINE.equals(taskHiInstance.getAssignee())) { // if (SystemConstantsOa.OA_TASK_SKIP_ASSIGINE.equals(taskHiInstance.getAssignee())) {
dto.setAssigneeName(taskHiInstance.getAssignee()); // dto.setAssigneeName(taskHiInstance.getAssignee());
} else { // } else {
User user1 = userService.findByLoginname(taskHiInstance.getAssignee()); // User user1 = userService.findByLoginname(taskHiInstance.getAssignee());
//
dto.setAssigneeName(user1.getUsername()); // dto.setAssigneeName(user1.getUsername());
} // }
//
} // }
//
BpmnModel bpmnModel = repositoryService.getBpmnModel(taskchildPicture.getProcessdefinitionid()); // BpmnModel bpmnModel = repositoryService.getBpmnModel(taskchildPicture.getProcessdefinitionid());
//
// // 根据节点定义id获取节点元素 //// // 根据节点定义id获取节点元素
FlowElement flowElement = bpmnModel.getFlowElement(taskHiInstance.getTaskDefinitionKey()); // 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 找到对应的 审批意见 // // 还需要根据 HistoricTaskInstance 找到对应的 审批意见
List<Comment> processInstanceComments = taskService.getProcessInstanceComments(taskchildPicture.getProcessinstanceid()); // List<Comment> processInstanceComments = taskService.getProcessInstanceComments(taskchildPicture.getProcessinstanceid());
for (Comment comment : processInstanceComments) { // for (Comment comment : processInstanceComments) {
//
if (comment.getTaskId().equals(taskHiInstance.getId())) { // if (comment.getTaskId().equals(taskHiInstance.getId())) {
// 审批意见 // // 审批意见
String fullMessage = comment.getFullMessage(); // String fullMessage = comment.getFullMessage();
dto.setComment(fullMessage); // dto.setComment(fullMessage);
} // }
} // }
historicTaskInstanceDtos.add(dto); // historicTaskInstanceDtos.add(dto);
} // }
taskchildPicture.setTransferRecords(historicTaskInstanceDtos); // taskchildPicture.setTransferRecords(historicTaskInstanceDtos);
} // }
} // }
pageUtils.setTotalCount(count.intValue()); pageUtils.setTotalCount(count.intValue());
pageUtils.setList(list); pageUtils.setList(list);
@ -1295,7 +1303,8 @@ 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 pageUtils, String userSearchId) { public void getMyProcessInstances(User user, String tenantId, Map<String, Object> searchQuery, PageUtils
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());
@ -1344,91 +1353,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获取节点元素 // // 根据节点定义id获取节点元素
FlowElement flowElement = bpmnModel.getFlowElement(taskDefinitionKey); // FlowElement flowElement = bpmnModel.getFlowElement(taskDefinitionKey);
if (flowElement instanceof UserTask) { // if (flowElement instanceof UserTask) {
UserTask userTask = (UserTask) flowElement; // UserTask userTask = (UserTask) flowElement;
//
taskchildPicture.setDocumentation(userTask.getDocumentation()); // taskchildPicture.setDocumentation(userTask.getDocumentation());
} // }
} // }
//
//查询历史 // //查询历史
List<HistoricTaskInstanceDto> historicTaskInstanceDtos = new ArrayList<>(); // List<HistoricTaskInstanceDto> historicTaskInstanceDtos = new ArrayList<>();
// 查询当前任务的流转信息 // // 查询当前任务的流转信息
List<HistoricTaskInstance> taskHiInstances = historyService.createHistoricTaskInstanceQuery() // List<HistoricTaskInstance> taskHiInstances = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(taskchildPicture.getProcessinstanceid()) // .processInstanceId(taskchildPicture.getProcessinstanceid())
.includeProcessVariables() // .includeProcessVariables()
.orderByHistoricTaskInstanceStartTime() // .orderByHistoricTaskInstanceStartTime()
.asc() // .asc()
.list(); // .list();
for (HistoricTaskInstance taskHiInstance : taskHiInstances) { // for (HistoricTaskInstance taskHiInstance : taskHiInstances) {
HistoricTaskInstanceDto dto = new HistoricTaskInstanceDto(); // HistoricTaskInstanceDto dto = new HistoricTaskInstanceDto();
dto.setTaskId(taskHiInstance.getId()); // dto.setTaskId(taskHiInstance.getId());
dto.setTaskName(taskHiInstance.getName()); // dto.setTaskName(taskHiInstance.getName());
dto.setFinishTime(taskHiInstance.getEndTime()); // dto.setFinishTime(taskHiInstance.getEndTime());
if (taskHiInstance.getDurationInMillis() != null) { // if (taskHiInstance.getDurationInMillis() != null) {
dto.setDuration(taskHiInstance.getDurationInMillis() / 1000 + "秒"); // dto.setDuration(taskHiInstance.getDurationInMillis() / 1000 + "秒");
} // }
dto.setTaskDefKey(taskHiInstance.getTaskDefinitionKey()); // dto.setTaskDefKey(taskHiInstance.getTaskDefinitionKey());
//
//Map<String,Object> variables = taskHiInstance.getTaskLocalVariables(); // //Map<String,Object> variables = taskHiInstance.getTaskLocalVariables();
//
Map<String, Object> variables = taskHiInstance.getProcessVariables(); // Map<String, Object> variables = taskHiInstance.getProcessVariables();
//
if (null != variables && null != variables.get("approvd")) { // if (null != variables && null != variables.get("approvd")) {
dto.setState(variables.get("approvd").toString()); // dto.setState(variables.get("approvd").toString());
} // }
//
if (StringUtils.isNotBlank(taskHiInstance.getAssignee())) { // if (StringUtils.isNotBlank(taskHiInstance.getAssignee())) {
if (SystemConstantsOa.OA_TASK_SKIP_ASSIGINE.equals(taskHiInstance.getAssignee())) { // if (SystemConstantsOa.OA_TASK_SKIP_ASSIGINE.equals(taskHiInstance.getAssignee())) {
dto.setAssigneeName(taskHiInstance.getAssignee()); // dto.setAssigneeName(taskHiInstance.getAssignee());
} else { // } else {
User user1 = userService.findByLoginname(taskHiInstance.getAssignee()); // User user1 = userService.findByLoginname(taskHiInstance.getAssignee());
//
dto.setAssigneeName(user1.getUsername()); // dto.setAssigneeName(user1.getUsername());
} // }
//
} // }
//
BpmnModel bpmnModel = repositoryService.getBpmnModel(taskchildPicture.getProcessdefinitionid()); // BpmnModel bpmnModel = repositoryService.getBpmnModel(taskchildPicture.getProcessdefinitionid());
//
// // 根据节点定义id获取节点元素 //// // 根据节点定义id获取节点元素
FlowElement flowElement = bpmnModel.getFlowElement(taskHiInstance.getTaskDefinitionKey()); // 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 找到对应的 审批意见 // // 还需要根据 HistoricTaskInstance 找到对应的 审批意见
List<Comment> processInstanceComments = taskService.getProcessInstanceComments(taskchildPicture.getProcessinstanceid()); // List<Comment> processInstanceComments = taskService.getProcessInstanceComments(taskchildPicture.getProcessinstanceid());
for (Comment comment : processInstanceComments) { // for (Comment comment : processInstanceComments) {
//
if (comment.getTaskId().equals(taskHiInstance.getId())) { // if (comment.getTaskId().equals(taskHiInstance.getId())) {
// 审批意见 // // 审批意见
String fullMessage = comment.getFullMessage(); // String fullMessage = comment.getFullMessage();
dto.setComment(fullMessage); // dto.setComment(fullMessage);
} // }
} // }
historicTaskInstanceDtos.add(dto); // historicTaskInstanceDtos.add(dto);
} // }
taskchildPicture.setTransferRecords(historicTaskInstanceDtos); // taskchildPicture.setTransferRecords(historicTaskInstanceDtos);
} // }
} }
pageUtils.setTotalCount(count.intValue()); pageUtils.setTotalCount(count.intValue());
@ -1502,7 +1511,8 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* @param tenantId * @param tenantId
* @param pageUtils * @param pageUtils
*/ */
public List<OcrTaskchildPictureAppro> getMyProcessInstancesNew(User user, String tenantId, Map<String, Object> searchQuery, PageUtils pageUtils) { public List<OcrTaskchildPictureAppro> getMyProcessInstancesNew(User user, String
tenantId, Map<String, Object> searchQuery, PageUtils pageUtils) {
ParamterPage paramterPage = new ParamterPage(); ParamterPage 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());
@ -1647,7 +1657,8 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* *
* @return * @return
*/ */
public IPage<FlowUnionVo> getMyListCc(Map<String, Object> query, UserToken userToken, ParamterPage paramterPage) { public IPage<FlowUnionVo> getMyListCc(Map<String, Object> query, UserToken userToken, ParamterPage
paramterPage) {
//查询抄送给当前用户的fromid集合 //查询抄送给当前用户的fromid集合
QueryWrapper queryWrapper = new QueryWrapper(); QueryWrapper queryWrapper = new QueryWrapper();
@ -1764,7 +1775,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
} }
public ResultVo removeTask(String fromid, String taskid) { public ResultVo removeTask(String fromid, String taskid,String deptid) {
// 获取当前任务 // 获取当前任务
OcrTaskchildPicture ocrTaskchildPicture = this.ocrTaskchildPictureService.selectDtoById(Long.parseLong(fromid)); OcrTaskchildPicture ocrTaskchildPicture = this.ocrTaskchildPictureService.selectDtoById(Long.parseLong(fromid));
@ -1783,7 +1794,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
String historyProcessDefinitionId = terminatedInstances.get(0).getProcessDefinitionId(); String historyProcessDefinitionId = terminatedInstances.get(0).getProcessDefinitionId();
boolean isStart = iFlowInstanceService.startProcessInstanceById(historyProcessDefinitionId, ocrTaskchildPicture.getCreateusername(), boolean isStart = iFlowInstanceService.startProcessInstanceById(historyProcessDefinitionId, ocrTaskchildPicture.getCreateusername(),
ocrTaskchildPicture.getCreateuser(), ocrTaskchildPicture.getId().toString(), category.getServicename()); ocrTaskchildPicture.getCreateuser(), ocrTaskchildPicture.getId().toString(), category.getServicename(),deptid);
if (isStart) { if (isStart) {
ResultVoUtil.success(); ResultVoUtil.success();
@ -1803,7 +1814,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
Category category = this.categoryService.getById(ocrTaskchildPicture.getCategoryid()); Category category = this.categoryService.getById(ocrTaskchildPicture.getCategoryid());
boolean isStart = iFlowInstanceService.startProcessInstanceById(task.getProcessDefinitionId(), ocrTaskchildPicture.getCreateusername(), boolean isStart = iFlowInstanceService.startProcessInstanceById(task.getProcessDefinitionId(), ocrTaskchildPicture.getCreateusername(),
ocrTaskchildPicture.getCreateuser(), ocrTaskchildPicture.getId().toString(), category.getServicename()); ocrTaskchildPicture.getCreateuser(), ocrTaskchildPicture.getId().toString(), category.getServicename(),deptid);
if (isStart) { if (isStart) {
ResultVoUtil.success(); ResultVoUtil.success();
@ -1819,7 +1830,22 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
@Override @Override
public ResultVo repetitionTask() { public ResultVo repetitionTask() {
return ResultVoUtil.success(flowableccMybatisDao.repetitionTask()); List<RepeatedContentVo> repeatedContentVoList = 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
@ -1836,7 +1862,8 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* @param usersearchchild * @param usersearchchild
* @return * @return
*/ */
private QueryWrapper<OcrTaskchildPicture> formattingSearchChild(QueryWrapper<OcrTaskchildPicture> queryWrapper, OcrUsersearchchild usersearchchild) { private QueryWrapper<OcrTaskchildPicture> formattingSearchChild
(QueryWrapper<OcrTaskchildPicture> queryWrapper, OcrUsersearchchild usersearchchild) {
switch (usersearchchild.getSearchRelationType()) { switch (usersearchchild.getSearchRelationType()) {
case "where": case "where":
this.formattingSearchType(queryWrapper, usersearchchild); this.formattingSearchType(queryWrapper, usersearchchild);
@ -1860,7 +1887,8 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
* @param usersearchchild * @param usersearchchild
* @return * @return
*/ */
private QueryWrapper<OcrTaskchildPicture> formattingSearchType(QueryWrapper<OcrTaskchildPicture> queryWrapper, OcrUsersearchchild usersearchchild) { private QueryWrapper<OcrTaskchildPicture> formattingSearchType
(QueryWrapper<OcrTaskchildPicture> queryWrapper, OcrUsersearchchild usersearchchild) {
//查询类型 相等true 不相等fase //查询类型 相等true 不相等fase
boolean queryType = "eq".equals(usersearchchild.getSearchtype()); boolean queryType = "eq".equals(usersearchchild.getSearchtype());

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

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

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

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

@ -9,6 +9,7 @@ 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;
@ -29,10 +30,11 @@ 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.setReason(approve.getDisposeType()); userapprove.setProcessMethod(approve.getDisposeType());
if (approve.getResult()) { if (approve.getResult()) {
userapprove.setStatshis(2); userapprove.setStatshis(2);
} else { } else {

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

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

@ -23,34 +23,31 @@ 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

@ -3,9 +3,11 @@ package cn.jyjz.xiaoyao.ocr.controller;
import cn.hutool.core.date.DateField; 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.common.base.util.StringUtils;
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.ImageDownloadMonitoring;
import cn.jyjz.xiaoyao.ocr.thread.TaskQueue; import cn.jyjz.xiaoyao.ocr.thread.TaskQueue;
@ -15,6 +17,8 @@ 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.ArrayList;
@ -33,8 +37,8 @@ import java.util.List;
@RequestMapping("/test/api") @RequestMapping("/test/api")
public class ApiTestController { public class ApiTestController {
@Value("${ocr.api.wly.localImagePath}") @Resource
private String localImagePath; private ApiConfig apiConfig;
@Autowired @Autowired
private PrevailCloudApi prevailCloudApi; private PrevailCloudApi prevailCloudApi;
@ -45,6 +49,16 @@ public class ApiTestController {
String endStr = request.getParameter("endStr"); String endStr = request.getParameter("endStr");
String pageSize = request.getParameter("pageSize"); String pageSize = request.getParameter("pageSize");
String pageNo = request.getParameter("pageNo"); String pageNo = request.getParameter("pageNo");
String tenantNoStr = request.getParameter("tenantNo");
if(StringUtils.isBlank(tenantNoStr)){
return "租户不能为空";
}
String accountNoStr = request.getParameter("accountNo");
if(StringUtils.isBlank(accountNoStr)){
return "业务主体不能为空";
}
Long tenantNo = Long.parseLong(request.getParameter("tenantNo"));
Long accountNo = Long.parseLong(request.getParameter("accountNo"));
PictureSourceParameter pictureSourceParameter = new PictureSourceParameter(); PictureSourceParameter pictureSourceParameter = new PictureSourceParameter();
DateTime dateTime = DateUtil.parse(beginStr+" 00:00:00","yyyy-MM-dd HH:mm:ss"); DateTime dateTime = DateUtil.parse(beginStr+" 00:00:00","yyyy-MM-dd HH:mm:ss");
@ -57,10 +71,13 @@ public class ApiTestController {
pictureSourceParameter.setEndTime(Date.from(einstant)); pictureSourceParameter.setEndTime(Date.from(einstant));
pictureSourceParameter.setPageNo(Integer.parseInt(pageNo)); pictureSourceParameter.setPageNo(Integer.parseInt(pageNo));
pictureSourceParameter.setPageSize(Integer.parseInt(pageSize)); pictureSourceParameter.setPageSize(Integer.parseInt(pageSize));
pictureSourceParameter.setTenantNo(1714548920583360512L); pictureSourceParameter.setTenantNo(tenantNo);
pictureSourceParameter.setAccountNo(1714887674875514880L); pictureSourceParameter.setAccountNo(accountNo);
try { try {
ApiPage<PictureSourceResult> apiPage = prevailCloudApi.pullPictureSource(pictureSourceParameter); ApiPage<PictureSourceResult> apiPage = prevailCloudApi.pullPictureSource(pictureSourceParameter);
if(apiPage==null){
return "获取数据为空!";
}
List<PictureSourceResult> listResult= apiPage.getRecords(); List<PictureSourceResult> listResult= apiPage.getRecords();
int count = apiPage.getTotal(); int count = apiPage.getTotal();
int localCount = listResult.size(); int localCount = listResult.size();
@ -192,7 +209,7 @@ public class ApiTestController {
public String downloadImageMonitor(HttpServletRequest request) { public String downloadImageMonitor(HttpServletRequest request) {
String message; String message;
try { try {
boolean result = prevailCloudApi.startImageDownloadMonitoring(localImagePath); boolean result = prevailCloudApi.startImageDownloadMonitoring(apiConfig.getLocalImagePath());
if (result) { if (result) {
message = "操作成功"; message = "操作成功";
} else { } else {

@ -66,6 +66,28 @@ 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
*/ */

@ -0,0 +1,55 @@
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));
}
}

@ -0,0 +1,21 @@
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,6 +3,7 @@ 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;
@ -20,6 +21,7 @@ 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;
@ -265,7 +267,6 @@ 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");
@ -295,8 +296,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
@ -313,6 +314,34 @@ 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);
} }
@ -403,7 +432,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);
} }

@ -0,0 +1,154 @@
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();
}
}

@ -0,0 +1,75 @@
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,13 +55,14 @@ 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);
OcrSearchHistory ocrsearchhistory =new OcrSearchHistory(); if(StringUtils.isNotBlank(search)){
ocrsearchhistory.setHistoryname(search); OcrSearchHistory ocrsearchhistory =new OcrSearchHistory();
ocrsearchhistory.setTenantId(Long.valueOf(tenantId)); ocrsearchhistory.setHistoryname(search);
ocrsearchhistory.setUserid(Long.valueOf(userToken.getUserid())); ocrsearchhistory.setTenantId(Long.valueOf(tenantId));
ocrsearchhistory.setCreatedate(System.currentTimeMillis()); ocrsearchhistory.setUserid(Long.valueOf(userToken.getUserid()));
ocrSearchHistoryService.save(ocrsearchhistory); ocrsearchhistory.setCreatedate(System.currentTimeMillis());
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);

@ -401,10 +401,8 @@ 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) {
HttpServletRequest request) { Page<OcrTaskChildPictureVo> result = ocrTaskchildPictureService.getPackageSimilarityList(pageNo, pageSize, orderType, orderName, checkDuplicateId, pictureId);
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);
} }

@ -0,0 +1,7 @@
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,7 +12,5 @@ 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, @Param("userNodeType") String userNodeType); OcrPicture getPackagePictureInfo(@Param("packageId") String packageId, @Param("pictureId") String pictureId);
List<OcrPicture> getPictureNodeStatesList(@Param("pictureIds") List<String> pictureIds, @Param("userNodeType") String userNodeType);
} }

@ -0,0 +1,11 @@
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> {
}

@ -17,14 +17,17 @@ import java.util.Map;
*/ */
@Mapper @Mapper
public interface OcrTaskchildPictureMybatisDao extends BaseMapper<OcrTaskchildPicture> { public interface OcrTaskchildPictureMybatisDao extends BaseMapper<OcrTaskchildPicture> {
/** /**
* *
* @param query * @param query
* @return * @return
*/ */
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
@ -48,10 +51,13 @@ 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("taskname") String taskname); List<OcrTaskChildPictureVo> getPictureHistoryList(@Param("pictureIds") List<String> pictureIds, @Param("pictureId") String pictureId);
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, @Param("taskname") String taskname); Page<OcrTaskChildPictureVo> getPackageSimilarityList(Page<OcrTaskChildPictureVo> page, @Param("checkDuplicateId") String checkDuplicateId, @Param("pictureId") String pictureId, @Param("oderType") String oderType, @Param("oderName") String oderName);
List<OcrTaskChildPictureVo> getSimilarityList(@Param("pictureIds") List<String> pictureIds);
} }

@ -54,4 +54,8 @@ 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;
} }

@ -0,0 +1,61 @@
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;
}

@ -346,6 +346,10 @@ 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;

@ -0,0 +1,115 @@
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,6 +195,10 @@ 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;
@ -203,6 +207,14 @@ 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,7 +142,8 @@ 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;
@ -195,4 +196,7 @@ public class OcrTaskchildPictureAppro implements java.io.Serializable {
@ApiModelProperty(value = "提交时间") @ApiModelProperty(value = "提交时间")
private Long finishTime; private Long finishTime;
@ApiModelProperty(value = "是否重复")
private Integer isRepeat;
} }

@ -22,6 +22,8 @@ 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);

@ -0,0 +1,9 @@
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();
}

@ -71,14 +71,6 @@ 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);
} }

@ -0,0 +1,22 @@
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,6 +1,5 @@
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;
@ -17,6 +16,7 @@ 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;
/** /**
* *
@ -38,7 +38,7 @@ public interface OcrTaskchildPictureService extends BaseService<OcrTaskchildPict
* @param tenantId * @param tenantId
* @param sysUser * @param sysUser
*/ */
public void createTask(List<OcrPicture> ocrPictureList, String tenantId,UserToken sysUser); public void createTask(List<OcrPicture> ocrPictureList, String tenantId,UserToken sysUser,String deptid);
/** /**
@ -110,9 +110,11 @@ public interface OcrTaskchildPictureService extends BaseService<OcrTaskchildPict
* @param packageid * @param packageid
*/ */
public OcrTaskchildPicture create(OcrPicture ocrPicture, String tenantId , UserToken sysUser, Long packageid,String buessinessno); public OcrTaskchildPicture create(OcrPicture ocrPicture, String tenantId , UserToken sysUser, Long packageid,String buessinessno);
/** /**
* *
*
* @param page
* @param query * @param query
* @return * @return
*/ */
@ -147,7 +149,7 @@ 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, UserToken userToken); Page<OcrTaskChildPictureVo> getPackageSimilarityList(Integer pageNo, Integer pageSize, String oderType, String oderName, String checkDuplicateId, String pictureId);
void sendFlowTaskResult(OcrTaskchildPicture taskchildPicture, OcrPicture picture, FlowApprove flowApprove) throws Exception; void sendFlowTaskResult(OcrTaskchildPicture taskchildPicture, OcrPicture picture, FlowApprove flowApprove) throws Exception;

@ -286,6 +286,12 @@ 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){
@ -337,7 +343,7 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
//4.开始更新 图片历史比对数据结果 //4.开始更新 图片历史比对数据结果
logger.info("查重任务:{},开启创建任务",checkDuplicateId); logger.info("查重任务:{},开启创建任务",checkDuplicateId);
if (CollectionUtils.isNotEmpty(ocrPictureList)) { if (CollectionUtils.isNotEmpty(ocrPictureList)) {
ocrTaskchildPictureService.createTask(ocrPictureList, ocrPictureList.get(0).getTenantId().toString(), sysUser); ocrTaskchildPictureService.createTask(ocrPictureList, ocrPictureList.get(0).getTenantId().toString(), sysUser,tenantId);
} }
return true; return true;
} }
@ -370,9 +376,19 @@ 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());

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

@ -0,0 +1,37 @@
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,14 +10,29 @@ 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.*; import cn.jyjz.xiaoyao.ocr.dataobject.OcrPackagetask;
import cn.jyjz.xiaoyao.ocr.service.*; import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
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.*; import cn.jyjz.xiaoyao.ocr.util.DataDictionaryUtil;
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;
@ -26,13 +41,11 @@ 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 liquibase.pro.packaged.E; 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;
@ -40,12 +53,14 @@ 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.File;
import java.io.IOException;
import java.io.InputStream;
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.*; import java.util.ArrayList;
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;
/** /**
@ -55,8 +70,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 {
@Value("${ocr.api.wly.localImagePath}") @Resource
private String localImagePath; private ApiConfig apiConfig;
@Value("${image.similarityPath}") @Value("${image.similarityPath}")
private String similarityPath; private String similarityPath;
@ -78,11 +93,6 @@ 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;
/** /**
* *
*/ */
@ -205,7 +215,8 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
null, null,
request, request,
ocrTaskchildPicture.getId().toString(), ocrTaskchildPicture.getId().toString(),
category.getServicename() category.getServicename(),
tenantId
); );
if (havePoint) { if (havePoint) {
@ -318,22 +329,11 @@ 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) {
String userNodeType = ProcessConstant.userNodeType.getOrDefault(userToken.getNodeType(), "一级审批"); OcrPicture ocrPicture = pictureMybatisDao.getPackagePictureInfo(checkDuplicateId,pictureId);
OcrPicture ocrPicture = pictureMybatisDao.getPackagePictureInfo(checkDuplicateId,pictureId,userNodeType);
ocrPicture.getPictureInfo().setCreateTime(ocrPicture.getPhotoDateTimestamp()); ocrPicture.getPictureInfo().setCreateTime(ocrPicture.getPhotoDateTimestamp());
return ocrPicture; return ocrPicture;
} }
@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;
@ -475,7 +475,8 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
null, null,
request, request,
ocrTaskchildPicture.getId().toString(), ocrTaskchildPicture.getId().toString(),
category.getServicename() category.getServicename(),
tenantId
); );
//TODO 需要测试 //TODO 需要测试
ocrPicture.setTaskchildpictureid(ocrTaskchildPicture.getId().toString()); ocrPicture.setTaskchildpictureid(ocrTaskchildPicture.getId().toString());
@ -812,7 +813,7 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
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(localImagePath + imgurl.substring(imgurl.lastIndexOf("/"))); entity.setLocalPath(apiConfig.getLocalImagePath() + imgurl.substring(imgurl.lastIndexOf("/")));
boolean addedToQueue = false; boolean addedToQueue = false;
int count = 1; int count = 1;

@ -0,0 +1,43 @@
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,8 +84,10 @@ 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(sFrontmenuT.getResKey().equals(FrontMenuEnum.WORKSHEETMAIN.getResKey())){ if(StringUtils.isNotBlank(search)){
strings1 = ocrsearchhistorymapper.selectsearch1(userId,search,tenantId); if(sFrontmenuT.getResKey().equals(FrontMenuEnum.WORKSHEETMAIN.getResKey())){
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);
@ -98,12 +100,13 @@ 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<>();
map.put("ai",strings1); if(StringUtils.isNotBlank(search)){
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;
} }
@ -135,7 +138,82 @@ 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:
@ -157,9 +235,13 @@ 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("approvedCount", approvedCount+notGoCount); counts.put("alreadyApprove", 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);
@ -203,8 +285,7 @@ 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){
String userNodeType = ProcessConstant.userNodeType.getOrDefault(nodeType, "一级审批"); List<OcrTaskChildPictureVo> failedPictureIds = taskchildPictureMybatisDao.getSimilarityList(pictureIds);
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());

@ -1,8 +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.hutool.http.HttpUtil;
import cn.jyjz.flowable.common.ProcessConstant; import cn.jyjz.flowable.common.ProcessConstant;
import cn.jyjz.flowable.common.SystemConstantsOa; import cn.jyjz.flowable.common.SystemConstantsOa;
import cn.jyjz.flowable.domain.vo.FlowModelVO; import cn.jyjz.flowable.domain.vo.FlowModelVO;
@ -10,18 +8,28 @@ 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.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.*; import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
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.ResultDto;
@ -39,19 +47,16 @@ 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.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus; 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;
@ -67,8 +72,6 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchildPictureMybatisDao, OcrTaskchildPicture> implements OcrTaskchildPictureService { public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchildPictureMybatisDao, OcrTaskchildPicture> implements OcrTaskchildPictureService {
@Value("${ocr.api.wly.data-url}")
private String dataUrl;
@Resource @Resource
private OcrTaskchildPictureMybatisDao ocrtaskchildpicturemybatisdao; private OcrTaskchildPictureMybatisDao ocrtaskchildpicturemybatisdao;
@ -90,15 +93,15 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
@Resource @Resource
IFlowInstanceService flowInstanceService; IFlowInstanceService flowInstanceService;
@Resource
private CategoryService categoryService;
@Resource @Resource
private IOcrPictureDuplicateHisService pictureDuplicateHisService; private IOcrPictureDuplicateHisService pictureDuplicateHisService;
@Resource @Resource
private PrevailCloudApi prevailCloudApi; private PrevailCloudApi prevailCloudApi;
@Autowired
private DepartmentService departmentService;
/** /**
* *
* *
@ -311,7 +314,7 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
} }
@Override @Override
public void createTask(List<OcrPicture> ocrPictureList, String tenantId, UserToken userToken) { public void createTask(List<OcrPicture> ocrPictureList, String tenantId, UserToken userToken,String deptid) {
if (null != ocrPictureList && !ocrPictureList.isEmpty()) { if (null != ocrPictureList && !ocrPictureList.isEmpty()) {
//用于标记相似度是否存在百分百的情况 //用于标记相似度是否存在百分百的情况
for (OcrPicture ocrPicture : ocrPictureList) { for (OcrPicture ocrPicture : ocrPictureList) {
@ -324,8 +327,8 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
//TODO 没有对应项目,返回提示信息 //TODO 没有对应项目,返回提示信息
continue; continue;
} }
Category category = categoryService.getById(ocrPicture.getCategoryid()); Department department = departmentService.getOne(new LambdaQueryWrapper<Department>().eq(Department::getDeptno, tenantId));
if (null == category || StringUtils.isBlank(category.getProcessdefinitionid())) { if (null == department || StringUtils.isBlank(department.getProcessdefinitionid())) {
continue; continue;
} }
//创建工单,如果创建成功,增加标志,用于过滤条件使用 //创建工单,如果创建成功,增加标志,用于过滤条件使用
@ -335,13 +338,14 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request)); RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request));
//发起流程 //发起流程
flowInstanceService.startProcessInstanceById( flowInstanceService.startProcessInstanceById(
category.getProcessdefinitionid(), department.getProcessdefinitionid(),
null, null,
request, request,
ocrTaskchildPicture.getId().toString(), ocrTaskchildPicture.getId().toString(),
category.getServicename() department.getServicename(),
deptid
); );
IFormCustomService iFormCustomService = SpringUtils.getBean(category.getServicename()); IFormCustomService iFormCustomService = SpringUtils.getBean(department.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;
@ -613,7 +617,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.listFinal(query); return this.ocrtaskchildpicturemybatisdao.listFinalTask(query);
} }
@ -660,8 +664,8 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
} }
@Override @Override
public List<OcrTaskChildPictureVo> getPictureHistoryList(List<String> pictureIds, String taskname) { public List<OcrTaskChildPictureVo> getPictureHistoryList(List<String> pictureIds, String pictureId) {
return ocrtaskchildpicturemybatisdao.getPictureHistoryList(pictureIds, taskname); return ocrtaskchildpicturemybatisdao.getPictureHistoryList(pictureIds, pictureId);
} }
@Override @Override
@ -684,10 +688,9 @@ 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), userNodeType); List<OcrTaskChildPictureVo> taskChildPicturesOld = this.getPictureHistoryList(new ArrayList<>(pictureIds), pictureId);
List<OcrTaskChildPictureVo> taskChildPictures = new ArrayList<>(); List<OcrTaskChildPictureVo> taskChildPictures = new ArrayList<>();
for (OcrTaskChildPictureVo taskChildPicture : taskChildPicturesOld) { for (OcrTaskChildPictureVo taskChildPicture : taskChildPicturesOld) {
if(taskChildPicture.getPictureId()!=null){ if(taskChildPicture.getPictureId()!=null){
@ -725,11 +728,9 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
} }
@Override @Override
public Page<OcrTaskChildPictureVo> getPackageSimilarityList(Integer pageNo, Integer pageSize, String oderType, String oderName, String checkDuplicateId, String pictureId, UserToken userToken) { public Page<OcrTaskChildPictureVo> getPackageSimilarityList(Integer pageNo, Integer pageSize, String oderType, String oderName, String checkDuplicateId, String pictureId) {
Page<OcrTaskChildPictureVo> page = new Page<>(pageNo, pageSize); Page<OcrTaskChildPictureVo> page = new Page<>(pageNo, pageSize);
String userNodeType = ProcessConstant.userNodeType.getOrDefault(userToken.getNodeType(), "一级审批"); return ocrtaskchildpicturemybatisdao.getPackageSimilarityList(page, checkDuplicateId, pictureId, oderType, oderName);
return ocrtaskchildpicturemybatisdao.getPackageSimilarityList(page, checkDuplicateId, pictureId, oderType, oderName, userNodeType);
} }
@Override @Override
@ -753,12 +754,7 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
} }
} }
flowResultDto.setApproveDetailList(nodeList); flowResultDto.setApproveDetailList(nodeList);
ResultDto resultDto = new ResultDto(); prevailCloudApi.sendFlowTaskResult(picture.getTenantId().toString(),JSON.toJSONString(flowResultDto));
resultDto.setStatus(HttpStatus.OK.value());
resultDto.setTimestamp(System.currentTimeMillis());
resultDto.setData(JSON.toJSONString(flowResultDto));
System.out.println(JSON.toJSONString(resultDto));
prevailCloudApi.sendFlowTaskResult(picture.getTenantId().toString(),JSON.toJSONString(resultDto));
} }

@ -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.setIztaskstatus(ocrUsersearchchild.getSearchvalue()); vo.setIzstatus(ocrUsersearchchild.getSearchvalue());
} }
if(SearchConfigEnum.FIELD17.getId().equals(searchfield)){ if(SearchConfigEnum.FIELD17.getId().equals(searchfield)){
vo.setIzprojecttype(ocrUsersearchchild.getSearchvalue()); vo.setIzprojecttype(ocrUsersearchchild.getSearchvalue());

@ -252,7 +252,6 @@ 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;

@ -14,9 +14,6 @@ import org.springframework.stereotype.Component;
@Component @Component
public class TaskRunner implements CommandLineRunner { public class TaskRunner implements CommandLineRunner {
@Value("${ocr.api.wly.localImagePath}")
private String localImagePath;
@Override @Override
public void run(String... args) throws Exception { public void run(String... args) throws Exception {
TaskThreadPool taskThreadPool = new TaskThreadPool(); TaskThreadPool taskThreadPool = new TaskThreadPool();

@ -67,22 +67,24 @@ public class PictureDisposeTask implements Runnable{
//不为空开始组装参数 入库 //不为空开始组装参数 入库
OcrPicture picture = new OcrPicture(); OcrPicture picture = new OcrPicture();
picture.setLocation(JSONObject.toJSONString(pictureSourceResult.getLocation())); picture.setLocation(JSONObject.toJSONString(pictureSourceResult.getLocation()));
//租户编号
picture.setTenantId(pictureSourceResult.getTenantNo());
//租户名称
picture.setTenantname(pictureSourceResult.getTenantName());
//租户状态
if(pictureSourceResult.getTenantStatus()!=null){
picture.setTenantstatus(pictureSourceResult.getTenantStatus().toString());
}
//业务主体 //业务主体
picture.setTenantId(pictureSourceResult.getAccountNo());
//业务主体名称
picture.setTenantname(pictureSourceResult.getAccountName());
//业务主体状态
if(pictureSourceResult.getAccountStatus()!=null){
picture.setTenantstatus(pictureSourceResult.getAccountStatus().toString());
}
//租户编号
if(pictureSourceResult.getAccountNo()!=null){ if(pictureSourceResult.getAccountNo()!=null){
picture.setPictureid(pictureSourceResult.getAccountNo().toString()); picture.setPictureid(pictureSourceResult.getAccountNo().toString());
} }
//业务主体名称 //租户名称
picture.setPicturename(pictureSourceResult.getAccountName()); picture.setPicturename(pictureSourceResult.getAccountName());
//业务主体状态 //租户状态
picture.setPicturestatus(pictureSourceResult.getPlanChildStatus()); if(pictureSourceResult.getAccountStatus()!=null) {
picture.setPicturestatus(pictureSourceResult.getAccountStatus().toString());
}
//项目编号 //项目编号
if(pictureSourceResult.getProjectNo()!=null){ if(pictureSourceResult.getProjectNo()!=null){
picture.setProjectid(pictureSourceResult.getProjectNo().toString()); picture.setProjectid(pictureSourceResult.getProjectNo().toString());

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

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

@ -213,7 +213,16 @@
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)

@ -30,7 +30,8 @@
<result column="PSDUPDATETIME" property="psdupdatetime" jdbcType="BIGINT"/> <result column="PSDUPDATETIME" property="psdupdatetime" jdbcType="BIGINT"/>
<result column="USERDISTIONARYID" property="userdistionaryid" jdbcType="BIGINT"/> <result column="USERDISTIONARYID" property="userdistionaryid" jdbcType="BIGINT"/>
<result column="userOsudType" property="userOsudType" jdbcType="INTEGER"/> <result column="userOsudType" property="userOsudType" jdbcType="INTEGER"/>
<collection property="deptlist" select="cn.jyjz.xiaoyao.admin.dataDao.DepartmentMybatisDao.selectDeptByUserid" javaType="java.util.ArrayList" column="ID"/> <result column="DEPARTID" property="departid" jdbcType="BIGINT"/>
<collection property="deptlist" select="cn.jyjz.xiaoyao.admin.dataDao.DepartmentMybatisDao.selectById" javaType="java.util.ArrayList" column="DEPARTID"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
ID AS id, ID AS id,
@ -95,10 +96,10 @@
u.UPDATETIME AS updatetime, u.UPDATETIME AS updatetime,
u.PSDUPDATETIME AS psdupdatetime, u.PSDUPDATETIME AS psdupdatetime,
osud.ID AS userdistionaryid, osud.ID AS userdistionaryid,
osud.USERTYPE AS userOsudType osud.USERTYPE AS userOsudType,
uo.DEPARTID AS departid
from S_USER_T u from S_USER_T u
RIGHT JOIN S_USEROBJECT_T uo ON uo.USERID = u.ID RIGHT JOIN S_USEROBJECT_T uo ON uo.USERID = u.ID
RIGHT JOIN s_user_tenant_t ut on ut.USERID = u.ID
RIGHT JOIN RIGHT JOIN
( (
SELECT MIN(osudtemp.ID),osudtemp.*,cosudtemp.CANDIDATEID AS CANDIDATEID FROM OA_USERDISTIONARY_T osudtemp SELECT MIN(osudtemp.ID),osudtemp.*,cosudtemp.CANDIDATEID AS CANDIDATEID FROM OA_USERDISTIONARY_T osudtemp
@ -107,7 +108,7 @@
where osudtemp.DEPTID_DIS = #{querymap.userDisId} where osudtemp.DEPTID_DIS = #{querymap.userDisId}
</if> </if>
GROUP BY osudtemp.USERID GROUP BY osudtemp.USERID
) osud ON osud.USERID = u.ID ) osud ON osud.USERID = u.ID and uo.DEPARTID = osud.DEPTID
<if test="null != querymap and null != querymap.userDisId"> <if test="null != querymap and null != querymap.userDisId">
and osud.DEPTID_DIS = #{querymap.userDisId} and osud.DEPTID_DIS = #{querymap.userDisId}
@ -137,16 +138,14 @@
u.CREATEDATE AS createdate, u.CREATEDATE AS createdate,
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 uo.DEPARTID AS departid,
RIGHT JOIN S_USEROBJECT_T uo ON uo.USERID = u.ID osudtemp.id AS userdistionaryid
RIGHT JOIN s_user_tenant_t ut on ut.USERID = u.ID from S_USER_T u,S_USEROBJECT_T uo
LEFT JOIN OA_USERDISTIONARY_T osudtemp ON osudtemp.USERID = uo.USERID AND osudtemp.DEPTID = uo.DEPARTID
${ew.customSqlSegment} ${ew.customSqlSegment}
and u.id not IN ( and uo.USERID = u.ID
SELECT osud.USERID FROM OA_USERDISTIONARY_T osud
<if test="null != querymap and null != querymap.userDisId">
where osud.DEPTID_DIS = #{querymap.userDisId}
</if>
)
</select> </select>
</mapper> </mapper>

@ -226,30 +226,29 @@
</sql> </sql>
<select id="getPackagePictureInfo" resultMap="BaseResultMap"> <select id="getPackagePictureInfo" resultMap="BaseResultMap">
SELECT t2.*,t3.*,ifnull(t5.STATSHIS, 1) historyStates,t4.STATES,t4.TASKID,t4.ID taskchildId SELECT t2.*,
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}
<if test="pictureId != null and pictureId != ''"> and t2.suspiciousfile = 0
and t1.picture_id = #{pictureId} <if test="pictureId != null and pictureId != ''">
</if> and t1.picture_id = #{pictureId}
ORDER BY t1.max_similarity desc,t1.similarity_group_order asc, t2.submit_date_timestamp asc </if>
ORDER BY t1.max_similarity desc, t1.similarity_group_order asc, t2.submit_date_timestamp asc
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>

@ -31,9 +31,11 @@
r.ASSIGNEE = #{userid} AND r.ASSIGNEE = #{userid} AND
r.STATES IN ('1','2') AND r.STATES IN ('1','2') AND
r.TASKNAME IN ( '一级审批', '二级审批' ) r.TASKNAME IN ( '一级审批', '二级审批' )
AND (r.FROMTASKNAME LIKE "%"#{search}"%" <if test="search != null and search != ''">
AND (r.FROMTASKNAME LIKE "%"#{search}"%"
OR img.field1 LIKE "%"#{search}"%" OR img.field1 LIKE "%"#{search}"%"
OR img.field3 LIKE "%"#{search}"%") OR img.field3 LIKE "%"#{search}"%")
</if>
AND r.TENANTID = #{tenantId} AND r.TENANTID = #{tenantId}
ORDER BY ORDER BY
r.CREATEDATE DESC r.CREATEDATE DESC
@ -49,10 +51,12 @@
r.ASSIGNEE = #{userid} AND r.ASSIGNEE = #{userid} AND
r.STATES = '3' AND r.STATES = '3' AND
r.TASKNAME = '最终审批' r.TASKNAME = '最终审批'
AND (r.FROMTASKNAME LIKE "%"#{search}"%" <if test="search != null and search != ''">
AND (r.FROMTASKNAME LIKE "%"#{search}"%"
OR img.field1 LIKE "%"#{search}"%" OR img.field1 LIKE "%"#{search}"%"
OR img.field3 LIKE "%"#{search}"%") OR img.field3 LIKE "%"#{search}"%")
AND r.TENANTID = #{tenantId} </if>
AND r.TENANTID = #{tenantId}
ORDER BY ORDER BY
r.CREATEDATE DESC r.CREATEDATE DESC
LIMIT 3 LIMIT 3

@ -186,6 +186,8 @@
and OCPICTUREID ${ocpictureid.dataOp} ${ocpictureid.likestar}#{ocpictureid.value}${ocpictureid.likeend} and OCPICTUREID ${ocpictureid.dataOp} ${ocpictureid.likestar}#{ocpictureid.value}${ocpictureid.likeend}
</if> </if>
<if test="pictureresult != null"> <if test="pictureresult != null">
@ -307,8 +309,6 @@
</if> </if>
<if test="ocpictureid != null"> <if test="ocpictureid != null">
and tcp.OCPICTUREID ${ocpictureid.dataOp} ${ocpictureid.likestar}#{ocpictureid.value}${ocpictureid.likeend} and tcp.OCPICTUREID ${ocpictureid.dataOp} ${ocpictureid.likestar}#{ocpictureid.value}${ocpictureid.likeend}
</if> </if>
<if test="pictureresult != null"> <if test="pictureresult != null">
@ -525,21 +525,22 @@
</if> </if>
${izproject.likeend} ${izproject.likeend}
</if> </if>
<!-- <if test="izuptime != null">--> <!-- <if test="izuptime != null">-->
<!-- ${izuptime.rulesOp} tcp.FROMUPTIME ${izuptime.dataOp} ${izuptime.likestar}#{izuptime.value}${izuptime.likeend}--> <!-- ${izuptime.rulesOp} tcp.FROMUPTIME ${izuptime.dataOp} ${izuptime.likestar}#{izuptime.value}${izuptime.likeend}-->
<!-- </if>--> <!-- </if>-->
<!-- <if test="izuptimeStart != null">--> <!-- <if test="izuptimeStart != null">-->
<!-- and tcp.FROMUPTIME &gt;= '${izuptimeStart.value}'--> <!-- and tcp.FROMUPTIME &gt;= '${izuptimeStart.value}'-->
<!-- </if>--> <!-- </if>-->
<!-- <if test="izuptimeEnd != null">--> <!-- <if test="izuptimeEnd != null">-->
<!-- and tcp.FROMUPTIME &lt;= '${izuptimeEnd.value}'--> <!-- and tcp.FROMUPTIME &lt;= '${izuptimeEnd.value}'-->
<!-- </if>--> <!-- </if>-->
<if test="izuptimeStart != null"> <if test="izuptimeStart != null">
<!-- 如果 izuptimeStart.dataOp 的值为 "<",则使用 "or" 连接 --> <!-- 如果 izuptimeStart.dataOp 的值为 "<",则使用 "or" 连接 -->
<choose> <choose>
<when test="izuptimeStart.rulesOp == 'or' || izuptimeEnd.rulesOp=='or'"> <when test="izuptimeStart.rulesOp == 'or' || izuptimeEnd.rulesOp == 'or'">
<if test="izuptimeEnd != null"> <if test="izuptimeEnd != null">
and (tcp.FROMUPTIME ${izuptimeStart.dataOp} '${izuptimeStart.value}' or tcp.FROMUPTIME ${izuptimeEnd.dataOp} '${izuptimeEnd.value}') and (tcp.FROMUPTIME ${izuptimeStart.dataOp} '${izuptimeStart.value}'
or tcp.FROMUPTIME ${izuptimeEnd.dataOp} '${izuptimeEnd.value}')
</if> </if>
</when> </when>
<otherwise> <otherwise>
@ -576,10 +577,10 @@
</include> </include>
and pic.suspiciousfile = 0 and pic.suspiciousfile = 0
<if test="fromuptimeStart != null"> <if test="fromuptimeStart != null">
and tcp.fromuptime &gt;= ${fromuptimeStart} and tcp.fromuptime &gt;= ${fromuptimeStart.value}
</if> </if>
<if test="fromuptimeEnd != null"> <if test="fromuptimeEnd != null">
and tcp.fromuptime &lt;= ${fromuptimeEnd} and tcp.fromuptime &lt;= ${fromuptimeEnd.value}
</if> </if>
<if test="page != null"> <if test="page != null">
<if test="page.sortname != null"> <if test="page.sortname != null">
@ -594,33 +595,27 @@
</if> </if>
</select> </select>
<select id="listFinalCount" resultType="java.lang.Long" parameterType="java.util.Map"> <select id="listFinalCount" resultType="java.lang.Long" parameterType="java.util.Map">
select count(tcp.ID) from ( select count(1)
select tc.* from ocr_taskchild_picture tcp
from ocr_taskchild_picture tc,
OA_USERFINAL_T uf,
ocr_picture p
where tc.ID = uf.FORMID
and p.ID = tc.PICTUREID
and p.suspiciousfile = 0
<if test="thisLoginUserid != null">
and uf.USERID ${thisLoginUserid.dataOp} ${thisLoginUserid.likestar}#{thisLoginUserid.value}${thisLoginUserid.likeend}
</if>
UNION
select
tc.*
from ocr_taskchild_picture tc
where tc.STATES = 5
) as tcp
left join ocr_picture pic left join ocr_picture pic
on tcp.PICTUREID = pic.ID on tcp.PICTUREID = pic.ID
<include refid="Base_Where_union"> <include refid="Base_Where_union">
</include> </include>
and tcp.ISFINAIL = 1
and pic.suspiciousfile = 0 and pic.suspiciousfile = 0
<if test="thisLoginUserid != null and isFail ==null">
and tcp.ASSIGNEE ${thisLoginUserid.dataOp} ${thisLoginUserid.likestar}#{thisLoginUserid.value}${thisLoginUserid.likeend}
</if>
<if test="thisLoginUserid != null and isFail !=null">
and (tcp.ASSIGNEE ${thisLoginUserid.dataOp} ${thisLoginUserid.likestar}#{thisLoginUserid.value}${thisLoginUserid.likeend}
or tcp.STATES = 5)
</if>
<if test="fromuptimeStart != null"> <if test="fromuptimeStart != null">
and tcp.fromuptime &gt;= ${fromuptimeStart} and tcp.fromuptime &gt;= ${fromuptimeStart.value}
</if> </if>
<if test="fromuptimeEnd != null"> <if test="fromuptimeEnd != null">
and tcp.fromuptime &lt;= ${fromuptimeEnd} and tcp.fromuptime &lt;= ${fromuptimeEnd.value}
</if> </if>
</select> </select>
@ -628,52 +623,43 @@
parameterType="java.util.Map"> parameterType="java.util.Map">
select tcp.* from ( select tcp.* from (
select tc.*, select tc.*,
uf.COMMENTHIS, uf.COMMENTHIS,
uf.TASKNAME as TASKNAMEHIS, uf.TASKNAME as TASKNAMEHIS,
uf.STATSHIS, uf.STATSHIS,
uf.TASKINDEX, uf.TASKNO,
uf.TASKNO,
op.field6 as fromCustomerLevel, op.field6 as fromCustomerLevel,
op.releaseArea as fromCity op.releaseArea as fromCity,
op.is_repeat,
tc.is_repeated_nodules as isRepeatedNodules
from ocr_taskchild_picture tc from ocr_taskchild_picture tc
LEFT JOIN OA_USERAPPROVE_T uf ON tc.ID = uf.ID LEFT JOIN OA_USERAPPROVE_T uf ON tc.ID = uf.ID
left join ocr_picture op on tc.PICTUREID = op.ID left join ocr_picture op on tc.PICTUREID = op.ID
where tc.ASSIGNEE = #{searchassignee} where tc.ASSIGNEE = #{searchassignee}
and tc.TENANTID = #{searchtenantid} and tc.TENANTID = #{searchtenantid}
and tc.STATES = 2 and tc.STATES = 2
and op.suspiciousfile = 0 and op.suspiciousfile = 0
<if test="izApprovalStatus != null "> <if test="izApprovalStatus != null">
${izApprovalStatus.rulesOp} ${izApprovalStatus.rulesOp}
( ( #{izApprovalStatus.value} ${izApprovalStatus.dataOp} COALESCE (uf.STATSHIS
#{izApprovalStatus.value} ${izApprovalStatus.dataOp} COALESCE(uf.STATSHIS, 1) , 1)
) )
</if> </if>
UNION UNION
select tc.*, select tc.*, uf.COMMENTHIS, uf.TASKNAME as TASKNAMEHIS, uf.STATSHIS, uf.TASKNO, op.field6 as fromCustomerLevel, op.releaseArea as fromCity, op.is_repeat,tc.is_repeated_nodules as isRepeatedNodules
uf.COMMENTHIS, from ocr_taskchild_picture tc, OA_USERAPPROVE_T uf, ocr_picture op
uf.TASKNAME as TASKNAMEHIS,
uf.STATSHIS,
uf.TASKINDEX,
uf.TASKNO,
op.field6 as fromCustomerLevel,
op.releaseArea as fromCity
from ocr_taskchild_picture tc,
OA_USERAPPROVE_T uf,
ocr_picture op
where tc.ID = uf.FORMID where tc.ID = uf.FORMID
and tc.PICTUREID = op.ID and tc.PICTUREID = op.ID
and op.suspiciousfile = 0 and op.suspiciousfile = 0
and tc.TENANTID = #{searchtenantid} and tc.TENANTID = #{searchtenantid}
<if test="thisLoginUserid != null"> <if test="thisLoginUserid != null">
and uf.USERID = #{thisLoginUserid} and uf.USERID = #{thisLoginUserid}
</if> </if>
<if test="izApprovalStatus != null "> <if test="izApprovalStatus != null">
${izApprovalStatus.rulesOp} ${izApprovalStatus.rulesOp}
( ( #{izApprovalStatus.value} ${izApprovalStatus.dataOp} COALESCE (uf.STATSHIS
#{izApprovalStatus.value} ${izApprovalStatus.dataOp} COALESCE(uf.STATSHIS, 1) , 1)
) )
</if> </if>
) as tcp ) as tcp
<include refid="Base_Where_union"> <include refid="Base_Where_union">
@ -688,25 +674,42 @@
</if> </if>
</select> </select>
<select id="listmytaskCount" resultType="java.lang.Long" parameterType="java.util.Map"> <select id="listmytaskCount" resultType="java.lang.Long" parameterType="java.util.Map">
select count(tcp.ID) from ( select count(1) from (
select tc.* select tc.*,
uf.COMMENTHIS,
uf.TASKNAME as TASKNAMEHIS,
uf.STATSHIS,
uf.TASKNO,
op.field6 as fromCustomerLevel,
op.releaseArea as fromCity,
op.is_repeat
from ocr_taskchild_picture tc from ocr_taskchild_picture tc
LEFT JOIN OA_USERAPPROVE_T uf ON tc.ID = uf.ID
left join ocr_picture op on tc.PICTUREID = op.ID
where tc.ASSIGNEE = #{searchassignee} where tc.ASSIGNEE = #{searchassignee}
and tc.TENANTID = #{searchtenantid} and tc.TENANTID = #{searchtenantid}
and tc.STATES = 2 and tc.STATES = 2
and op.suspiciousfile = 0
<if test="izApprovalStatus != null">
${izApprovalStatus.rulesOp}
( #{izApprovalStatus.value} ${izApprovalStatus.dataOp} COALESCE (uf.STATSHIS
, 1)
)
</if>
UNION UNION
select tc.* select tc.*, uf.COMMENTHIS, uf.TASKNAME as TASKNAMEHIS, uf.STATSHIS, uf.TASKNO, op.field6 as fromCustomerLevel, op.releaseArea as fromCity, op.is_repeat
from ocr_taskchild_picture tc, from ocr_taskchild_picture tc, OA_USERAPPROVE_T uf, ocr_picture op
OA_USERAPPROVE_T uf
where tc.ID = uf.FORMID where tc.ID = uf.FORMID
and tc.PICTUREID = op.ID
and op.suspiciousfile = 0
and tc.TENANTID = #{searchtenantid} and tc.TENANTID = #{searchtenantid}
<if test="thisLoginUserid != null"> <if test="thisLoginUserid != null">
and uf.USERID = #{thisLoginUserid} and uf.USERID = #{thisLoginUserid}
</if> </if>
<if test="izApprovalStatus != null "> <if test="izApprovalStatus != null ">
${izApprovalStatus.rulesOp} ${izApprovalStatus.rulesOp}
( ( #{izApprovalStatus.value} ${izApprovalStatus.dataOp} COALESCE (uf.STATSHIS
#{izApprovalStatus.value} ${izApprovalStatus.dataOp} COALESCE(uf.STATSHIS, 1) , 1)
) )
</if> </if>
) as tcp ) as tcp
@ -755,15 +758,22 @@
t2.FROMPROJECTNAME fromProjectName, t2.FROMPROJECTNAME fromProjectName,
t2.FINISHTIME finishTime, t2.FINISHTIME finishTime,
t1.imgUrl, t1.imgUrl,
ifnull(t3.STATSHIS, 1) historyStates,
t1.submit_date_timestamp submitDateTimestamp, t1.submit_date_timestamp submitDateTimestamp,
t1.photo_date_timestamp photoDateTimestamp, t1.photo_date_timestamp photoDateTimestamp,
t1.similarity_score similarityScore, t1.similarity_score similarityScore,
t1.server_thumbnail_url serverThumbnailUrl t1.server_thumbnail_url serverThumbnailUrl,
COALESCE(
(SELECT t3.STATSHIS
FROM oa_userapprove_t t3
WHERE t3.FORMID = t2.ID
AND t3.TASKINDEX = (SELECT TASKNODE
FROM ocr_taskchild_picture
WHERE PICTUREID = #{pictureId})
LIMIT 1),
1) AS historyStates
FROM ocr_picture t1 FROM ocr_picture t1
LEFT JOIN ocr_taskchild_picture t2 LEFT JOIN ocr_taskchild_picture t2
on t1.ID = t2.PICTUREID on t1.ID = t2.PICTUREID
LEFT JOIN oa_userapprove_t t3 on t2.ID = t3.FORMID and t3.TASKNAME = '${taskname}'
where t1.suspiciousfile = 0 where t1.suspiciousfile = 0
and t1.ID in and t1.ID in
<foreach collection="pictureIds" open="(" close=")" item="item" separator="," index="index"> <foreach collection="pictureIds" open="(" close=")" item="item" separator="," index="index">
@ -835,44 +845,48 @@
<select id="getPackageSimilarityList" resultType="cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo"> <select id="getPackageSimilarityList" resultType="cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo">
SELECT distinct t3.ID id, SELECT distinct t3.ID id,
t3.PICTUREID pictureId, t3.PICTUREID pictureId,
t3.STATES states, t3.STATES states,
t3.PROCESSINSTANCEID processInstanceId, t3.PROCESSINSTANCEID processInstanceId,
t3.PROCESSDEFINITIONID processDefinitionId, t3.PROCESSDEFINITIONID processDefinitionId,
t3.DEPLOYMENTID deploymentId, t3.DEPLOYMENTID deploymentId,
t3.ASSIGNEENAME assigneeName, t3.ASSIGNEENAME assigneeName,
t3.ASSIGNEE assignee, t3.ASSIGNEE assignee,
t3.FILEANNEX fileAnnex, t3.FILEANNEX fileAnnex,
t3.GUIDANG guiDang, t3.GUIDANG guiDang,
t3.CREATEUSER createUser, t3.CREATEUSER createUser,
t3.CREATEUSERNAME createUserName, t3.CREATEUSERNAME createUserName,
t3.CREATEDATE createDate, t3.CREATEDATE createDate,
t3.USERID userId, t3.USERID userId,
t3.USERNAME userName, t3.USERNAME userName,
t3.FROMTASKID fromTaskId, t3.FROMTASKID fromTaskId,
t3.FROMTASKNAME fromTaskName, t3.FROMTASKNAME fromTaskName,
t3.FROMUSERID fromUserId, t3.FROMUSERID fromUserId,
t3.FROMPROJECTID fromProjectId, t3.FROMPROJECTID fromProjectId,
t3.FROMPLANID fromPlanId, t3.FROMPLANID fromPlanId,
t3.FROMUPTIME fromupTime, t3.FROMUPTIME fromupTime,
t3.FROMSOURCEID fromSourceId, t3.FROMSOURCEID fromSourceId,
t3.HAVEPOINTS havePoints, t3.HAVEPOINTS havePoints,
t3.TASKNAME taskName, t3.TASKNAME taskName,
t3.FROMUSERNAME fromUserName, t3.FROMUSERNAME fromUserName,
t3.FROMPROJECTNAME fromProjectName, t3.FROMPROJECTNAME fromProjectName,
t3.FINISHTIME finishTime, t3.FINISHTIME finishTime,
t3.TASKID taskId, t3.TASKID taskId,
t2.imgUrl, t2.imgUrl,
t2.submit_date_timestamp submitDateTimestamp, t2.submit_date_timestamp submitDateTimestamp,
t2.photo_date_timestamp photoDateTimestamp, t2.photo_date_timestamp photoDateTimestamp,
t2.server_thumbnail_url serverThumbnailUrl, t2.server_thumbnail_url serverThumbnailUrl,
t1.max_similarity maxSimilarity, t1.max_similarity maxSimilarity,
ifnull(t4.STATSHIS, 1) historyStates, COALESCE(
t1.check_duplicate_id (SELECT t4.STATSHIS
FROM oa_userapprove_t t4
WHERE t4.FORMID = t3.ID
ORDER BY t4.CREATEDATE DESC
LIMIT 1), 1) AS historyStates,
t1.check_duplicate_id
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_taskchild_picture t3 ON t2.ID = t3.PICTUREID LEFT JOIN ocr_taskchild_picture t3 ON t2.ID = t3.PICTUREID
LEFT JOIN oa_userapprove_t t4 ON t3.ID = t4.FORMID and t4.TASKNAME = '${taskname}'
left join ocr_picture_info t5 on t2.ID = t5.picture_id left join ocr_picture_info t5 on t2.ID = t5.picture_id
WHERE t1.check_duplicate_id = #{checkDuplicateId} WHERE t1.check_duplicate_id = #{checkDuplicateId}
and t2.suspiciousfile = 0 and t2.suspiciousfile = 0
@ -930,4 +944,92 @@
#{item} #{item}
</foreach> </foreach>
</select> </select>
<select id="listFinalTask" resultType="cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture"
parameterType="java.util.Map">
select tcp.*, pic.field11 reporttime, pic.similarity_score similarityscore,pic.server_thumbnail_url serverThumbnailUrl,
pic.imgUrl imgUrl
from ocr_taskchild_picture tcp
left join ocr_picture pic
on tcp.PICTUREID = pic.ID
<include refid="Base_Where_union">
</include>
and tcp.ISFINAIL = 1
and pic.suspiciousfile = 0
<if test="thisLoginUserid != null and isFail ==null">
and tcp.ASSIGNEE ${thisLoginUserid.dataOp} ${thisLoginUserid.likestar}#{thisLoginUserid.value}${thisLoginUserid.likeend}
</if>
<if test="thisLoginUserid != null and isFail !=null">
and (tcp.ASSIGNEE ${thisLoginUserid.dataOp} ${thisLoginUserid.likestar}#{thisLoginUserid.value}${thisLoginUserid.likeend}
or tcp.STATES = 5)
</if>
<if test="fromuptimeStart != null">
and tcp.fromuptime &gt;= ${fromuptimeStart.value}
</if>
<if test="fromuptimeEnd != null">
and tcp.fromuptime &lt;= ${fromuptimeEnd.value}
</if>
<if test="page != null">
<if test="page.sortname != null">
<if test="page.sortname == 'states'">
order by tcp.${page.sortname} ${page.sortorder}
</if>
<if test="page.sortname != 'states'">
order by pic.${page.sortname} ${page.sortorder}
</if>
</if>
limit ${page.start}, ${page.Pagesize}
</if>
</select>
<select id="getSimilarityList" resultType="cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo">
SELECT distinct t3.ID id,
t3.PICTUREID pictureId,
t3.STATES states,
t3.PROCESSINSTANCEID processInstanceId,
t3.PROCESSDEFINITIONID processDefinitionId,
t3.DEPLOYMENTID deploymentId,
t3.ASSIGNEENAME assigneeName,
t3.ASSIGNEE assignee,
t3.FILEANNEX fileAnnex,
t3.GUIDANG guiDang,
t3.CREATEUSER createUser,
t3.CREATEUSERNAME createUserName,
t3.CREATEDATE createDate,
t3.USERID userId,
t3.USERNAME userName,
t3.FROMTASKID fromTaskId,
t3.FROMTASKNAME fromTaskName,
t3.FROMUSERID fromUserId,
t3.FROMPROJECTID fromProjectId,
t3.FROMPLANID fromPlanId,
t3.FROMUPTIME fromupTime,
t3.FROMSOURCEID fromSourceId,
t3.HAVEPOINTS havePoints,
t3.TASKNAME taskName,
t3.FROMUSERNAME fromUserName,
t3.FROMPROJECTNAME fromProjectName,
t3.FINISHTIME finishTime,
t3.TASKID taskId,
t2.imgUrl,
t2.submit_date_timestamp submitDateTimestamp,
t2.photo_date_timestamp photoDateTimestamp,
t2.server_thumbnail_url serverThumbnailUrl,
t2.similarity_score maxSimilarity,
COALESCE(
(SELECT t4.STATSHIS
FROM oa_userapprove_t t4
WHERE t4.FORMID = t3.ID
ORDER BY t4.CREATEDATE DESC
LIMIT 1), 1) AS historyStates
from ocr_picture t2
LEFT JOIN ocr_taskchild_picture t3 ON t2.ID = t3.PICTUREID
left join ocr_picture_info t5 on t2.ID = t5.picture_id
WHERE t2.suspiciousfile = 0
and t2.ID in
<foreach collection="pictureIds" open="(" close=")" item="item" separator="," index="index">
#{item}
</foreach>
</select>
</mapper> </mapper>

@ -189,4 +189,26 @@ ALTER TABLE OA_USERAPPROVE_T ADD COLUMN TASKINDEX int comment '节点位置,
ALTER TABLE OA_USERAPPROVE_T ADD COLUMN TASKNO varchar(64) comment '节点编号,待定字段'; ALTER TABLE OA_USERAPPROVE_T ADD COLUMN TASKNO varchar(64) comment '节点编号,待定字段';
INSERT INTO S_BACKSTAGEOPENURL_T(ID,URL,REMARK) VALUES(1196092352600928301, '/flow/task/listalldata', '查询我的待审批、审批历史'); INSERT INTO S_BACKSTAGEOPENURL_T(ID,URL,REMARK) VALUES(1196092352600928301, '/flow/task/listalldata', '查询我的待审批、审批历史');
update S_RESOURCES_T set RESOURCENAME='公司管理',RESOURCEDESC='公司管理' where ID=5;
update S_DEPARTMENT_T set DEPARTSHOTNAME='无量云',DEPARTNAME='无量云',DEPARTDESC='无量云说明',DEPARTADDRESS='无量云地址' where ID=0;
delete from S_RESOURCES_T where ID=1196092352600928256;
delete from S_RESOURCEMETHOD_T where RESOURCEID=1196092352600928256;
ALTER TABLE S_DEPARTMENT_T ADD COLUMN SERVICENAME varchar(190) comment '对应的Service名主要是spring的service名';
ALTER TABLE S_DEPARTMENT_T ADD COLUMN BUILTFORM int comment '内置表单使用flowable表单0使用本地数据1使用flowable表单3:外置表单4其他自定义表单';
ALTER TABLE S_DEPARTMENT_T ADD COLUMN FORMURL varchar(190) comment '表单地址,用户展示用户表单使用';
ALTER TABLE S_DEPARTMENT_T ADD COLUMN FORMDETAIL varchar(190) comment '表单详情';
ALTER TABLE S_DEPARTMENT_T ADD COLUMN FORMTYPE varchar(50) comment '表单分类';
ALTER TABLE S_DEPARTMENT_T ADD COLUMN PROCESSDEFINITIONID varchar(64) comment '流程定义id';
ALTER TABLE S_DEPARTMENT_T ADD COLUMN TYPEDEPT int default 1 comment '公司类型0租户1主体';
ALTER TABLE S_DEPARTMENT_T ADD COLUMN TYPEDEPT int default 1 comment '公司类型0租户1主体';
ALTER TABLE S_DEPARTMENT_T ADD COLUMN CATEGORY varchar(190) not null comment '对应的工作流编码,与工作流中的命名空间对应';
INSERT INTO S_BACKSTAGEOPENURL_T(ID,URL,REMARK) VALUES(1196092352600928213, '/flow/definition/flowImg', '查看流程图');
INSERT INTO S_BACKSTAGEOPENURL_T(ID,URL,REMARK) VALUES(1196092352600928214, '/backstage/admin/department/updateflowable', '公司关联工作流');

@ -1,5 +1,7 @@
package cn.jyjz; package cn.jyjz;
import cn.jyjz.xiaoyao.ocr.service.OcrFrontConfService;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@ -7,6 +9,8 @@ import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import javax.annotation.Resource;
/** /**
* Hello world! * Hello world!
* *
@ -15,10 +19,16 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@ComponentScan({"cn.jyjz.*"} ) @ComponentScan({"cn.jyjz.*"} )
@EnableCaching @EnableCaching
@EnableScheduling @EnableScheduling
public class App public class App implements CommandLineRunner {
{
@Resource
private OcrFrontConfService ocrFrontConfService;
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(App.class, args); SpringApplication.run(App.class, args);
} }
@Override
public void run(String... args) {
ocrFrontConfService.updateConfig();
}
} }

@ -160,15 +160,15 @@ mybatis-plus:
xiaoyao: xiaoyao:
web: web:
#上传文件路径 #上传文件路径
uploadPath: E:/ZJWorkSpace/ocr/htmlweb/upload uploadPath: D:/Java/idea/IdeaWorkSpace/ocr/htmlweb/upload
#页面根路径 #页面根路径
frontPath: E:/ZJWorkSpace/ocr/htmlweb frontPath: D:/Java/idea/IdeaWorkSpace/ocr/htmlweb
#js、css、图片存放路径 #js、css、图片存放路径
staticPath: E:/ZJWorkSpace/ocr/htmlweb/static staticPath: D:/Java/idea/IdeaWorkSpace/ocr/htmlweb/static
#页面模版路径 #页面模版路径
webPath: E:/ZJWorkSpace/ocr/htmlweb/web webPath: D:/Java/idea/IdeaWorkSpace/ocr/htmlweb/web
#Lucene索引路径 #Lucene索引路径
lucenePath: E:/ZJWorkSpace/ocr/htmlweb/lucene/indexDir lucenePath: D:/Java/idea/IdeaWorkSpace/ocr/htmlweb/lucene/indexDir
#是否开启flowable #是否开启flowable
haveFlowable: true haveFlowable: true
webconfig: webconfig:
@ -272,17 +272,7 @@ springfox:
enabled: true enabled: true
# 是否启用swagger,postman调试 # 是否启用swagger,postman调试
debugger_tools: true debugger_tools: true
#无量云api配置信息 #图片查重模型
ocr:
api:
wly:
interface-domain: https://b-test.prevailcloud.com #接口域名
accessKey: 7390F0221A1A73D8E13F8C8BB96F33B0 #秘钥
accessCode: ED6F7B39768AF95E87AEA8ACCCC71A6F #秘钥编码
connectTimeout: 5000 #请求超时时间 毫秒
readTimeout: 60000 #接收超时时间 毫秒
localImagePath: /server/data/images #图片本地存储地址
data-url: https://b-test.prevailcloud.com/pangu/jingwei/thirdclient/command/pb/approval/result
image: image:
similarityPath: http://47.93.59.251/ai/api/similarity/ similarityPath: http://47.93.59.251/ai/api/similarity/
classifyPath: http://47.93.59.251/api/classify/ classifyPath: http://47.93.59.251/api/classify/

@ -275,18 +275,7 @@ springfox:
enabled: true enabled: true
# 是否启用swagger,postman调试 # 是否启用swagger,postman调试
debugger_tools: true debugger_tools: true
#图片查重模型
#无量云api配置信息
ocr:
api:
wly:
interface-domain: https://b-test.prevailcloud.com #接口域名
accessKey: 7390F0221A1A73D8E13F8C8BB96F33B0 #秘钥
accessCode: ED6F7B39768AF95E87AEA8ACCCC71A6F #秘钥编码
connectTimeout: 5000 #请求超时时间 毫秒
readTimeout: 60000 #接收超时时间 毫秒
localImagePath: /server/data/images #图片本地存储地址
data-url: https://b-test.prevailcloud.com/pangu/jingwei/thirdclient/command/pb/approval/result
image: image:
similarityPath: http://127.0.0.1:8000/api/similarity/ similarityPath: http://127.0.0.1:8000/api/similarity/
classifyPath: http://127.0.0.1:8000/api/classify/ classifyPath: http://127.0.0.1:8000/api/classify/

@ -1,3 +1,3 @@
spring: spring:
profiles: profiles:
active: pro active: dev

Loading…
Cancel
Save