Browse Source

初次上传git,版本最新。

jessie 5 years ago
commit
9a474c8c42
100 changed files with 8263 additions and 0 deletions
  1. 225 0
      mvnw
  2. 143 0
      mvnw.cmd
  3. 294 0
      pom.xml
  4. 16 0
      src/main/java/com/sprivacy/pms/PmsApplication.java
  5. 13 0
      src/main/java/com/sprivacy/pms/ServletInitializer.java
  6. 57 0
      src/main/java/com/sprivacy/pms/config/BirthRemindScheduleConfig.java
  7. 34 0
      src/main/java/com/sprivacy/pms/config/CorsConfig.java
  8. 57 0
      src/main/java/com/sprivacy/pms/config/DepartureRemindScheduleConfig.java
  9. 25 0
      src/main/java/com/sprivacy/pms/config/MybatisPlusConfig.java
  10. 15 0
      src/main/java/com/sprivacy/pms/config/PmsConfig.java
  11. 28 0
      src/main/java/com/sprivacy/pms/config/WebMvcConfig.java
  12. 122 0
      src/main/java/com/sprivacy/pms/controller/ArticleController.java
  13. 67 0
      src/main/java/com/sprivacy/pms/controller/BirthRemindController.java
  14. 60 0
      src/main/java/com/sprivacy/pms/controller/CategoryItemController.java
  15. 40 0
      src/main/java/com/sprivacy/pms/controller/CountController.java
  16. 66 0
      src/main/java/com/sprivacy/pms/controller/DepartureRemindController.java
  17. 78 0
      src/main/java/com/sprivacy/pms/controller/ImageController.java
  18. 237 0
      src/main/java/com/sprivacy/pms/controller/PerController.java
  19. 63 0
      src/main/java/com/sprivacy/pms/controller/ProvinceController.java
  20. 105 0
      src/main/java/com/sprivacy/pms/controller/RelController.java
  21. 25 0
      src/main/java/com/sprivacy/pms/controller/SysPermissionController.java
  22. 15 0
      src/main/java/com/sprivacy/pms/controller/SysRoleController.java
  23. 78 0
      src/main/java/com/sprivacy/pms/controller/SysRolePermissionController.java
  24. 24 0
      src/main/java/com/sprivacy/pms/controller/SysUserRoleController.java
  25. 45 0
      src/main/java/com/sprivacy/pms/controller/TempFileResultController.java
  26. 1727 0
      src/main/java/com/sprivacy/pms/controller/TestController.java
  27. 256 0
      src/main/java/com/sprivacy/pms/controller/UploadController.java
  28. 60 0
      src/main/java/com/sprivacy/pms/controller/UserController.java
  29. 43 0
      src/main/java/com/sprivacy/pms/controller/WageController.java
  30. 28 0
      src/main/java/com/sprivacy/pms/exception/PmsException.java
  31. 25 0
      src/main/java/com/sprivacy/pms/exception/PmsExceptionHandler.java
  32. 37 0
      src/main/java/com/sprivacy/pms/exception/PmsResException.java
  33. 231 0
      src/main/java/com/sprivacy/pms/form/article/ArticleParam.java
  34. 46 0
      src/main/java/com/sprivacy/pms/form/category/CategoryItemAddParam.java
  35. 57 0
      src/main/java/com/sprivacy/pms/form/count/CountByAge.java
  36. 83 0
      src/main/java/com/sprivacy/pms/form/count/CountByEducation.java
  37. 84 0
      src/main/java/com/sprivacy/pms/form/count/CountByJobRank.java
  38. 39 0
      src/main/java/com/sprivacy/pms/form/count/CountByJobTitle.java
  39. 66 0
      src/main/java/com/sprivacy/pms/form/count/CountByPerNature.java
  40. 36 0
      src/main/java/com/sprivacy/pms/form/count/CountByPoliticsStatus.java
  41. 75 0
      src/main/java/com/sprivacy/pms/form/count/CountByWorkAge.java
  42. 72 0
      src/main/java/com/sprivacy/pms/form/count/CountInfo.java
  43. 87 0
      src/main/java/com/sprivacy/pms/form/per/AutoPerForm.java
  44. 18 0
      src/main/java/com/sprivacy/pms/form/per/EducationInfo.java
  45. 18 0
      src/main/java/com/sprivacy/pms/form/per/HealthStatusInfo.java
  46. 77 0
      src/main/java/com/sprivacy/pms/form/per/PerForm.java
  47. 56 0
      src/main/java/com/sprivacy/pms/form/per/PerInfoList.java
  48. 18 0
      src/main/java/com/sprivacy/pms/form/per/PerNatureInfo.java
  49. 189 0
      src/main/java/com/sprivacy/pms/form/per/PerQueryParam.java
  50. 172 0
      src/main/java/com/sprivacy/pms/form/per/PerRegisterList.java
  51. 53 0
      src/main/java/com/sprivacy/pms/form/per/PerRelation.java
  52. 18 0
      src/main/java/com/sprivacy/pms/form/per/PoliticsStatusInfo.java
  53. 28 0
      src/main/java/com/sprivacy/pms/form/per/QueryParam.java
  54. 18 0
      src/main/java/com/sprivacy/pms/form/per/SexInfo.java
  55. 87 0
      src/main/java/com/sprivacy/pms/form/per/SortParam.java
  56. 40 0
      src/main/java/com/sprivacy/pms/form/province/ProvinceCityInfo.java
  57. 27 0
      src/main/java/com/sprivacy/pms/form/remind/RemindDealParam.java
  58. 38 0
      src/main/java/com/sprivacy/pms/form/users/AuthorityParam.java
  59. 99 0
      src/main/java/com/sprivacy/pms/form/users/BackUser.java
  60. 27 0
      src/main/java/com/sprivacy/pms/form/users/LoginUser.java
  61. 29 0
      src/main/java/com/sprivacy/pms/form/users/RolePermission.java
  62. 49 0
      src/main/java/com/sprivacy/pms/form/users/RolePermissionInfo.java
  63. 50 0
      src/main/java/com/sprivacy/pms/form/users/UserRole.java
  64. 10 0
      src/main/java/com/sprivacy/pms/form/users/UserRoleInfo.java
  65. 50 0
      src/main/java/com/sprivacy/pms/form/users/UserRolePermission.java
  66. 38 0
      src/main/java/com/sprivacy/pms/form/users/UserRolePermissionInfo.java
  67. 46 0
      src/main/java/com/sprivacy/pms/http/HttpResponse.java
  68. 40 0
      src/main/java/com/sprivacy/pms/http/HttpResponseUtils.java
  69. 18 0
      src/main/java/com/sprivacy/pms/mapper/ArticleMapper.java
  70. 22 0
      src/main/java/com/sprivacy/pms/mapper/BirthRemindMapper.java
  71. 17 0
      src/main/java/com/sprivacy/pms/mapper/CategoryItemMapper.java
  72. 17 0
      src/main/java/com/sprivacy/pms/mapper/CityMapper.java
  73. 15 0
      src/main/java/com/sprivacy/pms/mapper/CronMapper.java
  74. 26 0
      src/main/java/com/sprivacy/pms/mapper/DepartureRemindMapper.java
  75. 22 0
      src/main/java/com/sprivacy/pms/mapper/EduRecMapper.java
  76. 22 0
      src/main/java/com/sprivacy/pms/mapper/FamRelMapper.java
  77. 15 0
      src/main/java/com/sprivacy/pms/mapper/ImageMapper.java
  78. 36 0
      src/main/java/com/sprivacy/pms/mapper/PerMapper.java
  79. 19 0
      src/main/java/com/sprivacy/pms/mapper/ProvinceMapper.java
  80. 22 0
      src/main/java/com/sprivacy/pms/mapper/RelMapper.java
  81. 21 0
      src/main/java/com/sprivacy/pms/mapper/RewRecMapper.java
  82. 21 0
      src/main/java/com/sprivacy/pms/mapper/SocRelMapper.java
  83. 18 0
      src/main/java/com/sprivacy/pms/mapper/SysPermissionMapper.java
  84. 22 0
      src/main/java/com/sprivacy/pms/mapper/SysRoleMapper.java
  85. 19 0
      src/main/java/com/sprivacy/pms/mapper/SysRolePermissionMapper.java
  86. 22 0
      src/main/java/com/sprivacy/pms/mapper/SysUserRoleMapper.java
  87. 18 0
      src/main/java/com/sprivacy/pms/mapper/TempFileResultMapper.java
  88. 21 0
      src/main/java/com/sprivacy/pms/mapper/UserMapper.java
  89. 14 0
      src/main/java/com/sprivacy/pms/mapper/WageMapper.java
  90. 22 0
      src/main/java/com/sprivacy/pms/mapper/WorkRecMapper.java
  91. 185 0
      src/main/java/com/sprivacy/pms/model/Article.java
  92. 303 0
      src/main/java/com/sprivacy/pms/model/BirthRemind.java
  93. 77 0
      src/main/java/com/sprivacy/pms/model/CategoryItem.java
  94. 41 0
      src/main/java/com/sprivacy/pms/model/City.java
  95. 43 0
      src/main/java/com/sprivacy/pms/model/Cron.java
  96. 313 0
      src/main/java/com/sprivacy/pms/model/DepartureRemind.java
  97. 68 0
      src/main/java/com/sprivacy/pms/model/Image.java
  98. 283 0
      src/main/java/com/sprivacy/pms/model/Per.java
  99. 99 0
      src/main/java/com/sprivacy/pms/model/PerEduRec.java
  100. 123 0
      src/main/java/com/sprivacy/pms/model/PerFamRel.java

+ 225 - 0
mvnw

@@ -0,0 +1,225 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ----------------------------------------------------------------------------
+
+# ----------------------------------------------------------------------------
+# Maven2 Start Up Batch script
+#
+# Required ENV vars:
+# ------------------
+#   JAVA_HOME - location of a JDK home dir
+#
+# Optional ENV vars
+# -----------------
+#   M2_HOME - location of maven2's installed home dir
+#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
+#     e.g. to debug Maven itself, use
+#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+# ----------------------------------------------------------------------------
+
+if [ -z "$MAVEN_SKIP_RC" ] ; then
+
+  if [ -f /etc/mavenrc ] ; then
+    . /etc/mavenrc
+  fi
+
+  if [ -f "$HOME/.mavenrc" ] ; then
+    . "$HOME/.mavenrc"
+  fi
+
+fi
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false;
+darwin=false;
+mingw=false
+case "`uname`" in
+  CYGWIN*) cygwin=true ;;
+  MINGW*) mingw=true;;
+  Darwin*) darwin=true
+    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
+    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
+    if [ -z "$JAVA_HOME" ]; then
+      if [ -x "/usr/libexec/java_home" ]; then
+        export JAVA_HOME="`/usr/libexec/java_home`"
+      else
+        export JAVA_HOME="/Library/Java/Home"
+      fi
+    fi
+    ;;
+esac
+
+if [ -z "$JAVA_HOME" ] ; then
+  if [ -r /etc/gentoo-release ] ; then
+    JAVA_HOME=`java-config --jre-home`
+  fi
+fi
+
+if [ -z "$M2_HOME" ] ; then
+  ## resolve links - $0 may be a link to maven's home
+  PRG="$0"
+
+  # need this for relative symlinks
+  while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+      PRG="$link"
+    else
+      PRG="`dirname "$PRG"`/$link"
+    fi
+  done
+
+  saveddir=`pwd`
+
+  M2_HOME=`dirname "$PRG"`/..
+
+  # make it fully qualified
+  M2_HOME=`cd "$M2_HOME" && pwd`
+
+  cd "$saveddir"
+  # echo Using m2 at $M2_HOME
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin ; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME=`cygpath --unix "$M2_HOME"`
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+fi
+
+# For Migwn, ensure paths are in UNIX format before anything is touched
+if $mingw ; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME="`(cd "$M2_HOME"; pwd)`"
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
+  # TODO classpath?
+fi
+
+if [ -z "$JAVA_HOME" ]; then
+  javaExecutable="`which javac`"
+  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
+    # readlink(1) is not available as standard on Solaris 10.
+    readLink=`which readlink`
+    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
+      if $darwin ; then
+        javaHome="`dirname \"$javaExecutable\"`"
+        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
+      else
+        javaExecutable="`readlink -f \"$javaExecutable\"`"
+      fi
+      javaHome="`dirname \"$javaExecutable\"`"
+      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
+      JAVA_HOME="$javaHome"
+      export JAVA_HOME
+    fi
+  fi
+fi
+
+if [ -z "$JAVACMD" ] ; then
+  if [ -n "$JAVA_HOME"  ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+      # IBM's JDK on AIX uses strange locations for the executables
+      JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+      JAVACMD="$JAVA_HOME/bin/java"
+    fi
+  else
+    JAVACMD="`which java`"
+  fi
+fi
+
+if [ ! -x "$JAVACMD" ] ; then
+  echo "Error: JAVA_HOME is not defined correctly." >&2
+  echo "  We cannot execute $JAVACMD" >&2
+  exit 1
+fi
+
+if [ -z "$JAVA_HOME" ] ; then
+  echo "Warning: JAVA_HOME environment variable is not set."
+fi
+
+CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
+
+# traverses directory structure from process work directory to filesystem root
+# first directory with .mvn subdirectory is considered project base directory
+find_maven_basedir() {
+
+  if [ -z "$1" ]
+  then
+    echo "Path not specified to find_maven_basedir"
+    return 1
+  fi
+
+  basedir="$1"
+  wdir="$1"
+  while [ "$wdir" != '/' ] ; do
+    if [ -d "$wdir"/.mvn ] ; then
+      basedir=$wdir
+      break
+    fi
+    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
+    if [ -d "${wdir}" ]; then
+      wdir=`cd "$wdir/.."; pwd`
+    fi
+    # end of workaround
+  done
+  echo "${basedir}"
+}
+
+# concatenates all lines of a file
+concat_lines() {
+  if [ -f "$1" ]; then
+    echo "$(tr -s '\n' ' ' < "$1")"
+  fi
+}
+
+BASE_DIR=`find_maven_basedir "$(pwd)"`
+if [ -z "$BASE_DIR" ]; then
+  exit 1;
+fi
+
+export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
+echo $MAVEN_PROJECTBASEDIR
+MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME=`cygpath --path --windows "$M2_HOME"`
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
+    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
+fi
+
+WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+exec "$JAVACMD" \
+  $MAVEN_OPTS \
+  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
+  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
+  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

+ 143 - 0
mvnw.cmd

@@ -0,0 +1,143 @@
+@REM ----------------------------------------------------------------------------
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements.  See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership.  The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License.  You may obtain a copy of the License at
+@REM
+@REM    http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied.  See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM ----------------------------------------------------------------------------
+
+@REM ----------------------------------------------------------------------------
+@REM Maven2 Start Up Batch script
+@REM
+@REM Required ENV vars:
+@REM JAVA_HOME - location of a JDK home dir
+@REM
+@REM Optional ENV vars
+@REM M2_HOME - location of maven2's installed home dir
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
+@REM     e.g. to debug Maven itself, use
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+@REM ----------------------------------------------------------------------------
+
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
+@echo off
+@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
+@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
+
+@REM set %HOME% to equivalent of $HOME
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
+
+@REM Execute a user defined script before this one
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
+if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
+if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
+:skipRcPre
+
+@setlocal
+
+set ERROR_CODE=0
+
+@REM To isolate internal variables from possible post scripts, we use another setlocal
+@setlocal
+
+@REM ==== START VALIDATION ====
+if not "%JAVA_HOME%" == "" goto OkJHome
+
+echo.
+echo Error: JAVA_HOME not found in your environment. >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+:OkJHome
+if exist "%JAVA_HOME%\bin\java.exe" goto init
+
+echo.
+echo Error: JAVA_HOME is set to an invalid directory. >&2
+echo JAVA_HOME = "%JAVA_HOME%" >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+@REM ==== END VALIDATION ====
+
+:init
+
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
+@REM Fallback to current working directory if not found.
+
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
+
+set EXEC_DIR=%CD%
+set WDIR=%EXEC_DIR%
+:findBaseDir
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
+cd ..
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
+set WDIR=%CD%
+goto findBaseDir
+
+:baseDirFound
+set MAVEN_PROJECTBASEDIR=%WDIR%
+cd "%EXEC_DIR%"
+goto endDetectBaseDir
+
+:baseDirNotFound
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
+cd "%EXEC_DIR%"
+
+:endDetectBaseDir
+
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
+
+@setlocal EnableExtensions EnableDelayedExpansion
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
+
+:endReadAdditionalConfig
+
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
+
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
+if ERRORLEVEL 1 goto error
+goto end
+
+:error
+set ERROR_CODE=1
+
+:end
+@endlocal & set ERROR_CODE=%ERROR_CODE%
+
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
+if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
+if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
+:skipRcPost
+
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
+if "%MAVEN_BATCH_PAUSE%" == "on" pause
+
+if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
+
+exit /B %ERROR_CODE%

+ 294 - 0
pom.xml

@@ -0,0 +1,294 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sprivacy</groupId>
+    <artifactId>pms</artifactId>
+    <version>1.0</version>
+<!--    <packaging>war</packaging>-->
+    <packaging>jar</packaging>
+
+    <name>pms</name>
+    <description>Personnel management platform</description>
+
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.0.5.RELEASE</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <java.version>1.8</java.version>
+        <swagger.version>2.8.0</swagger.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-tomcat</artifactId>
+            <!--<scope>provided</scope>-->
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid-spring-boot-starter</artifactId>
+            <version>1.1.10</version>
+        </dependency>
+
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>${swagger.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>${swagger.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.51</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>4.0.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>4.0.0</version>
+        </dependency>
+
+        <!-- 新入 -->
+        <dependency>
+            <groupId>cglib</groupId>
+            <artifactId>cglib</artifactId>
+            <version>3.1</version>
+        </dependency>
+
+
+
+
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-compress</artifactId>
+            <version>1.17</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.xmlbeans</groupId>
+            <artifactId>xmlbeans</artifactId>
+            <version>3.0.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.0.5</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>joda-time</groupId>
+            <artifactId>joda-time</artifactId>
+        </dependency>
+
+        <!--<dependency>-->
+            <!--<groupId>com.baomidou</groupId>-->
+            <!--<artifactId>mybatis-plus</artifactId>-->
+            <!--<version>2.1.8</version>-->
+        <!--</dependency>-->
+
+        <dependency>
+            <groupId>com.squareup.okhttp3</groupId>
+            <artifactId>okhttp</artifactId>
+            <version>3.11.0</version>
+        </dependency>
+
+
+        <!-- zip & rar 包 -->
+        <!-- https://mvnrepository.com/artifact/com.github.junrar/junrar -->
+        <dependency>
+            <groupId>com.github.junrar</groupId>
+            <artifactId>junrar</artifactId>
+            <version>0.7</version>
+        </dependency>
+
+        <!-- https://mvnrepository.com/artifact/net.lingala.zip4j/zip4j -->
+        <dependency>
+            <groupId>net.lingala.zip4j</groupId>
+            <artifactId>zip4j</artifactId>
+            <version>1.3.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>1.0.3</version>
+        </dependency>
+
+        <!--<dependency>-->
+            <!--<groupId>commons-logging</groupId>-->
+            <!--<artifactId>commons-logging</artifactId>-->
+            <!--<version>1.2</version>-->
+        <!--</dependency>-->
+        <!--<dependency>-->
+            <!--<groupId>org.apache.commons</groupId>-->
+            <!--<artifactId>commons-vfs2</artifactId>-->
+            <!--<version>2.2</version>-->
+        <!--</dependency>-->
+        <!--<dependency>-->
+            <!--<groupId>org.apache.commons</groupId>-->
+            <!--<artifactId>commons-io</artifactId>-->
+            <!--<version>1.3.2</version>-->
+            <!--<scope>test</scope>-->
+        <!--</dependency>-->
+
+
+
+
+
+
+
+        <!-- 导入zip解压包 -->
+        <!--<dependency>-->
+            <!--<groupId>org.apache.ant</groupId>-->
+            <!--<artifactId>ant</artifactId>-->
+            <!--<version>1.6.5</version>-->
+        <!--</dependency>-->
+        <!--&lt;!&ndash;<dependency>&ndash;&gt;-->
+
+            <!--&lt;!&ndash;<groupId>ant</groupId>&ndash;&gt;-->
+
+            <!--&lt;!&ndash;<artifactId>ant</artifactId>&ndash;&gt;-->
+
+            <!--&lt;!&ndash;<version>1.6.5</version>&ndash;&gt;-->
+
+        <!--&lt;!&ndash;</dependency>&ndash;&gt;-->
+
+        <!--&lt;!&ndash; new &ndash;&gt;-->
+        <!--&lt;!&ndash; https://mvnrepository.com/artifact/com.github.junrar/junrar &ndash;&gt;-->
+        <!--<dependency>-->
+            <!--<groupId>com.github.junrar</groupId>-->
+            <!--<artifactId>junrar</artifactId>-->
+            <!--<version>4.0.0</version>-->
+        <!--</dependency>-->
+
+
+
+        <!--&lt;!&ndash; 导入rar解压包 &ndash;&gt;-->
+        <!--<dependency>-->
+            <!--<groupId>com.github.junrar</groupId>-->
+            <!--<artifactId>junrar</artifactId>-->
+            <!--<version>3.1.0</version>-->
+        <!--</dependency>-->
+
+
+
+        <!--  <dependency>-->
+        <!--<groupId>commons-fileupload</groupId>-->
+        <!--<artifactId>commons-fileupload</artifactId>-->
+        <!--<version>1.3.1</version>-->
+    <!--</dependency>-->
+        <!--<dependency>-->
+            <!--<groupId>commons-io</groupId>-->
+            <!--<artifactId>commons-io</artifactId>-->
+            <!--<version>2.4</version>-->
+        <!--</dependency>-->
+
+
+        <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
+        <!--<dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>1.2</version>
+        </dependency>
+        &lt;!&ndash; https://mvnrepository.com/artifact/org.gnu/gnu-crypto &ndash;&gt;
+        <dependency>
+            <groupId>org.gnu</groupId>
+            <artifactId>gnu-crypto</artifactId>
+            <version>2.0.1</version>
+        </dependency>
+
+        &lt;!&ndash; https://mvnrepository.com/artifact/commons-io/commons-io &ndash;&gt;
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.6</version>
+        </dependency>
+        &lt;!&ndash; https://mvnrepository.com/artifact/com.github.junrar/junrar &ndash;&gt;
+        <dependency>
+            <groupId>com.github.junrar</groupId>
+            <artifactId>junrar</artifactId>
+            <version>3.1.0</version>
+        </dependency>-->
+
+        <!--&lt;!&ndash;处理2003 excel&ndash;&gt;-->
+        <!--<dependency>-->
+            <!--<groupId>org.apache.poi</groupId>-->
+            <!--<artifactId>poi</artifactId>-->
+            <!--<version>3.16</version>-->
+        <!--</dependency>-->
+        <!--&lt;!&ndash;处理2007 excel&ndash;&gt;-->
+        <!--<dependency>-->
+            <!--<groupId>org.apache.poi</groupId>-->
+            <!--<artifactId>poi-ooxml</artifactId>-->
+            <!--<version>3.16</version>-->
+        <!--</dependency>-->
+
+
+
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+
+        </plugins>
+    </build>
+
+
+</project>

+ 16 - 0
src/main/java/com/sprivacy/pms/PmsApplication.java

@@ -0,0 +1,16 @@
+package com.sprivacy.pms;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@SpringBootApplication
+@EnableSwagger2
+@MapperScan("com.sprivacy.pms.mapper")
+public class PmsApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(PmsApplication.class, args);
+    }
+}

+ 13 - 0
src/main/java/com/sprivacy/pms/ServletInitializer.java

@@ -0,0 +1,13 @@
+package com.sprivacy.pms;
+
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+
+public class ServletInitializer extends SpringBootServletInitializer {
+
+    @Override
+    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+        return application.sources(PmsApplication.class);
+    }
+
+}

+ 57 - 0
src/main/java/com/sprivacy/pms/config/BirthRemindScheduleConfig.java

@@ -0,0 +1,57 @@
+package com.sprivacy.pms.config;
+
+import com.sprivacy.pms.mapper.CronMapper;
+import com.sprivacy.pms.model.Cron;
+import com.sprivacy.pms.service.BirthRemindService;
+import com.sprivacy.pms.util.DateUtils;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.SchedulingConfigurer;
+import org.springframework.scheduling.config.ScheduledTaskRegistrar;
+import org.springframework.scheduling.support.CronTrigger;
+
+import java.text.ParseException;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-10-15 13:41
+ * @desc ScheduleConfig
+ **/
+@Configuration
+@EnableScheduling
+public class BirthRemindScheduleConfig implements SchedulingConfigurer {
+
+    private final static org.slf4j.Logger log = LoggerFactory.getLogger(BirthRemindScheduleConfig.class);
+
+    @Autowired
+    private BirthRemindService birthRemindService;
+
+    @Autowired
+    private CronMapper cronMapper;
+
+    @Override
+    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
+        taskRegistrar.addTriggerTask(
+                () -> {
+                    // 开启定时任务
+                    String currentFromatDate = DateUtils.getCurrentFromatDate();
+                    try {
+                        log.info("<******* 统计{生日提醒}定时任务 START *******> " + DateUtils.getCurrentFromatTime());
+                        String startDate = DateUtils.getCurrenStartDateAppend(currentFromatDate);
+                        String endDate = DateUtils.getCurrenEndDateAppend(currentFromatDate);
+                        birthRemindService.ScheduleTaskCount(startDate,endDate);
+                        log.info("<******* 统计{生日提醒}定时任务 END  *******> " + DateUtils.getCurrentFromatTime());
+                    } catch (ParseException e) {
+                        e.printStackTrace();
+                    }
+                },
+                triggerContext -> {
+                    // 设置执行周期 每天的00点03分开始统计
+                    Cron selectedCron = cronMapper.selectedById(1L);
+                    String cron = selectedCron.getCron();
+                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
+                });
+    }
+}

+ 34 - 0
src/main/java/com/sprivacy/pms/config/CorsConfig.java

@@ -0,0 +1,34 @@
+package com.sprivacy.pms.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * @author fanglang
+ * @date 2018-01-30 11:03
+ * @desc CorsConfig跨域配置
+ */
+@Configuration
+public class CorsConfig {
+    private CorsConfiguration buildConfig() {
+        CorsConfiguration corsConfiguration = new CorsConfiguration();
+        // 1
+        corsConfiguration.addAllowedOrigin("*");
+        // 2
+        corsConfiguration.addAllowedHeader("*");
+        // 3
+        corsConfiguration.addAllowedMethod("*");
+        return corsConfiguration;
+    }
+
+    @Bean
+    public CorsFilter corsFilter() {
+        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+        // 4
+        source.registerCorsConfiguration("/**", buildConfig());
+        return new CorsFilter(source);
+    }
+}

+ 57 - 0
src/main/java/com/sprivacy/pms/config/DepartureRemindScheduleConfig.java

@@ -0,0 +1,57 @@
+package com.sprivacy.pms.config;
+
+import com.sprivacy.pms.mapper.CronMapper;
+import com.sprivacy.pms.model.Cron;
+import com.sprivacy.pms.service.DepartureRemindService;
+import com.sprivacy.pms.util.DateUtils;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.SchedulingConfigurer;
+import org.springframework.scheduling.config.ScheduledTaskRegistrar;
+import org.springframework.scheduling.support.CronTrigger;
+
+import java.text.ParseException;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-02-25 16:41
+ * @desc DepartureRemindScheduleConfig
+ **/
+@Configuration
+@EnableScheduling
+public class DepartureRemindScheduleConfig implements SchedulingConfigurer {
+    private final static org.slf4j.Logger log = LoggerFactory.getLogger(DepartureRemindScheduleConfig.class);
+
+    @Autowired
+    private DepartureRemindService departureRemindService;
+
+    @Autowired
+    private CronMapper cronMapper;
+
+    @Override
+    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
+        taskRegistrar.addTriggerTask(
+                () -> {
+                    // 开启定时任务
+                    log.info("<******* 统计{离职提醒}定时任务 START *******> " + DateUtils.getCurrentFromatTime());
+                    String currentFromatDate = DateUtils.getCurrentFromatDate();
+                    try {
+                        String startDate = DateUtils.getCurrenStartDateAppend(currentFromatDate);
+                        String endDate = DateUtils.getCurrenEndDateAppend(currentFromatDate);
+                        departureRemindService.ScheduleTaskCount(startDate, endDate);
+                        log.info("<******* 统计{离职提醒}定时任务 END *******> " + DateUtils.getCurrentFromatTime());
+                    } catch (ParseException e) {
+                        e.printStackTrace();
+                    }
+
+                },
+                triggerContext -> {
+                    // 设置执行周期 每月1号的00点03分开始统计
+                    Cron selectedCron = cronMapper.selectedById(2L);
+                    String cron = selectedCron.getCron();
+                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
+                });
+    }
+}

+ 25 - 0
src/main/java/com/sprivacy/pms/config/MybatisPlusConfig.java

@@ -0,0 +1,25 @@
+package com.sprivacy.pms.config;
+
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+/**
+ * @author fanglang
+ * @date 2018-11-14 16:49
+ * @desc
+ */
+@EnableTransactionManagement
+@Configuration
+@MapperScan("com.sprivacy.pms.mapper")
+public class MybatisPlusConfig {
+    /**
+     * 分页插件
+     */
+    @Bean
+    public PaginationInterceptor paginationInterceptor() {
+        return new PaginationInterceptor();
+    }
+}

+ 15 - 0
src/main/java/com/sprivacy/pms/config/PmsConfig.java

@@ -0,0 +1,15 @@
+package com.sprivacy.pms.config;
+
+import com.sprivacy.pms.properties.PmsProperties;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author fanglang
+ * @date 2018-10-31 9:06
+ * @desc 系统配置
+ */
+@Configuration
+@EnableConfigurationProperties(PmsProperties.class)
+public class PmsConfig {
+}

+ 28 - 0
src/main/java/com/sprivacy/pms/config/WebMvcConfig.java

@@ -0,0 +1,28 @@
+package com.sprivacy.pms.config;
+
+
+import com.sprivacy.pms.properties.PmsProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * @Author: guanhuijuan
+ * @Description: MVC
+ * @Date: 2018/6/26_14:23
+ */
+@Configuration
+public class WebMvcConfig implements WebMvcConfigurer {
+
+    @Autowired
+    private PmsProperties properties;
+
+    @Override
+    public void addResourceHandlers(ResourceHandlerRegistry registry) {
+        // 对已上传的文件地址做映射访问
+        registry
+                .addResourceHandler("/img/**")
+                .addResourceLocations("file:" + properties.getCommon().getFileDir());
+    }
+}

+ 122 - 0
src/main/java/com/sprivacy/pms/controller/ArticleController.java

@@ -0,0 +1,122 @@
+package com.sprivacy.pms.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sprivacy.pms.form.article.ArticleParam;
+import com.sprivacy.pms.http.HttpResponse;
+import com.sprivacy.pms.http.HttpResponseUtils;
+import com.sprivacy.pms.model.Article;
+import com.sprivacy.pms.service.ArticleService;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-15 13:42
+ * @desc ArticleController
+ **/
+@RestController
+public class ArticleController {
+    private final static Logger log = LoggerFactory.getLogger(ArticleController.class);
+
+    @Autowired
+    private ArticleService articleService;
+
+    @ApiOperation(value = "文章录入")
+    @PostMapping(value = "/article/addArticle")
+    public HttpResponse addArticle(@RequestBody Article article) {
+        log.info("<******* 文章录入 START *******> [method:/article/addArticle]-article{入参}:"+JSON.toJSONString(article));
+        if (null != article){
+            int insertArticle = articleService.addArticle(article);
+            if (insertArticle > 0){
+                log.info("<******* 文章录入 END *******> responseData{}:" + "该文章录入成功,"+insertArticle);
+                return HttpResponseUtils.ok(1,"该文章录入成功",insertArticle);
+            }else {
+                log.info("<******* 文章录入 END *******> responseData{}:" + "该文章未录入成功,"+insertArticle);
+                return HttpResponseUtils.error(0,"该文章录入失败",insertArticle);
+            }
+        }else {
+            log.info("<******* 文章录入 END *******> responseData{}:" + "该文章内容存在参数异常,"+null);
+            return HttpResponseUtils.error(0,"该文章内容存在参数异常",null);
+        }
+    }
+
+    @ApiOperation(value = "某文章更新接口")
+    @PostMapping(value = "/article/updateArticle")
+    public HttpResponse updateArticle(@RequestBody Article article) {
+        log.info("<******* 某文章更新接口 START *******> [method:/article/updateArticle]-article{入参}:"+JSON.toJSONString(article));
+        int updatedArticle = articleService.updatedArticle(article);
+        if (updatedArticle > 0){
+            log.info("<******* 某文章更新接口 END *******> responseData{}:" + "文章更新成功,"+updatedArticle);
+            return HttpResponseUtils.ok(1,"文章更新成功",updatedArticle);
+        }else {
+            log.info("<******* 某文章更新接口 END *******> responseData{}:" +  "文章更新成功,"+updatedArticle);
+            return HttpResponseUtils.error(0,"文章更新失败",updatedArticle);
+        }
+    }
+
+    @ApiOperation(value = "获取历史文章")
+    @GetMapping(value = "/article/getArticleList")
+    public HttpResponse getArticleList() {
+        log.info("<******* 获取历史文章 START *******> [method:/article/getArticleList]-get请求。");
+        List<ArticleParam> articleParams = articleService.getArticleList();
+        if (null != articleParams && articleParams.size() > 0){
+            log.info("<******* 获取历史文章 END *******> responseData{}:" + JSON.toJSONString(articleParams));
+            return HttpResponseUtils.ok(1,"获取历史文章列表成功",articleParams);
+        }else {
+            log.info("<******* 获取历史文章 END *******> responseData{}:" + "暂未检索到历史文章," + JSON.toJSONString(articleParams));
+            return HttpResponseUtils.error(0,"暂未检索到历史文章",articleParams);
+        }
+    }
+
+    @ApiOperation(value = "根据文章id获取文章")
+    @PostMapping(value = "/article/getArticleListById")
+    public HttpResponse getArticleListById(String aId) {
+        log.info("<******* 根据文章id获取文章 START *******> [method:/article/getArticleListById]-aId{入参}:" + aId);
+        Article article = articleService.getArticleListById(aId);
+        if (null != article){
+            log.info("<******* 根据文章id获取文章 END *******> responseData{}:" + JSON.toJSONString(article));
+            return HttpResponseUtils.ok(1,"获取文章内容成功",article);
+        }else {
+            log.info("<******* 根据文章id获取文章 END *******> responseData{}:" + JSON.toJSONString(article));
+            return HttpResponseUtils.error(0,"获取文章内容失败",article);
+        }
+    }
+
+    @ApiOperation(value = "根据文章id删除该文章")
+    @PostMapping(value = "/article/deleteArticleById")
+    public HttpResponse deleteArticleById(String aId) {
+        log.info("<******* 根据文章id删除该文章 START *******> [method:/article/deleteArticleById]-aId{入参}:" + aId);
+        int deletedArticle = articleService.deleteArticleById(aId);
+        if (deletedArticle > 0){
+            log.info("<******* 根据文章id删除该文章 END *******> responseData{}:" + "文章删除成功," + deletedArticle);
+            return HttpResponseUtils.ok(1,"文章删除成功",deletedArticle);
+        }else {
+            log.info("<******* 根据文章id删除该文章 END *******> responseData{}:" + "文章删除失败," + deletedArticle);
+            return HttpResponseUtils.error(0,"文章删除失败",deletedArticle);
+        }
+    }
+
+    @ApiOperation(value = "获取历史文章分页接口")
+    @PostMapping(value = "/article/getArticlePageList")
+    public HttpResponse getArticlePageList(Page page) {
+        log.info("<******* 获取历史文章分页接口 START *******> [method:/article/getArticlePageList]-page{入参}:"+JSON.toJSONString(page));
+        List<ArticleParam> articleParams = articleService.getArticlePageList(page);
+        if (null != articleParams && articleParams.size() > 0){
+            log.info("<******* 获取历史文章分页接口 END *******> responseData{}:" + "获取历史文章列表成功," + articleParams);
+            return HttpResponseUtils.ok(1,"获取历史文章列表成功",articleParams);
+        }else {
+            log.info("<******* 获取历史文章分页接口 END *******> responseData{}:" + "暂未检索到历史文章," + articleParams);
+            return HttpResponseUtils.error(0,"暂未检索到历史文章",articleParams);
+        }
+    }
+
+}

+ 67 - 0
src/main/java/com/sprivacy/pms/controller/BirthRemindController.java

@@ -0,0 +1,67 @@
+package com.sprivacy.pms.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.sprivacy.pms.form.remind.RemindDealParam;
+import com.sprivacy.pms.http.HttpResponse;
+import com.sprivacy.pms.http.HttpResponseUtils;
+import com.sprivacy.pms.model.BirthRemind;
+import com.sprivacy.pms.service.BirthRemindService;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-02-25 10:51
+ * @desc BirthRemindController
+ **/
+@RestController
+public class BirthRemindController {
+    private final static Logger log = LoggerFactory.getLogger(BirthRemindController.class);
+
+    @Autowired
+    private BirthRemindService birthRemindService;
+
+    @ApiOperation(value = "获取待处理生日提醒人员列表")
+    @GetMapping(value = "/birth/remind")
+    public HttpResponse getBirthRemind() {
+        log.info("<******* 获取待处理生日提醒人员列表 START *******> [method:/birth/remind]-params{GET}");
+        List<BirthRemind> birthReminds = birthRemindService.getBirthRemind();
+        if (null != birthReminds && birthReminds.size() > 0){
+            log.info("<******* 获取待处理生日提醒人员列表 END *******> responseData{}:" + JSON.toJSONString(birthReminds));
+            return HttpResponseUtils.ok(1,"获取待处理生日提醒人员列表成功",birthReminds);
+        }else {
+            log.info("<******* 获取待处理生日提醒人员列表 END *******> responseData{}:"+ null);
+            return HttpResponseUtils.error(0,"不存在待处理生日提醒人员列表",null);
+        }
+    }
+
+
+    @ApiOperation(value = "更新待处理生日提醒人员方法")
+    @PostMapping(value = "/birth/deal")
+    public HttpResponse dealWithBirthRemind(@RequestBody RemindDealParam remindDealParam) {
+        log.info("<******* 更新待处理生日提醒人员方法 START *******> [method:/birth/deal/{id}]-params{入参}:"+ JSON.toJSONString(remindDealParam));
+        if (null != remindDealParam){
+            int dealedNum = birthRemindService.dealWithBirthRemind(remindDealParam);
+            if (dealedNum > 0){
+                log.info("<******* 更新待处理生日提醒人员方法 START *******> responseData{}:"+ dealedNum);
+                return HttpResponseUtils.ok(1,"更新待处理生日提醒人员成功",dealedNum);
+            }else {
+                log.info("<******* 更新待处理生日提醒人员方法 END *******> responseData{}:"+ null);
+                return HttpResponseUtils.error(0,"更新待处理生日提醒人员失败",null);
+            }
+        }else {
+            log.info("<******* 更新待处理生日提醒人员方法 END *******> responseData{}:"+ "参数为null。");
+            return HttpResponseUtils.error(0,"参数为null",null);
+        }
+    }
+
+
+}

+ 60 - 0
src/main/java/com/sprivacy/pms/controller/CategoryItemController.java

@@ -0,0 +1,60 @@
+package com.sprivacy.pms.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.sprivacy.pms.form.category.CategoryItemAddParam;
+import com.sprivacy.pms.http.HttpResponse;
+import com.sprivacy.pms.http.HttpResponseUtils;
+import com.sprivacy.pms.model.CategoryItem;
+import com.sprivacy.pms.service.CategoryItemService;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-21 14:39
+ * @desc CategoryItemController
+ **/
+@RestController
+public class CategoryItemController {
+    private final static Logger log = LoggerFactory.getLogger(CategoryItemController.class);
+
+    @Autowired
+    private CategoryItemService categoryItemService;
+
+    @ApiOperation(value = "获取所有类目")
+    @GetMapping(value = "/category/item/getCategoryItems")
+    public HttpResponse getCategoryItems() {
+        log.info("<******* 获取所有类目 START *******> [method:/category/item/getCategoryItems]-get请求。");
+        List<CategoryItem> categoryItems = categoryItemService.getCategoryItems();
+        if (null != categoryItems && categoryItems.size() > 0){
+            log.info("<******* 获取所有类目 END *******> responseData{}:" + "获取所有类目列表成功,"+ JSON.toJSONString(categoryItems));
+            return HttpResponseUtils.ok(1,"获取所有类目列表成功",categoryItems);
+        }else {
+            log.info("<******* 获取所有类目 END *******> responseData{}:" + "暂未检索到所有类目,请联系技术人员," + JSON.toJSONString(categoryItems));
+            return HttpResponseUtils.error(0,"暂未检索到所有类目,请联系技术人员",categoryItems);
+        }
+    }
+
+    @ApiOperation(value = "添加类目")
+    @PostMapping(value = "/category/item/addCategoryItem")
+    public HttpResponse addCategoryItem(@RequestBody CategoryItemAddParam categoryItemAddParam) {
+        log.info("<******* 添加类目 START *******> [method:/category/item/addCategoryItem]-categoryItemAddParam{入参}:"+JSON.toJSONString(categoryItemAddParam));
+        int updatedCategoryItem = categoryItemService.addCategoryItem(categoryItemAddParam);
+        if (updatedCategoryItem > 0){
+            log.info("<******* 添加类目 END *******> responseData{}:" + "添加类目成功," + JSON.toJSONString(updatedCategoryItem));
+            return HttpResponseUtils.ok(1,"添加类目成功",updatedCategoryItem);
+        }else {
+            log.info("<******* 添加类目 END *******> responseData{}:" + "添加类目失败," + JSON.toJSONString(updatedCategoryItem));
+            return HttpResponseUtils.error(0,"添加类目失败",updatedCategoryItem);
+        }
+    }
+
+}

+ 40 - 0
src/main/java/com/sprivacy/pms/controller/CountController.java

@@ -0,0 +1,40 @@
+package com.sprivacy.pms.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.sprivacy.pms.form.count.CountInfo;
+import com.sprivacy.pms.form.per.PerForm;
+import com.sprivacy.pms.http.HttpResponse;
+import com.sprivacy.pms.http.HttpResponseUtils;
+import com.sprivacy.pms.service.PerService;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-18 15:19
+ * @desc CountController
+ **/
+@RestController
+public class CountController {
+    private final static Logger log = LoggerFactory.getLogger(PerController.class);
+
+    @Autowired
+    private PerService perService;
+
+    @ApiOperation(value = "获取统计信息")
+    @PostMapping(value = "/count")
+    public HttpResponse getCountInfo(@RequestBody PerForm form) {
+        log.info("<******* 获取统计信息 START *******> [method:/count]-form{入参}:"+JSON.toJSONString(form));
+        List<CountInfo> countInfos = perService.getCountInfo();
+        log.info("<******* 获取统计信息 END *******> responseData{}:" + JSON.toJSONString(countInfos));
+        return HttpResponseUtils.ok(1,"获取统计信息成功",countInfos);
+    }
+
+}

+ 66 - 0
src/main/java/com/sprivacy/pms/controller/DepartureRemindController.java

@@ -0,0 +1,66 @@
+package com.sprivacy.pms.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.sprivacy.pms.form.remind.RemindDealParam;
+import com.sprivacy.pms.http.HttpResponse;
+import com.sprivacy.pms.http.HttpResponseUtils;
+import com.sprivacy.pms.model.DepartureRemind;
+import com.sprivacy.pms.service.DepartureRemindService;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.text.ParseException;
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-02-25 10:55
+ * @desc DepartureRemindController
+ **/
+@RestController
+public class DepartureRemindController {
+    private final static Logger log = LoggerFactory.getLogger(DepartureRemindController.class);
+
+    @Autowired
+    private DepartureRemindService departureRemindService;
+
+    @ApiOperation(value = "获取待处理离职提醒人员列表")
+    @GetMapping(value = "/departure/remind")
+    public HttpResponse getDepartureRemind() throws ParseException {
+        log.info("<******* 获取待处理离职提醒人员列表 START *******> [method:/birth/remind]-params{GET}");
+        List<DepartureRemind> departureReminds = departureRemindService.getDepartureRemind();
+        if (null != departureReminds && departureReminds.size() > 0){
+            log.info("<******* 获取待处理离职提醒人员列表 END *******> responseData{}:" + JSON.toJSONString(departureReminds));
+            return HttpResponseUtils.ok(1,"获取待处理离职提醒人员列表成功",departureReminds);
+        }else {
+            log.info("<******* 获取待处理离职提醒人员列表 END *******> responseData{}:"+ null);
+            return HttpResponseUtils.error(0,"不存在待处理离职提醒人员列表",null);
+        }
+    }
+
+    @ApiOperation(value = "更新待处理离职提醒人员方法")
+    @PostMapping(value = "/departure/deal")
+    public HttpResponse dealWithDepartureRemind(@RequestBody RemindDealParam remindDealParam) {
+        log.info("<******* 更新待处理离职提醒人员方法 START *******> [method:/birth/deal/{id}]-params{入参}:"+ JSON.toJSONString(remindDealParam));
+        if (null != remindDealParam){
+            int dealedNum = departureRemindService.dealWithDepartureRemind(remindDealParam);
+            if (dealedNum > 0){
+                log.info("<******* 更新待处理离职提醒人员方法 START *******> responseData{}:"+ dealedNum);
+                return HttpResponseUtils.ok(1,"更新待处理离职提醒人员成功",dealedNum);
+            }else {
+                log.info("<******* 更新待处理离职提醒人员方法 END *******> responseData{}:"+ null);
+                return HttpResponseUtils.error(0,"更新待处理离职提醒人员失败",null);
+            }
+        }else {
+            log.info("<******* 更新待处理离职提醒人员方法 END *******> responseData{}:"+ "参数为null。");
+            return HttpResponseUtils.error(0,"参数为null",null);
+        }
+    }
+
+}

+ 78 - 0
src/main/java/com/sprivacy/pms/controller/ImageController.java

@@ -0,0 +1,78 @@
+package com.sprivacy.pms.controller;
+
+import com.sprivacy.pms.http.HttpResponse;
+import com.sprivacy.pms.http.HttpResponseUtils;
+import com.sprivacy.pms.service.ImageService;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-15 16:13
+ * @desc ImageController
+ **/
+@RestController
+public class ImageController {
+    private final static Logger log = LoggerFactory.getLogger(ImageController.class);
+
+    @Autowired
+    private ImageService imageService;
+
+    @ApiOperation(value = "Base64编码多图片上传接口")
+    @PostMapping(value = "/image/upload/baseSFimages")
+    public HttpResponse addArticleImages(HttpServletRequest request, @RequestBody List<String> uploadImages) {
+        if (uploadImages.size() > 0){
+            List<String> uploadImagePaths = imageService.addArticleImages(request,uploadImages);
+            if (uploadImagePaths.size() > 0){
+                return HttpResponseUtils.ok(1,"Base64编码多图片上传 成功",uploadImagePaths);
+            }else {
+                return HttpResponseUtils.error(0,"Base64编码多图片上传 失败",uploadImagePaths);
+            }
+        }else {
+            return HttpResponseUtils.error(0,"参数报空 上传失败","");
+        }
+
+    }
+
+    @ApiOperation(value = "Base64编码的单张图片上传接口")
+    @PostMapping(value = "/image/upload/baseSFimage")
+    public HttpResponse addSingleArticleImage(HttpServletRequest request, String uploadImage){
+        if (null != uploadImage){
+            String uploadSingleImagePath = imageService.addSingleArticleImages(request,uploadImage);
+            if (null != uploadSingleImagePath &&  !"".equals(uploadSingleImagePath)){
+                return HttpResponseUtils.ok(1,"Base64编码的单张图片上传 成功",uploadSingleImagePath);
+            }else {
+                return HttpResponseUtils.error(0,"Base64编码的单张图片上传 失败",uploadSingleImagePath);
+            }
+        }else {
+            return HttpResponseUtils.error(0,"参数报空 上传失败","");
+        }
+
+    }
+
+    @ApiOperation(value = "单张图片上传接口")
+    @PostMapping(value = "/image/uploadSingleImage")
+    public HttpResponse uploadImage(HttpServletRequest request, MultipartFile uploadImage){
+        if (null != uploadImage){
+            String uploadSingleImagePath = imageService.uploadImage(request,uploadImage);
+            if (null != uploadSingleImagePath &&  !"".equals(uploadSingleImagePath)){
+                return HttpResponseUtils.ok(1,"单张图片上传 成功",uploadSingleImagePath);
+            }else {
+                return HttpResponseUtils.error(0,"单张图片上传 失败",uploadSingleImagePath);
+            }
+        }else {
+            return HttpResponseUtils.error(0,"参数报空 上传失败","");
+        }
+    }
+
+
+}

+ 237 - 0
src/main/java/com/sprivacy/pms/controller/PerController.java

@@ -0,0 +1,237 @@
+package com.sprivacy.pms.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.sprivacy.pms.form.per.*;
+import com.sprivacy.pms.http.HttpResponse;
+import com.sprivacy.pms.http.HttpResponseUtils;
+import com.sprivacy.pms.model.*;
+import com.sprivacy.pms.service.PerService;
+import com.sprivacy.pms.util.PerInfoUtil;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author fanglang
+ * @date 2018-11-01 13:20
+ * @desc 人员控制器
+ */
+@RestController
+public class PerController {
+
+    private final static Logger log = LoggerFactory.getLogger(PerController.class);
+
+    @Autowired
+    private PerService perService;
+
+
+    @ApiOperation(value = "新增人员信息")
+    @PostMapping(value = "/per")
+    public HttpResponse addPersonnel(@RequestBody PerForm form) throws IOException {
+        String checkStr = "";
+        return HttpResponseUtils.ok(perService.savePersonnelForm(form));
+    }
+
+    @ApiOperation(value = "根据人员id获取人员关系列表")
+    @PostMapping(value = "/per/rel/{id}")
+    public HttpResponse getPersonnelRelations(@PathVariable("id") long id) {
+        List<PerRelation> relations = perService.getPersonnelRelations(id);
+        if (null != relations && relations.size() > 0) {
+            return HttpResponseUtils.ok(relations);
+        } else {
+            return HttpResponseUtils.error("没有相关数据");
+        }
+    }
+
+    @ApiOperation(value = "根据人员id获取事件信息")
+    @PostMapping(value = "/per/rec/{id}")
+    public HttpResponse getPersonnelRecords(@PathVariable("id") long id) {
+        return HttpResponseUtils.ok(perService.getPersonnelRecords(id));
+    }
+
+    @ApiOperation(value = "批量新增人员教育经历")
+    @PostMapping(value = "/per/edu")
+    public HttpResponse addEduRecords(@RequestBody List<PerEduRec> eduRecords) {
+        perService.addEduRecords(eduRecords);
+        return HttpResponseUtils.ok();
+    }
+
+    @ApiOperation(value = "批量新增人员工作经历")
+    @PostMapping(value = "/per/work")
+    public HttpResponse addWorkRecords(@RequestBody List<PerWorkRec> workRecords) {
+        perService.addWorkRecords(workRecords);
+        return HttpResponseUtils.ok();
+    }
+
+    @ApiOperation(value = "批量新增人员家庭关系")
+    @PostMapping(value = "/per/fam")
+    public HttpResponse addFamilyRelations(@RequestBody List<PerFamRel> familyRelations) {
+        perService.addFamilyRelations(familyRelations);
+        return HttpResponseUtils.ok();
+    }
+
+    @ApiOperation(value = "批量新增人员社会关系")
+    @PostMapping(value = "/per/soc")
+    public HttpResponse addSocialRelations(@RequestBody List<PerSocRel> socialRelations) {
+        perService.addSocialRelations(socialRelations);
+        return HttpResponseUtils.ok();
+    }
+
+    @ApiOperation(value = "批量新增人员工作经历")
+    @PostMapping(value = "/per/rew")
+    public HttpResponse addRewards(@RequestBody List<PerRewRec> rewards) {
+        perService.addRewards(rewards);
+        return HttpResponseUtils.ok();
+    }
+
+    @ApiOperation(value = "根据关键字查询")
+    @PostMapping(value = "/per/query")
+    public HttpResponse query(@RequestBody QueryParam param) {
+        log.info("<******* 根据关键字查询 START *******> [method:/per/query]-param{入参}:"+JSON.toJSONString(param));
+        log.info("<******* 根据关键字查询 END *******> responseData{}:" + JSON.toJSONString(perService.query(param)));
+        return HttpResponseUtils.ok(perService.query(param));
+    }
+
+    @ApiOperation(value = "批量新增人员信息")
+    @PostMapping(value = "/pers")
+    public HttpResponse addPersonnels(@RequestBody List<PerForm> forms) throws IOException {
+
+
+        log.info("<******* 批量新增人员信息 START *******> [method:/pers]-forms{入参}:"+JSON.toJSONString(forms));
+        List<Long> results = perService.savePersonnelForms(forms);
+        int countRepeatNum = 0;
+        int countUnRepeatNum = 0;
+        for (Long result : results) {
+            if (result.equals(-1L)){
+                countRepeatNum++;
+                log.info("countRepeatNum-->"+countRepeatNum);
+            }else {
+                countUnRepeatNum++;
+                log.info("countUnRepeatNum-->"+countUnRepeatNum);
+            }
+        }
+        String msg = "其中其中重复数据["+countRepeatNum+"]条,未重复数据["+countUnRepeatNum+"]条。";
+        log.info("<******* 批量新增人员信息 END *******> responseData{}:" + msg);
+        return HttpResponseUtils.ok(1,msg,results);
+
+    }
+
+
+    @ApiOperation(value = "根据id获取人员信息&查询详情展示接口")
+    @PostMapping(value = "/per/{id}")
+    public HttpResponse getPersonnel(@PathVariable("id") long id) {
+        log.info("<******* 根据id获取人员信息&查询详情展示接口 START *******> [method:/per/{id}]-id{入参}:" + id);
+        Map<String, Object> maps = perService.getPersonnelForm(id);
+        log.info("<******* 根据id获取人员信息&查询详情展示接口 END *******> responseData{}:" + JSON.toJSONString(maps));
+        return HttpResponseUtils.ok(perService.getPersonnelForm(id));
+    }
+
+
+    @ApiOperation(value = "多条件查询")
+    @PostMapping(value = "/per/multiple/query")
+    public HttpResponse multipleQuery(@RequestBody PerQueryParam perQueryParam){
+        log.info("<******* 多条件查询 START *******> [method:/per/multiple/query]-perQueryParam{入参}:"+JSON.toJSONString(perQueryParam));
+        log.info("<******* 多条件查询 END *******> responseData{}:" + JSON.toJSONString(perService.multipleQuery(perQueryParam)));
+        return HttpResponseUtils.ok(perService.multipleQuery(perQueryParam));
+    }
+
+    @ApiOperation(value = "根据相关字段进行排序")
+    @PostMapping(value = "/per/sorting")
+    public HttpResponse sorting(@RequestBody SortParam sortParam){
+        log.info("<******* 根据相关字段进行排序 START *******> [method:/per/sorting]-sortParam{入参}:"+JSON.toJSONString(sortParam));
+        List<PerForm> perForms = perService.sorting(sortParam);
+        if (null != perForms && perForms.size() > 0){
+            log.info("<******* 根据相关字段进行排序 END *******> responseData{}:" + JSON.toJSONString(perForms));
+            return HttpResponseUtils.ok(1,"获取排序列表成功",perForms);
+        }else {
+            log.info("<******* 根据相关字段进行排序 END *******> responseData{}:" + null);
+            return HttpResponseUtils.ok(1,"获取排序列表失败",perForms);
+        }
+
+    }
+
+    @ApiOperation(value = "获取下拉信息列表")
+    @GetMapping(value = "/per/getInfoList")
+    public HttpResponse getInfoList() {
+        log.info("<******* 获取下拉信息列表 START *******> [method:/per/getInfoList]- get请求。");
+        List<PerInfoList> perInfoLists = PerInfoUtil.getInfoList();
+        if (perInfoLists.size() > 0){
+            log.info("<******* 获取下拉信息列表 END *******> responseData{}:" + JSON.toJSONString(perInfoLists));
+            return HttpResponseUtils.ok(1,"获取下拉信息列表成功",perInfoLists);
+        }else {
+            log.info("<******* 获取下拉信息列表 END *******> responseData{}:" + "获取下拉信息列表失败,为null。");
+            return HttpResponseUtils.ok(1,"获取下拉信息列表失败",null);
+        }
+    }
+
+    @ApiOperation(value = "个人详情修改接口")
+    @PostMapping(value = "/per/editPerInfo")
+    public HttpResponse editPerInfo(@RequestBody List<PerForm> forms) throws IOException {
+        log.info("<******* 个人详情修改接口 START *******> [method:/per/editPerInfo]-forms{入参}:"+JSON.toJSONString(forms));
+        if (null != forms.get(0)){
+            int editedPerInfo = perService.editPerInfo(forms.get(0));
+            if (editedPerInfo > 0){
+                log.info("<******* 个人详情修改接口 END *******> responseData{}:" + JSON.toJSONString(editedPerInfo));
+                return HttpResponseUtils.ok(1,"修改成功!",editedPerInfo);
+            }else {
+                log.info("<******* 个人详情修改接口 END *******> responseData{}:" + "未修改成功!");
+                return HttpResponseUtils.error(0,"未修改成功!",editedPerInfo);
+            }
+        }else {
+            log.info("<******* 个人详情修改接口 END *******> responseData{}:" + "您上传的数据为空,修改失败!");
+            return HttpResponseUtils.error(0,"您上传的数据为空,修改失败!",null);
+        }
+    }
+
+    @ApiOperation(value = "个人详情删除接口")
+    @PostMapping(value = "/per/deletePerInfo")
+    public HttpResponse deletePerInfo(@RequestBody PerForm form) throws IOException {
+        log.info("deletePerInfo 删除参数: " + JSON.toJSONString(form));
+        if (null != form){
+            log.info("deletePerInfo START");
+            int editedPerInfo = perService.deletePerInfo(form);
+            if (editedPerInfo > 0){
+                log.info("deletePerInfo END");
+                return HttpResponseUtils.ok(1,"删除成功!",editedPerInfo);
+            }else if (editedPerInfo == -1){
+                log.info("deletePerInfo END");
+                return HttpResponseUtils.error(0,"您上传的参数为空,删除失败!",null);
+            }else if (editedPerInfo == -2){
+                log.info("deletePerInfo END");
+                return HttpResponseUtils.error(0,"您要删除用户不存在,删除失败!",null);
+            }else if (editedPerInfo == -2){
+                log.info("deletePerInfo END");
+                return HttpResponseUtils.error(0,"删除失败!",null);
+            }
+        }else {
+            return HttpResponseUtils.error(0,"您上传的参数为空,删除失败!",null);
+        }
+        return HttpResponseUtils.error(0,"删除失败!",null);
+    }
+
+    @ApiOperation(value = "管理员删除人员信息接口")
+    @PostMapping(value = "/per/deleteById")
+    public HttpResponse deletedById(@RequestBody List<Long> ids) throws IOException {
+        if (ids.size() > 0){
+            log.info("<******* 管理员删除人员信息接口 *******> [method:/per/deletedById]-forms{入参}:" + JSON.toJSONString(ids));
+            int deletedById = perService.deletedById(ids);
+            if (deletedById > 0){
+                log.info("<******* 管理员删除人员信息接口 *******> responseData{}:" + deletedById);
+                return HttpResponseUtils.ok(1,"管理员删除人员信息成功!",deletedById);
+            }else {
+                log.info("<******* 管理员删除人员信息接口 *******> responseData{}:" + deletedById);
+                return HttpResponseUtils.error(0,"管理员删除人员信息失败!",deletedById);
+            }
+
+        }else {
+            log.info("<******* 管理员删除人员信息接口 *******> responseData{}:" + "您上传的参数为空,删除失败!");
+            return HttpResponseUtils.ok(1,"参数为空",null);
+        }
+    }
+}

+ 63 - 0
src/main/java/com/sprivacy/pms/controller/ProvinceController.java

@@ -0,0 +1,63 @@
+package com.sprivacy.pms.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.sprivacy.pms.form.province.ProvinceCityInfo;
+import com.sprivacy.pms.http.HttpResponse;
+import com.sprivacy.pms.http.HttpResponseUtils;
+import com.sprivacy.pms.model.Province;
+import com.sprivacy.pms.service.ProvinceService;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-07 10:54
+ * @desc ProvinceController
+ **/
+@RestController
+public class ProvinceController {
+    private final static Logger log = LoggerFactory.getLogger(ProvinceController.class);
+
+    @Autowired
+    private ProvinceService provinceService;
+
+    @Autowired
+    @ApiOperation(value = "获取省份信息")
+    @GetMapping(value = "/province/getProvinceInfo")
+    public HttpResponse getProvinceInfo(){
+        log.info("<******* 获取省份信息 START *******> [method:/province/getProvinceInfo]-get请求。");
+        HttpResponseUtils.error(0,"获取省份信息失败");
+        List<Province> provinces = provinceService.getProvinceInfo();
+        if (provinces.size() > 0){
+            log.info("<******* 获取省份信息 END *******> responseData{}:" + JSON.toJSONString(provinces));
+            return HttpResponseUtils.ok(1,"获取省份信息成功",provinces);
+        }else {
+            log.info("<******* 获取省份信息 END *******> responseData{}:" + JSON.toJSONString(provinces));
+            return HttpResponseUtils.ok(1,"获取省份信息失败",null);
+        }
+    }
+
+    @Autowired
+    @ApiOperation(value = "获取省-区信息")
+    @GetMapping(value = "/province/getProvinceCityInfo")
+    public HttpResponse getProvinceCityInfo(){
+        log.info("<******* 获取省-区信息 START *******> [method:/province/getProvinceCityInfo]-get请求。");
+        HttpResponseUtils.error(0,"获取省-区信息失败");
+        List<ProvinceCityInfo> provinces = provinceService.getProvinceCityInfo();
+        if (provinces.size() > 0){
+            log.info("<******* 获取省-区信息 END *******> responseData{}:" + JSON.toJSONString(provinces));
+            return HttpResponseUtils.ok(1,"获取省-区信息成功",provinces);
+        }else {
+            log.info("<******* 获取省-区信息 END *******> responseData{}:" + JSON.toJSONString(provinces));
+            return HttpResponseUtils.ok(1,"获取省-区信息失败",null);
+        }
+    }
+
+
+}

+ 105 - 0
src/main/java/com/sprivacy/pms/controller/RelController.java

@@ -0,0 +1,105 @@
+package com.sprivacy.pms.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.sprivacy.pms.exception.PmsException;
+import com.sprivacy.pms.http.HttpResponse;
+import com.sprivacy.pms.http.HttpResponseUtils;
+import com.sprivacy.pms.model.Rel;
+import com.sprivacy.pms.service.RelService;
+import com.sprivacy.pms.util.BeanValidatorUtil;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.joda.time.DateTime;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author fanglang
+ * @date 2018-11-24 11:28
+ * @desc 关系操作
+ */
+@RestController
+public class RelController {
+
+    private final static Logger log = LoggerFactory.getLogger(RelController.class);
+
+    @Autowired
+    private RelService relService;
+
+    @ApiOperation(value = "新增关系")
+    @PostMapping("/rel")
+    public HttpResponse addRel(@RequestBody Rel rel) throws PmsException {
+        log.info("<******* 新增关系 START *******> [method:/rel]-rel{入参}:"+ JSON.toJSONString(rel));
+        Map<String, String> errors = BeanValidatorUtil.validateObject(rel);
+        if (null != errors && errors.size() > 0) {
+            List<String> errorList = new ArrayList<>();
+            for (Map.Entry error : errors.entrySet()) {
+                errorList.add(error.getKey() + ":" + error.getValue());
+            }
+            throw new PmsException(StringUtils.join(errorList, ","));
+        }
+        rel.setCreateTime(DateTime.now().toString("yyyy-MM-dd HH:mm:ss"));
+        relService.addRel(rel);
+        log.info("<******* 新增关系 END *******> responseData{}:" + "null");
+        return HttpResponseUtils.ok();
+    }
+
+    @ApiOperation(value = "删除关系")
+    @GetMapping("/rel/del/{id}")
+    public HttpResponse deleteRel(@PathVariable("id") long id) {
+        log.info("<******* 删除关系 START *******> [method:/rel/del/{id}]-id{入参}:"+ JSON.toJSONString(id));
+        relService.deleteRel(id);
+        log.info("<******* 删除关系 END *******> responseData{}:" + "null");
+        return HttpResponseUtils.ok();
+    }
+
+    @ApiOperation(value = "根据id查询某个关系")
+    @GetMapping("/rel/{id}")
+    public HttpResponse findById(@PathVariable("id") long id) {
+        log.info("<******* 根据id查询某个关系 START *******> [method:/rel/{id}]-id{入参}:"+JSON.toJSONString(id));
+        Rel rel = relService.findById(id);
+        if (null != rel) {
+            log.info("<******* 根据id查询某个关系 END *******> responseData{}:" + JSON.toJSONString(rel));
+            return HttpResponseUtils.ok(rel);
+        } else {
+            log.info("<******* 根据id查询某个关系 END *******> responseData{}:" + "没有对应数据");
+            return HttpResponseUtils.error("没有对应数据");
+        }
+    }
+
+    @ApiOperation(value = "根据关系类型查询某个关系")
+    @GetMapping("/rel/type/{type}")
+    public HttpResponse findByType(@PathVariable("type") int type) {
+        log.info("<******* 根据关系类型查询某个关系 START *******> [method:/rel/type/{type}]-type{入参}:"+type);
+        List<Rel> rels = relService.findByType(type);
+        if (null != rels && rels.size() > 0) {
+            log.info("<******* 根据关系类型查询某个关系 END *******> responseData{}:" + JSON.toJSONString(rels));
+            return HttpResponseUtils.ok(rels);
+        } else {
+            log.info("<******* 根据关系类型查询某个关系 END *******> responseData{}:" + "没有对应数据,"+JSON.toJSONString(rels));
+            return HttpResponseUtils.error("没有对应数据");
+        }
+    }
+
+    @ApiOperation(value = "分页获取所有关系")
+    @GetMapping("/rel/page/{current}")
+    public HttpResponse findAllByPage(@PathVariable("current") long current) {
+        log.info("<******* 分页获取所有关系 START *******> [method:/rel/page/{current}]-current{入参}:"+current);
+        log.info("<******* 分页获取所有关系 END *******> responseData{}:" + JSON.toJSONString(relService.findAllByPage(current)));
+        return HttpResponseUtils.ok(relService.findAllByPage(current));
+    }
+
+    @ApiOperation(value = "获取所有关系")
+    @GetMapping("/rel")
+    public HttpResponse findAll() {
+        log.info("<******* 获取所有关系 START *******> [method:/rel]-get请求。");
+        log.info("<******* 获取所有关系 END *******> responseData{}:" + JSON.toJSONString(relService.findAll()));
+        return HttpResponseUtils.ok(relService.findAll());
+    }
+}

+ 25 - 0
src/main/java/com/sprivacy/pms/controller/SysPermissionController.java

@@ -0,0 +1,25 @@
+package com.sprivacy.pms.controller;
+
+import com.sprivacy.pms.http.HttpResponse;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-12 16:51
+ * @desc SysPermissionController
+ **/
+@RestController
+public class SysPermissionController {
+    private final static Logger log = LoggerFactory.getLogger(SysPermissionController.class);
+
+    @ApiOperation(value = "获取某用户的权限信息")
+    @PostMapping(value = "/sys/role/getUserPermissionInfo")
+    public HttpResponse getUserPermissionsInfo(String userName){
+
+        return null;
+    }
+}

+ 15 - 0
src/main/java/com/sprivacy/pms/controller/SysRoleController.java

@@ -0,0 +1,15 @@
+package com.sprivacy.pms.controller;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-12 16:48
+ * @desc SysRoleController
+ **/
+@RestController
+public class SysRoleController {
+    private final static Logger log = LoggerFactory.getLogger(SysRoleController.class);
+}

+ 78 - 0
src/main/java/com/sprivacy/pms/controller/SysRolePermissionController.java

@@ -0,0 +1,78 @@
+package com.sprivacy.pms.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.sprivacy.pms.form.users.AuthorityParam;
+import com.sprivacy.pms.form.users.UserRolePermissionInfo;
+import com.sprivacy.pms.http.HttpResponse;
+import com.sprivacy.pms.http.HttpResponseUtils;
+import com.sprivacy.pms.model.SysRole;
+import com.sprivacy.pms.service.SysRolePermissionService;
+import com.sprivacy.pms.service.SysRoleService;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-12 16:51
+ * @desc SysRolePermissionController
+ **/
+@RestController
+public class SysRolePermissionController {
+    private final static Logger log = LoggerFactory.getLogger(SysRolePermissionController.class);
+
+    @Autowired
+    private SysRolePermissionService sysRolePermissionService;
+
+    @Autowired
+    private SysRoleService sysRoleService;
+
+
+    @ApiOperation(value = "获取用户的角色和权限信息")
+    @PostMapping(value = "/sys/role/permission/getAuthorities")
+    public HttpResponse getAuthorities(String userName){
+        log.info("<******* 获取用户的角色和权限信息 START *******> [method:/sys/role/permission/getAuthorities]-userName{入参}:"+userName);
+        List<UserRolePermissionInfo> userRolePermissionInfos = sysRolePermissionService.getAuthorities(userName);
+        if (null != userRolePermissionInfos && userRolePermissionInfos.size() > 0){
+            log.info("<******* 获取用户的角色和权限信息 END *******> responseData{}:" + JSON.toJSONString(userRolePermissionInfos));
+            return HttpResponseUtils.ok(1,"获取权限信息成功",userRolePermissionInfos);
+        }else {
+            log.info("<******* 获取用户的角色和权限信息 END *******> responseData{}:" + "没有相关数据,请输入有效的用户账户信息!,"+JSON.toJSONString(userRolePermissionInfos));
+            return HttpResponseUtils.ok(1,"没有相关数据,请输入有效的用户账户信息!" , null);
+        }
+    }
+
+    @ApiOperation(value = "获取所有角色信息")
+    @GetMapping(value = "/sys/role/permission/getRoles")
+    public HttpResponse getRoles(){
+        log.info("<******* 获取所有角色信息 START *******> [method:/sys/role/permission/getRoles]-get请求。");
+        List<SysRole> sysRoles = sysRoleService.getRoles();
+        if (null != sysRoles && sysRoles.size() > 0){
+            log.info("<******* 获取所有角色信息 END *******> responseData{}:" + JSON.toJSONString(sysRoles));
+            return HttpResponseUtils.ok(1,"获取角色信息成功",sysRoles);
+        }else {
+            log.info("<******* 获取所有角色信息 END *******> responseData{}:" +"角色信息失败"+ JSON.toJSONString(sysRoles));
+            return HttpResponseUtils.ok(1,"查无该角色信息",null);
+        }
+    }
+
+    @ApiOperation(value = "修改某用户的角色和权限信息")
+    @PostMapping(value = "/sys/role/permission/editAndDeleteAuthorities")
+    public HttpResponse editAndDeleteAuthorities(@RequestBody List<AuthorityParam> authorityParams){
+        log.info("<******* 修改某用户的角色和权限信息 START *******> [method:/sys/role/permission/editAndDeleteAuthorities]-authorityParams{入参}:"+JSON.toJSONString(authorityParams));
+        sysRolePermissionService.editAndDeleteAuthorities(authorityParams);
+        log.info("<******* 修改某用户的角色和权限信息 END *******> responseData{}:" + "更新角色信息成功.");
+        return HttpResponseUtils.ok(1,"更新角色信息成功",null);
+    }
+
+
+
+
+}

+ 24 - 0
src/main/java/com/sprivacy/pms/controller/SysUserRoleController.java

@@ -0,0 +1,24 @@
+package com.sprivacy.pms.controller;
+
+import com.sprivacy.pms.http.HttpResponse;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-12 16:50
+ * @desc SysUserRoleController
+ **/
+@RestController
+public class SysUserRoleController {
+    private final static Logger log = LoggerFactory.getLogger(SysUserRoleController.class);
+
+    @ApiOperation(value = "获取某用户的角色信息")
+    @PostMapping(value = "/sys/role/getUserRoleInfo")
+    public HttpResponse getUserRoleInfo(String userName){
+        return null;
+    }
+}

+ 45 - 0
src/main/java/com/sprivacy/pms/controller/TempFileResultController.java

@@ -0,0 +1,45 @@
+package com.sprivacy.pms.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sprivacy.pms.http.HttpResponse;
+import com.sprivacy.pms.http.HttpResponseUtils;
+import com.sprivacy.pms.model.TempFileResult;
+import com.sprivacy.pms.service.TempFileResultService;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-02-11 9:49
+ * @desc TempFileResultController
+ **/
+@RestController
+@RequestMapping(value = "/file/result")
+public class TempFileResultController {
+    private final static Logger log = LoggerFactory.getLogger(TempFileResultController.class);
+
+    @Autowired
+    private TempFileResultService tempFileResultService;
+
+    @ApiOperation(value = "获取文件解析列表")
+    @PostMapping(value = "/getFileList")
+    public HttpResponse getFileList(Page page){
+        log.info("<******* 获取文件解析列表 START *******> [method:/getFileList]-page{入参}:"+ JSON.toJSONString(page));
+        List<TempFileResult> tempFileResults = tempFileResultService.getFileList(page);
+        if (null != tempFileResults && tempFileResults.size() > 0){
+            log.info("<******* 获取文件解析列表 END *******> responseData{}:" + JSON.toJSONString(tempFileResults));
+            return HttpResponseUtils.ok(1,"获取文件列表成功",tempFileResults);
+        }else {
+            log.info("<******* 获取文件解析列表 END *******> responseData{}:" + JSON.toJSONString(tempFileResults));
+            return HttpResponseUtils.error(0,"文件列表为空",tempFileResults);
+        }
+    }
+}

+ 1727 - 0
src/main/java/com/sprivacy/pms/controller/TestController.java

@@ -0,0 +1,1727 @@
+package com.sprivacy.pms.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.sprivacy.pms.form.per.PerForm;
+import com.sprivacy.pms.http.HttpResponse;
+import com.sprivacy.pms.http.HttpResponseUtils;
+import com.sprivacy.pms.mapper.PerMapper;
+import com.sprivacy.pms.mapper.TempFileResultMapper;
+import com.sprivacy.pms.model.*;
+import com.sprivacy.pms.properties.PmsProperties;
+import com.sprivacy.pms.service.*;
+import com.sprivacy.pms.util.CleanDateUtil;
+import com.sprivacy.pms.util.DeCompressUtil;
+import com.sprivacy.pms.util.SpecialParseExcel;
+import com.sprivacy.pms.util.ZipUtils;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.time.DateUtils;
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.ooxml.POIXMLDocumentPart;
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.usermodel.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-02-02 15:51
+ * @desc TestController
+ **/
+@RestController
+// @RequestMapping(value = "/test")
+public class TestController {
+    private final static Logger log = LoggerFactory.getLogger(SysUserRoleController.class);
+
+    @Autowired
+    private UploadService uploadService;
+
+    private final static int ROW_START = 4;
+    private final static int CELL_END = 30;
+
+
+    @Autowired
+    private PerService perService;
+
+    @Autowired
+    private PerMapper perMapper;
+
+    @Autowired
+    private WorkRecService workRecService;
+
+    @Autowired
+    private EduRecService eduRecService;
+
+    @Autowired
+    private RewRecService rewRecService;
+
+    @Autowired
+    private WageService wageService;
+
+    @Autowired
+    private SocRelService socRelService;
+
+    @Autowired
+    private FamRelService famRelService;
+
+    @Autowired
+    private TempFileResultMapper tempFileResultMapper;
+
+    @Autowired
+    private PmsProperties properties;
+
+    @Value("${pms.common.upload-dir}")
+    private String uploadDir;
+
+    @Value("${pms.common.decompress-dir}")
+    private String deCompressDir;
+
+    @Value("${pms.common.saved-dir}")
+    private String savedDir;
+
+    @Value("${pms.common.base-url}")
+    private String baseUrl;
+
+    @ApiOperation("red info")
+    @GetMapping(value = "/test/red")
+    public HttpResponse uploadImageTest() throws Exception{
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("name", "name");
+        jsonObject.put("sex", "sex");
+        jsonObject.put("nation", "nation");
+        jsonObject.put("birthplace", "birthplace");
+        jsonObject.put("birthday", "birthday");
+        jsonObject.put("workingTime", "workingTime");
+        jsonObject.put("joiningPartyTime", "joiningPartyTime");
+        jsonObject.put("healthStatus", "healthStatus");
+        jsonObject.put("education", "education");
+        jsonObject.put("graTimeSchoolMajor", "graTimeSchoolMajor");
+        jsonObject.put("personnelNature", "personnelNature");
+        jsonObject.put("jobTitle", "jobTitle");
+        jsonObject.put("titleAcqTime", "titleAcqTime");
+        jsonObject.put("currentJob", "currentJob");
+        jsonObject.put("contactPhone", "contactPhone");
+        jsonObject.put("address", "address");
+        jsonObject.put("idNumber", "idNumber");
+        jsonObject.put("eduRecord","eduRecord");
+        jsonObject.put("eduRecord", "eduRecord");
+        jsonObject.put("workRecord","workRecord");
+        jsonObject.put("workRecord", "workRecord");
+        jsonObject.put("famRel", "famRel");
+        jsonObject.put("socRel", "socRel");
+        jsonObject.put("rewRec", "rewRec");
+        return HttpResponseUtils.ok(1,"获取成功",jsonObject);
+    }
+
+
+    @ApiOperation("长传图片")
+    @PostMapping(value = "/test/import/img")
+    public HttpResponse uploadImageTest(MultipartFile file) throws Exception {
+        if (null != file){
+            if (!file.isEmpty()) {
+                try {
+                    // 图片大小单位是Kb
+                    Long size = file.getSize() / 1024;
+
+                    if (size >= 200) {
+                        return HttpResponseUtils.ok(1,"上传失败", file.getOriginalFilename() + ":超过了指定大小");
+                    }
+                    // 文件保存路径
+                    // 图片后缀
+                    String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
+                    // 图片名称
+                    String name = UUID.randomUUID().toString() + suffix;
+                    // 图片访问路径
+                    String url = properties.getCommon().getFileDir() + name;
+
+                    // 转存文件
+                    file.transferTo(new File(url));
+                    return HttpResponseUtils.ok(1,"上传成功",url);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }else {
+            return HttpResponseUtils.error(0,"您长传的文件为空,请重新上传",null);
+        }
+
+        return null;
+    }
+
+
+    @ApiOperation("整批量/单个文件上传人员信息")
+    @PostMapping(value = "/test/import/rarFile")
+    public HttpResponse uploadAllExcelsTest(MultipartFile file) throws Exception {
+        List<PerForm> perForms = new ArrayList<>();
+        String strOriginalFilename = file.getOriginalFilename();
+        String strFileType = StringUtils.substringAfter(strOriginalFilename, ".");
+        log.info("后缀名--->" + strFileType);
+        // 后缀名转换 如:JPG--jpg
+        if (StringUtils.isAllUpperCase(strFileType)) {
+            strFileType = StringUtils.lowerCase(strFileType);
+            log.info("UpperCase后缀名转换-->" + strFileType);
+        }
+
+        if (strFileType.equals("xls") || strFileType.equals("xlsx")){
+            // 调用单个excel上传接口
+            log.info("<*******整批次批量上传test*******> <单个>导入接口! START");
+            perForms = importSingleExcel(file);
+        }else {
+            log.info("<*******整批次批量上传*******> <批量>导入接口! START");
+            perForms = uploadService.importAllExcels(file);
+        }
+        if (null != perForms && perForms.size() > 0){
+            log.info("<*******整批次批量上传*******> END responseData{}:"+JSON.toJSONString(perForms));
+            return HttpResponseUtils.ok(1,"上传成功",perForms);
+        }
+
+        return HttpResponseUtils.ok(0,"上传失败",perForms);
+    }
+
+
+    public List<PerForm> importSingleExcel(MultipartFile file) throws Exception {
+        List<PerForm> perForms = new ArrayList<>();
+        Workbook workbook = null;
+        HSSFWorkbook wb;
+        String originalFileName = file.getOriginalFilename();
+        if (StringUtils.endsWithIgnoreCase(originalFileName, "xls")) {
+            log.info("importSingleExcel < .xls>");
+            workbook = new HSSFWorkbook(file.getInputStream());
+        }
+        if (StringUtils.endsWithIgnoreCase(originalFileName, "xlsx")) {
+            log.info("importSingleExcel < .xlsx>");
+            workbook = new XSSFWorkbook(file.getInputStream());
+        }
+        if (null != workbook) {
+            int sheetNum = workbook.getNumberOfSheets();
+            // 文件类型转换
+            File f = null;
+            if (file.equals("") || file.getSize() <= 0) {
+                file = null;
+            } else {
+                // todo 写入rar文件 待处理 0214更正
+                InputStream inputStream = file.getInputStream();
+                FileOutputStream out = new FileOutputStream(deCompressDir.concat(file.getOriginalFilename()));
+                int btsRead = 0;
+                byte[] bf = new byte[8192];
+                while ((btsRead = inputStream.read(bf, 0, 8192)) != -1) {
+                    out.write(bf, 0, btsRead);
+                    // log.info("importSingleExcel write out>>> "+JSON.toJSONString(out));
+                }
+                out.close();
+
+                InputStream ins = file.getInputStream();
+                f = new File(file.getOriginalFilename());
+                inputStreamToFile(ins, f);
+            }
+            log.info("importSingleExcel START");
+            // TODO GOTO.
+            PerForm form = parseSingleExcel(f, sheetNum, workbook, null);
+            perForms.add(form);
+            log.info("importSingleExcel END data>" + JSON.toJSONString(perForms));
+        }
+        return perForms;
+    }
+
+    public PerForm parseSingleExcel(File file, int sheetNum, Workbook workbook, HSSFWorkbook wb) throws Exception {
+        log.info("parseSingleExcel START");
+        PerForm form = checkSheet(file, sheetNum, workbook, null);
+        log.info("parseSingleExcel END form>>>" + JSON.toJSONString(form));
+        return form;
+    }
+
+    public PerForm checkSheet(File file, int sheetNum, Workbook workbook, HSSFWorkbook wb) throws Exception {
+        if (null != workbook) {
+            for (int i = 0; i < sheetNum; i++) {
+                Sheet sheet = workbook.getSheetAt(i);
+                if (i == 0) {
+                    log.info("-------toSheet解析-[" + file.getName() + "]-的第>" + i + "个sheet!-------");
+                    // 处理照片
+                    for (Row row : sheet) {
+                        int rowNum = row.getRowNum();
+                        if (rowNum == 0) {
+                            if (row.getCell(0).getStringCellValue().equals("基本情况登记表")) {
+                                // TODO GOTO。
+                                PerForm form = toSheet(file, sheetNum, workbook);
+                                log.info("getPerForms <workbook toSheet> form-->" + JSON.toJSONString(form));
+                                return form;
+                            } else {
+                                // todo 判断文件格式呢。是否为正确的excel文件;
+                                log.info("NOT A CORRECT EXCEL FILE!");
+                                return null;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        if (null != wb) {
+            for (int i = 0; i < sheetNum; i++) {
+                Sheet sheet = wb.getSheetAt(i);
+                if (i == 0) {
+                    log.info("-------toHSSFSheet解析-[" + file.getName() + "]-的第>" + i + "个sheet!-------");
+                    // 处理照片
+                    for (Row row : sheet) {
+                        int rowNum = row.getRowNum();
+                        if (rowNum == 0) {
+                            if (row.getCell(0).getStringCellValue().equals("基本情况登记表")) {
+                                // TODO GOTO。
+                                PerForm form = toHSSFSheet(file, sheetNum, wb);
+                                log.info("getPerForms <wb toHSSFSheet> form-->" + JSON.toJSONString(form));
+                                return form;
+                            } else {
+                                // todo 判断文件格式呢。是否为正确的excel文件;
+                                log.info("NOT A CORRECT EXCEL FILE!");
+                                return null;
+                            }
+                        }
+                    }
+                }
+            }
+
+        }
+        return null;
+    }
+
+
+
+
+    @ApiOperation("下载文件")
+    @GetMapping("/getUrl/{id}")
+    public void getUrl(List<Long> ids, HttpServletRequest request, HttpServletResponse response) throws Exception {
+        // 获取当前真实路径
+        uploadService.download(ids,request,response);
+    }
+
+    /**
+     * 根据id获取改人员的所有信息
+     * @param id
+     * @return List<PerForm>
+     */
+    public List<PerForm> getPersonnelForm(long id) {
+        List<PerForm> form = new ArrayList<>();
+        PerForm perForm = new PerForm();
+        Per personnel = perMapper.selectById(id);
+        if (null != personnel) {
+            perForm.setPer(personnel);
+        }
+        List<PerEduRec> eduRecords = eduRecService.findByPid(id);
+        if (CollectionUtils.isNotEmpty(eduRecords)) {
+            perForm.setEduRecords(eduRecords);
+        }
+
+        List<PerWorkRec> workRecords = workRecService.findByPid(id);
+        if (CollectionUtils.isNotEmpty(workRecords)) {
+            perForm.setWorkRecords(workRecords);
+        }
+
+        List<PerFamRel> familyRelations = famRelService.findByPid(id);
+        if (CollectionUtils.isNotEmpty(familyRelations)) {
+            perForm.setFamRelations(familyRelations);
+        }
+
+        List<PerSocRel> socialRelations = socRelService.findByPid(id);
+        if (CollectionUtils.isNotEmpty(socialRelations)) {
+
+            perForm.setSocRelations(socialRelations);
+        }
+
+        List<PerRewRec> rewards = rewRecService.findByPid(id);
+        if (CollectionUtils.isNotEmpty(rewards)) {
+            perForm.setRewRecords(rewards);
+        }
+        form.add(perForm);
+        log.info(JSON.toJSONString(form));
+        return form;
+    }
+
+
+    @ApiOperation("整批量/单个文件上传人员信息")
+    @PostMapping(value = "/import/rarFile")
+    public HttpResponse uploadAllExcels(MultipartFile file) throws Exception {
+        log.info("整批次批量上传 start");
+        List<PerForm> perForms = new ArrayList<>();
+
+        String strOriginalFilename = file.getOriginalFilename();
+        String strFileType = StringUtils.substringAfter(strOriginalFilename, ".");
+        log.info("后缀名--->" + strFileType);
+        // 后缀名转换 如:JPG--jpg
+        if (StringUtils.isAllUpperCase(strFileType)) {
+            strFileType = StringUtils.lowerCase(strFileType);
+            log.info("UpperCase后缀名转换-->" + strFileType);
+        }
+
+        if (strFileType.equals("xls") || strFileType.equals("xlsx")){
+            // 调用单个excel上传接口
+            log.info("调用单个导入接口!");
+            perForms = uploadService.importSingleExcel(file);
+        }else {
+            log.info("调用批量导入接口!");
+            // System.err.println("<-size->"+perForms.size());
+            perForms = uploadService.importAllExcels(file);
+        }
+        if (null != perForms && perForms.size() > 0){
+            return HttpResponseUtils.ok(1,"上传成功",perForms);
+        }
+
+        return HttpResponseUtils.ok(0,"上传失败",perForms);
+    }
+
+
+    public List<PerForm> importAllExcels(MultipartFile file) throws Exception {
+
+        File f = null;
+        if (file.equals("") || file.getSize() <= 0) {
+            file = null;
+        } else {
+            // todo 写入rar文件 待处理
+            // File pdfFile = new File();
+
+            // file.transferTo(new File(deCompressDir.concat(file.getOriginalFilename())));
+            InputStream ins = file.getInputStream();
+            f = new File(file.getOriginalFilename());
+            inputStreamToFile(ins, f);
+        }
+        // todo 判断该文件是rar还是zip
+        List<String> unRarAndZipStrs = new ArrayList<>();
+        // List<String> unRarStrs = DeCompressUtil.unRar(f.getPath(),"E:\\mnt\\rar\\");
+        if (!ZipUtils.isArchiveFile(f)) {
+            log.info("to rar DeCompress!");
+            unRarAndZipStrs = DeCompressUtil.unRar(f.getPath(), uploadDir);
+        } else {
+            log.info("to zip DeCompress");
+            // todo 待开发
+            // unRarAndZipStrs = DeCompressUtil.unZip(f.getPath(),uploadDir);
+        }
+        List<PerForm> perForms = new ArrayList<>();
+        for (String unRarStr : unRarAndZipStrs) {
+            // 解析每个excel文件
+            perForms.add(parseAllExcels(unRarStr));
+        }
+        if (perForms.size() > 0) {
+            return perForms;
+        } else {
+            return null;
+        }
+
+        // 获取所有excels
+        // if (!unRarStr.contains("失败")){
+        //     ExcelParseUtil.getAllExcels(str);
+        // }
+
+        // return null;
+    }
+
+    public  void inputStreamToFile(InputStream ins, File file) {
+        try {
+            // FileOutputStream out = new FileOutputStream(deCompressDir);
+            // out.write(data);
+            // out.close();
+            OutputStream os = new FileOutputStream(file);
+            int bytesRead = 0;
+            byte[] buffer = new byte[8192];
+            while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
+                os.write(buffer, 0, bytesRead);
+            }
+            os.close();
+            ins.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * todo 解析单个excel文件
+     * @param file
+     * @return PerForm
+     */
+    public  PerForm parseSingleExcels(File file, int sheetNum, Workbook workbook, HSSFWorkbook wb) throws Exception {
+        PerForm form = getPerForms(file,sheetNum,workbook,null);
+        // System.err.println("single sheetNum-->"+sheetNum);
+        return form;
+    }
+
+
+    /**
+     * todo 解析rar批量excel
+     *
+     * @param strPath
+     */
+    public  PerForm parseAllExcels(String strPath) {
+        File file = new File(strPath);
+        if (file.isDirectory()) {
+            File[] files = file.listFiles();
+            for (File fi : files) {
+                // 对文件进行过滤,只读取Excel文件
+                if (fi.getName().indexOf(".xls") > 0) {
+                    // parseExcel(fi);
+                }
+            }
+        }
+        HSSFWorkbook wb;
+        FileInputStream fs;
+        try {
+            fs = new FileInputStream(file.getAbsolutePath());
+            POIFSFileSystem ps = new POIFSFileSystem(fs);
+            // 使用POI提供的方法得到excel的信息
+            wb = new HSSFWorkbook(ps);
+
+            // ------------------------读取excel-------------------------------------
+            return dealWithAllExcelSheet(file, wb);
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+    public  PerForm dealWithAllExcelSheet(File file, HSSFWorkbook wb) throws Exception {
+        // SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
+        int sheetNum = wb.getNumberOfSheets();
+        // System.err.println("all sheetNum-->"+sheetNum);
+        PerForm form = getPerForms(file,sheetNum,null,wb);
+        log.info(file.getAbsoluteFile() + "-" + file.getName() + "---initSheet form-->" + JSON.toJSONString(form));
+        return form;
+    }
+
+    public  PerForm getPerForms(File file,int sheetNum,Workbook workbook,HSSFWorkbook wb) throws Exception {
+        if (null != workbook) {
+            PerForm form = toSheet(file,sheetNum,workbook);
+            return form;
+        }
+        if (null != wb){
+            PerForm form = toHSSFSheet(file,sheetNum,wb);
+            return form;
+        }
+
+        return null;
+    }
+
+    public PerForm toSheet2(File file, int sheetNum, Workbook workbook) throws Exception {
+        PerForm form = new PerForm();
+        Per personnel = new Per();
+        List<PerEduRec> eduRecords = new ArrayList<>();
+        List<PerWorkRec> workRecords = new ArrayList<>();
+        List<PerFamRel> familyRelations = new ArrayList<>();
+        List<PerSocRel> socialRelations = new ArrayList<>();
+        List<PerRewRec> rewards = new ArrayList<>();
+        List<TempFileResult> tempFileResults = new ArrayList<>();
+        TempFileResult tempFileResult = new TempFileResult();
+        JSONObject jsonObject = new JSONObject();
+
+        String avatar = getAvatar(workbook.getSheetAt(0), workbook);
+        personnel.setAvatar(avatar);
+
+        log.info("toSheet 获取avatar-->" + avatar);
+        int correctFieldNum = 0;
+        int exceptionFieldNum = 0;
+        for (int i = 0; i < sheetNum; i++) {
+            Sheet sheet = workbook.getSheetAt(i);
+
+            // todo 遍历取sheet
+            if (i == 0) {
+                log.info("-------toSheet解析-[" + file.getName() + "]-的第>" + i + "个sheet!-------");
+                tempFileResult.setFileName(file.getName());
+                // 处理照片
+                for (Row row : sheet) {
+                    int rowNum = row.getRowNum();
+                    if (rowNum == 1) {
+                        String tempWorkUnit = row.getCell(0).getStringCellValue();
+                        String workUnit = StringUtils.substringAfter(tempWorkUnit, ":");
+                        personnel.setWorkUnit(StringUtils.trim(workUnit));
+                    }
+                    if (rowNum == 2) {
+                        String name = "";
+                        if (row.getCell(0).getStringCellValue().contains("姓   名")) {
+                            name = row.getCell(2).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            name = "测试name";
+                            exceptionFieldNum++;
+                            jsonObject.put("name", name);
+                        }
+
+                        String sex = "";
+                        if (row.getCell(3).getStringCellValue().contains("性   别")) {
+                            sex = row.getCell(4).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            sex = "测试sex";
+                            exceptionFieldNum++;
+                            jsonObject.put("sex", sex);
+                        }
+
+                        String nation = "";
+                        if (row.getCell(5).getStringCellValue().contains("民   族")) {
+                            nation = row.getCell(6).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            nation = "测试nation";
+                            exceptionFieldNum++;
+                            jsonObject.put("nation", nation);
+                        }
+
+                        // todo
+                        String birthplace = "";
+                        if (row.getCell(7).getStringCellValue().contains("籍   贯")) {
+                            birthplace = row.getCell(8).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            birthplace = "测试birthplace";
+                            exceptionFieldNum++;
+                            jsonObject.put("birthplace", birthplace);
+                        }
+                        personnel.setName(name);
+                        personnel.setSex(sex);
+                        personnel.setNation(nation);
+                        personnel.setBirthplace(birthplace);
+                    }
+
+                    if (rowNum == 3) {
+                        String birthday;
+                        row.getCell(2).setCellType(CellType.STRING);
+                        if (null != row.getCell(2).getStringCellValue()) {
+                            if (row.getCell(0).getStringCellValue().contains("出生年月")) {
+                                birthday = row.getCell(2).getStringCellValue();
+                                correctFieldNum++;
+                            } else {
+                                birthday = "测试birthday";
+                                exceptionFieldNum++;
+                                jsonObject.put("birthday", birthday);
+                            }
+                        } else {
+                            birthday = "";
+                        }
+                        row.getCell(4).setCellType(CellType.STRING);
+
+                        String workingTime;
+                        if (null != row.getCell(4).getStringCellValue()) {
+                            if (row.getCell(3).getStringCellValue().contains("工作时间")) {
+                                workingTime = row.getCell(4).getStringCellValue();
+                                correctFieldNum++;
+                            } else {
+                                workingTime = "测试workingTime";
+                                exceptionFieldNum++;
+                                jsonObject.put("workingTime", workingTime);
+                            }
+                        } else {
+                            workingTime = "";
+                        }
+                        String joiningPartyTime;
+                        row.getCell(6).setCellType(CellType.STRING);
+                        if (null != row.getCell(6).getStringCellValue()) {
+                            if (row.getCell(5).getStringCellValue().contains("入党时间")) {
+                                joiningPartyTime = row.getCell(6).getStringCellValue();
+                                correctFieldNum++;
+                            } else {
+                                joiningPartyTime = "测试joiningPartyTime";
+                                exceptionFieldNum++;
+                                jsonObject.put("joiningPartyTime", joiningPartyTime);
+                            }
+                        } else {
+                            joiningPartyTime = "";
+                        }
+                        String healthStatus = "";
+                        if (row.getCell(7).getStringCellValue().contains("健康状况")) {
+                            healthStatus = row.getCell(8).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            healthStatus = "测试healthStatus";
+                            exceptionFieldNum++;
+                            jsonObject.put("healthStatus", healthStatus);
+                        }
+                        if (!StringUtils.contains(CleanDateUtil.cleanDate(birthday), "-") && CleanDateUtil.cleanDate(birthday).length() > 4) {
+                            exceptionFieldNum++;
+                            jsonObject.put("birthday", CleanDateUtil.cleanDate(birthday));
+                        }
+                        if (!StringUtils.contains(CleanDateUtil.cleanDate(workingTime), "-") && CleanDateUtil.cleanDate(workingTime).length() > 4) {
+                            exceptionFieldNum++;
+                            jsonObject.put("workingTime", CleanDateUtil.cleanDate(workingTime));
+                        }
+                        if (!StringUtils.contains(CleanDateUtil.cleanDate(joiningPartyTime), "-") && CleanDateUtil.cleanDate(joiningPartyTime).length() > 4) {
+                            exceptionFieldNum++;
+                            jsonObject.put("joiningPartyTime", CleanDateUtil.cleanDate(joiningPartyTime));
+                        }
+                        personnel.setBirthday(CleanDateUtil.cleanDate(birthday));
+                        personnel.setWorkingTime(CleanDateUtil.cleanDate(workingTime));
+                        personnel.setJoiningPartyTime(CleanDateUtil.cleanDate(joiningPartyTime));
+                        personnel.setHealthStatus(healthStatus);
+                    }
+
+                    if (rowNum == 4) {
+
+                        String education = "";
+                        if (row.getCell(0).getStringCellValue().contains("学   历")) {
+                            education = row.getCell(2).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            education = "测试education";
+                            exceptionFieldNum++;
+                            jsonObject.put("education", education);
+                        }
+                        // todo 毕业院校
+                        String graTimeSchoolMajor = "";
+                        if (row.getCell(3).getStringCellValue().contains("何年何月毕业于何校何专业")) {
+                            graTimeSchoolMajor = row.getCell(6).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            graTimeSchoolMajor = "测试graTimeSchoolMajor";
+                            exceptionFieldNum++;
+                            jsonObject.put("graTimeSchoolMajor", graTimeSchoolMajor);
+                        }
+                        personnel.setEducation(education);
+                        personnel.setGraTimeSchoolMajor(graTimeSchoolMajor);
+                    }
+
+                    if (rowNum == 5) {
+                        // todo 后期时需求里无该 “政治面貌” 字段
+                        String personnelNature = "";
+                        if (row.getCell(0).getStringCellValue().contains("人员性质")) {
+                            personnelNature = row.getCell(2).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            personnelNature = "测试personnelNature";
+                            exceptionFieldNum++;
+                            jsonObject.put("personnelNature", personnelNature);
+                        }
+                        row.getCell(5).setCellType(CellType.STRING);
+                        // todo 职称
+                        String jobTitle = "";
+                        if (row.getCell(3).getStringCellValue().contains("职    称")) {
+                            jobTitle = row.getCell(5).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            jobTitle = "测试jobTitle";
+                            exceptionFieldNum++;
+                            jsonObject.put("jobTitle", jobTitle);
+                        }
+                        // todo 是否出错,8
+                        String titleAcqTime = "";
+                        row.getCell(8).setCellType(CellType.STRING);
+                        if (row.getCell(6).getStringCellValue().contains("职称取得时间")) {
+                            titleAcqTime = row.getCell(8).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            titleAcqTime = "测试titleAcqTime";
+                            exceptionFieldNum++;
+                            jsonObject.put("titleAcqTime", titleAcqTime);
+                        }
+
+                        if (!StringUtils.contains(CleanDateUtil.cleanDate(titleAcqTime), "-") && CleanDateUtil.cleanDate(titleAcqTime).length() > 4) {
+                            exceptionFieldNum++;
+                            jsonObject.put("titleAcqTime", CleanDateUtil.cleanDate(titleAcqTime));
+                        }
+                        // personnel.setPoliticsStatus(politicsStatus);
+                        personnel.setPerNature(personnelNature);
+                        personnel.setJobTitle(jobTitle);
+                        personnel.setTitleAcqTime(CleanDateUtil.cleanDate(titleAcqTime));
+                    }
+
+                    if (rowNum == 6) {
+                        // todo 重复 当前模板不再需要在此处获取
+                        String currentJob = "";
+                        if (row.getCell(0).getStringCellValue().contains("现任职务")) {
+                            currentJob = row.getCell(2).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            currentJob = "测试currentJob";
+                            exceptionFieldNum++;
+                            jsonObject.put("currentJob", currentJob);
+                        }
+
+
+                        row.getCell(8).setCellType(CellType.STRING);
+                        row.getCell(7).setCellType(CellType.STRING);
+                        String contactPhone = "";
+                        if (row.getCell(5).getStringCellValue().contains("联系电话")) {
+                            contactPhone = row.getCell(7).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            contactPhone = "测试contactPhone";
+                            exceptionFieldNum++;
+                            jsonObject.put("contactPhone", contactPhone);
+                        }
+                        personnel.setCurrentJob(currentJob);
+                        personnel.setContactPhone(contactPhone);
+                    }
+
+                    if (rowNum == 7) {
+                        String address = "";
+                        if (row.getCell(0).getStringCellValue().contains("家庭住址")) {
+                            address = row.getCell(2).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            address = "测试address";
+                            exceptionFieldNum++;
+                            jsonObject.put("address", address);
+                        }
+                        String idNumber = "";
+                        if (row.getCell(7).getStringCellValue().contains("身份证号码")) {
+                            idNumber = row.getCell(8).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            idNumber = "测试idNumber";
+                            exceptionFieldNum++;
+                            jsonObject.put("idNumber", idNumber);
+                        }
+                        personnel.setAddress(address);
+                        personnel.setIdNumber(idNumber);
+                    }
+
+                    if (rowNum == 8){
+                        if (row.getCell(1).getStringCellValue().contains("学习时间") && row.getCell(3).getStringCellValue().contains("学     校") && row.getCell(7).getStringCellValue().contains("专   业")){
+                            // System.err.println("8 包含");
+                            correctFieldNum++;
+                        }else {
+                            exceptionFieldNum++;
+                            log.info("sheet教育关系 异常字段!!!!");
+                            jsonObject.put("eduRecord","eduRecord");
+                        }
+                    }
+                    if (rowNum == 9 || rowNum == 10 || rowNum == 11 || rowNum == 12) {
+                        PerEduRec eduRecord = getEduRecord(row);
+                        if (null != eduRecord) {
+                            eduRecords.add(eduRecord);
+                        }
+                    }
+
+                    if (rowNum == 13){
+
+                        if (row.getCell(1).getStringCellValue().contains("任职时间") && row.getCell(3).getStringCellValue().contains("单      位") && row.getCell(7).getStringCellValue().contains("职    务")){
+                            // System.err.println("13 包含");
+                            correctFieldNum++;
+
+                        }else {
+                            exceptionFieldNum++;
+                            log.info("sheet工作简历 异常字段!!!!");
+                            jsonObject.put("workRecord","workRecord");
+                        }
+
+                    }
+                    if (rowNum == 14 || rowNum == 15 || rowNum == 16 || rowNum == 17 || rowNum == 18 || rowNum == 19 || rowNum == 20 || rowNum == 21 || rowNum == 22) {
+                        PerWorkRec workRecord = getWorkRecord(row);
+                        if (null != workRecord) {
+                            workRecords.add(workRecord);
+                        }
+                    }
+
+                    if (rowNum == 13){
+
+                        if (row.getCell(1).getStringCellValue().contains("任职时间") && row.getCell(3).getStringCellValue().contains("单      位") && row.getCell(7).getStringCellValue().contains("职    务")){
+                            System.err.println("13任职时间包含");
+                            correctFieldNum++;
+                        }else {
+                            System.err.println("13任职时间 不 包含");
+                            if (rowNum == 14){
+
+                                if (row.getCell(1).getStringCellValue().contains("任职时间") && row.getCell(3).getStringCellValue().contains("单      位") && row.getCell(7).getStringCellValue().contains("职    务")) {
+                                    System.err.println("14任职时间包含");
+                                    correctFieldNum++;
+                                }else {
+                                    System.err.println("14任职时间 不 包含");
+                                    if (rowNum == 15){
+
+                                        if (row.getCell(1).getStringCellValue().contains("任职时间") && row.getCell(3).getStringCellValue().contains("单      位") && row.getCell(7).getStringCellValue().contains("职    务")) {
+                                            System.err.println("15任职时间包含");
+                                            correctFieldNum++;
+                                        }else {
+                                            System.err.println("15任职时间 不 包含");
+                                        }
+                                    }
+                                }
+
+                            }
+
+                        }
+
+                    }
+
+
+
+
+
+
+                    form.setEduRecords(eduRecords);
+                    form.setWorkRecords(workRecords);
+                    form.setFamRelations(familyRelations);
+                    form.setSocRelations(socialRelations);
+                    form.setRewRecords(rewards);
+                }
+            }
+            if (i == 1) {
+                log.info("-------sheet解析-[" + file.getName() + "]-的第>" + i + "个sheet!-------");
+                for (Row row : sheet) {
+                    // todo  sheet 2
+                    int rowNum = row.getRowNum();
+
+                    if (rowNum == 0) {
+
+                        if (row.getCell(2).getStringCellValue().contains("姓  名") && row.getCell(3).getStringCellValue().contains("出生年月") && row.getCell(4).getStringCellValue().contains("政治面貌") && row.getCell(5).getStringCellValue().contains("工 作 单 位 及 职 务")) {
+                            correctFieldNum++;
+                        } else {
+                            exceptionFieldNum++;
+                            log.info("sheet家庭关系 异常字段!!!!");
+                            jsonObject.put("famRel", "famRel");
+                        }
+                    }
+                    if (rowNum == 1 || rowNum == 3 || rowNum == 4 || rowNum == 5 || rowNum == 6 || rowNum == 7 || rowNum == 8) {
+                        PerFamRel relation = getFamRel(rowNum, row);
+                        if (null != relation) {
+                            familyRelations.add(relation);
+                        }
+                    }
+
+
+                    if (rowNum == 9) {
+
+                        if (row.getCell(1).getStringCellValue().contains("关  系") && row.getCell(2).getStringCellValue().contains("姓  名") && row.getCell(3).getStringCellValue().contains("年 龄") && row.getCell(4).getStringCellValue().contains("政治面貌") && row.getCell(5).getStringCellValue().contains("工 作 单 位 及 职 务")) {
+                            correctFieldNum++;
+                        } else {
+                            exceptionFieldNum++;
+                            log.info("sheet社会关系 异常字段!!!!");
+                            jsonObject.put("socRel", "socRel");
+                        }
+                    }
+                    if (rowNum == 10 || rowNum == 11 || rowNum == 12 || rowNum == 13 || rowNum == 14) {
+                        PerSocRel relation = getSocRel(row);
+                        if (null != relation) {
+                            socialRelations.add(relation);
+                        }
+                    }
+
+                    if (rowNum == 15) {
+
+                        row.getCell(2).setCellType(CellType.STRING);
+                        if (row.getCell(2).getStringCellValue().contains("时   间") && row.getCell(4).getStringCellValue().contains("奖    惩    内    容")) {
+                            correctFieldNum++;
+                        } else {
+                            exceptionFieldNum++;
+                            log.info("sheet奖惩关系 异常字段!!!!");
+                            jsonObject.put("rewRec", "rewRec");
+                        }
+                    }
+                    if (rowNum == 16 || rowNum == 17 || rowNum == 18 || rowNum == 19 || rowNum == 20) {
+                        PerRewRec reward = getReward(row);
+                        if (null != reward) {
+                            rewards.add(reward);
+                        }
+                    }
+                }
+            }
+        }
+
+        log.info(file.getName() + "< toSheet >" + JSON.toJSONString(form));
+
+        tempFileResult.setCorrectFieldNum(String.valueOf(correctFieldNum));
+        tempFileResult.setExceptionFieldNum(String.valueOf(exceptionFieldNum));
+        if (exceptionFieldNum == 0) {
+            tempFileResult.setStatus("ok");
+        } else {
+            tempFileResult.setStatus(String.valueOf(exceptionFieldNum));
+        }
+        tempFileResult.setCheckField(jsonObject.toString());
+        tempFileResultMapper.insert(tempFileResult);
+        tempFileResults.add(tempFileResult);
+        personnel.setFileId(tempFileResult.getId());
+        form.setPer(personnel);
+        form.setTempFileResults(tempFileResults);
+        return form;
+    }
+
+    public PerForm toSheet(File file, int sheetNum, Workbook workbook) throws Exception {
+        PerForm form = new PerForm();
+        Per personnel = new Per();
+        List<PerEduRec> eduRecords = new ArrayList<>();
+        List<PerWorkRec> workRecords = new ArrayList<>();
+        List<PerFamRel> familyRelations = new ArrayList<>();
+        List<PerSocRel> socialRelations = new ArrayList<>();
+        List<PerRewRec> rewards = new ArrayList<>();
+        List<TempFileResult> tempFileResults = new ArrayList<>();
+        TempFileResult tempFileResult = new TempFileResult();
+        JSONObject jsonObject = new JSONObject();
+
+        String avatar = getAvatar(workbook.getSheetAt(0), workbook);
+        personnel.setAvatar(avatar);
+
+        log.info("toSheet 获取avatar-->" + avatar);
+        int correctFieldNum = 0;
+        int exceptionFieldNum = 0;
+        for (int i = 0; i < sheetNum; i++) {
+            Sheet sheet = workbook.getSheetAt(i);
+
+            // todo 遍历取sheet
+            if (i == 0) {
+                log.info("-------toSheet解析-[" + file.getName() + "]-的第>" + i + "个sheet!-------");
+                tempFileResult.setFileName(file.getName());
+                // 处理照片
+                for (Row row : sheet) {
+                    int rowNum = row.getRowNum();
+
+
+                    if (rowNum == 1) {
+                        String tempWorkUnit = row.getCell(0).getStringCellValue();
+                        String workUnit = StringUtils.substringAfter(tempWorkUnit, ":");
+                        personnel.setWorkUnit(StringUtils.trim(workUnit));
+                    }
+                    if (rowNum == 2) {
+                        String name = "";
+                        if (row.getCell(0).getStringCellValue().contains("姓   名")) {
+                            name = row.getCell(2).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            name = "测试name";
+                            exceptionFieldNum++;
+                            jsonObject.put("name", name);
+                        }
+
+                        String sex = "";
+                        if (row.getCell(3).getStringCellValue().contains("性   别")) {
+                            sex = row.getCell(4).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            sex = "测试sex";
+                            exceptionFieldNum++;
+                            jsonObject.put("sex", sex);
+                        }
+
+                        String nation = "";
+                        if (row.getCell(5).getStringCellValue().contains("民   族")) {
+                            nation = row.getCell(6).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            nation = "测试nation";
+                            exceptionFieldNum++;
+                            jsonObject.put("nation", nation);
+                        }
+
+                        // todo
+                        String birthplace = "";
+                        if (row.getCell(7).getStringCellValue().contains("籍   贯")) {
+                            birthplace = row.getCell(8).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            birthplace = "测试birthplace";
+                            exceptionFieldNum++;
+                            jsonObject.put("birthplace", birthplace);
+                        }
+                        personnel.setName(name);
+                        personnel.setSex(sex);
+                        personnel.setNation(nation);
+                        personnel.setBirthplace(birthplace);
+                    }
+
+                    if (rowNum == 3) {
+                        String birthday;
+                        row.getCell(2).setCellType(CellType.STRING);
+                        if (null != row.getCell(2).getStringCellValue()) {
+                            if (row.getCell(0).getStringCellValue().contains("出生年月")) {
+                                birthday = row.getCell(2).getStringCellValue();
+                                correctFieldNum++;
+                            } else {
+                                birthday = "测试birthday";
+                                exceptionFieldNum++;
+                                jsonObject.put("birthday", birthday);
+                            }
+                        } else {
+                            birthday = "";
+                        }
+                        row.getCell(4).setCellType(CellType.STRING);
+
+                        String workingTime;
+                        if (null != row.getCell(4).getStringCellValue()) {
+                            if (row.getCell(3).getStringCellValue().contains("工作时间")) {
+                                workingTime = row.getCell(4).getStringCellValue();
+                                correctFieldNum++;
+                            } else {
+                                workingTime = "测试workingTime";
+                                exceptionFieldNum++;
+                                jsonObject.put("workingTime", workingTime);
+                            }
+                        } else {
+                            workingTime = "";
+                        }
+                        String joiningPartyTime;
+                        row.getCell(6).setCellType(CellType.STRING);
+                        if (null != row.getCell(6).getStringCellValue()) {
+                            if (row.getCell(5).getStringCellValue().contains("入党时间")) {
+                                joiningPartyTime = row.getCell(6).getStringCellValue();
+                                correctFieldNum++;
+                            } else {
+                                joiningPartyTime = "测试joiningPartyTime";
+                                exceptionFieldNum++;
+                                jsonObject.put("joiningPartyTime", joiningPartyTime);
+                            }
+                        } else {
+                            joiningPartyTime = "";
+                        }
+                        String healthStatus = "";
+                        if (row.getCell(7).getStringCellValue().contains("健康状况")) {
+                            healthStatus = row.getCell(8).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            healthStatus = "测试healthStatus";
+                            exceptionFieldNum++;
+                            jsonObject.put("healthStatus", healthStatus);
+                        }
+                        if (!StringUtils.contains(CleanDateUtil.cleanDate(birthday), "-") && CleanDateUtil.cleanDate(birthday).length() > 4) {
+                            exceptionFieldNum++;
+                            jsonObject.put("birthday", CleanDateUtil.cleanDate(birthday));
+                        }
+                        if (!StringUtils.contains(CleanDateUtil.cleanDate(workingTime), "-") && CleanDateUtil.cleanDate(workingTime).length() > 4) {
+                            exceptionFieldNum++;
+                            jsonObject.put("workingTime", CleanDateUtil.cleanDate(workingTime));
+                        }
+                        if (!StringUtils.contains(CleanDateUtil.cleanDate(joiningPartyTime), "-") && CleanDateUtil.cleanDate(joiningPartyTime).length() > 4) {
+                            exceptionFieldNum++;
+                            jsonObject.put("joiningPartyTime", CleanDateUtil.cleanDate(joiningPartyTime));
+                        }
+                        personnel.setBirthday(CleanDateUtil.cleanDate(birthday));
+                        personnel.setWorkingTime(CleanDateUtil.cleanDate(workingTime));
+                        personnel.setJoiningPartyTime(CleanDateUtil.cleanDate(joiningPartyTime));
+                        personnel.setHealthStatus(healthStatus);
+                    }
+
+                    if (rowNum == 4) {
+
+                        String education = "";
+                        if (row.getCell(0).getStringCellValue().contains("学   历")) {
+                            education = row.getCell(2).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            education = "测试education";
+                            exceptionFieldNum++;
+                            jsonObject.put("education", education);
+                        }
+                        // todo 毕业院校
+                        String graTimeSchoolMajor = "";
+                        if (row.getCell(3).getStringCellValue().contains("何年何月毕业于何校何专业")) {
+                            graTimeSchoolMajor = row.getCell(6).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            graTimeSchoolMajor = "测试graTimeSchoolMajor";
+                            exceptionFieldNum++;
+                            jsonObject.put("graTimeSchoolMajor", graTimeSchoolMajor);
+                        }
+                        // System.err.println("graTimeSchoolMajor-->" + graTimeSchoolMajor);
+                        personnel.setEducation(education);
+                        personnel.setGraTimeSchoolMajor(graTimeSchoolMajor);
+                    }
+
+                    if (rowNum == 5) {
+                        // todo 后期时需求里无该 “政治面貌” 字段
+                        String personnelNature = "";
+                        if (row.getCell(0).getStringCellValue().contains("人员性质")) {
+                            personnelNature = row.getCell(2).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            personnelNature = "测试personnelNature";
+                            exceptionFieldNum++;
+                            jsonObject.put("personnelNature", personnelNature);
+                        }
+                        row.getCell(5).setCellType(CellType.STRING);
+                        // todo 职称
+                        String jobTitle = "";
+                        if (row.getCell(3).getStringCellValue().contains("职    称")) {
+                            jobTitle = row.getCell(5).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            jobTitle = "测试jobTitle";
+                            exceptionFieldNum++;
+                            jsonObject.put("jobTitle", jobTitle);
+                        }
+                        // todo 是否出错,8
+                        String titleAcqTime = "";
+                        row.getCell(8).setCellType(CellType.STRING);
+                        if (row.getCell(6).getStringCellValue().contains("职称取得时间")) {
+                            titleAcqTime = row.getCell(8).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            titleAcqTime = "测试titleAcqTime";
+                            exceptionFieldNum++;
+                            jsonObject.put("titleAcqTime", titleAcqTime);
+                        }
+
+                        if (!StringUtils.contains(CleanDateUtil.cleanDate(titleAcqTime), "-") && CleanDateUtil.cleanDate(titleAcqTime).length() > 4) {
+                            exceptionFieldNum++;
+                            jsonObject.put("titleAcqTime", CleanDateUtil.cleanDate(titleAcqTime));
+                        }
+                        // personnel.setPoliticsStatus(politicsStatus);
+                        personnel.setPerNature(personnelNature);
+                        personnel.setJobTitle(jobTitle);
+                        personnel.setTitleAcqTime(CleanDateUtil.cleanDate(titleAcqTime));
+                    }
+
+                    if (rowNum == 6) {
+                        // todo 重复 当前模板不再需要在此处获取
+                        String currentJob = "";
+                        if (row.getCell(0).getStringCellValue().contains("现任职务")) {
+                            currentJob = row.getCell(2).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            currentJob = "测试currentJob";
+                            exceptionFieldNum++;
+                            jsonObject.put("currentJob", currentJob);
+                        }
+
+
+                        row.getCell(8).setCellType(CellType.STRING);
+                        row.getCell(7).setCellType(CellType.STRING);
+                        String contactPhone = "";
+                        if (row.getCell(5).getStringCellValue().contains("联系电话")) {
+                            contactPhone = row.getCell(7).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            contactPhone = "测试contactPhone";
+                            exceptionFieldNum++;
+                            jsonObject.put("contactPhone", contactPhone);
+                        }
+                        personnel.setCurrentJob(currentJob);
+                        personnel.setContactPhone(contactPhone);
+                    }
+
+                    if (rowNum == 7) {
+                        String address = "";
+                        if (row.getCell(0).getStringCellValue().contains("家庭住址")) {
+                            address = row.getCell(2).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            address = "测试address";
+                            exceptionFieldNum++;
+                            jsonObject.put("address", address);
+                        }
+                        String idNumber = "";
+                        if (row.getCell(7).getStringCellValue().contains("身份证号码")) {
+                            idNumber = row.getCell(8).getStringCellValue();
+                            correctFieldNum++;
+                        } else {
+                            idNumber = "测试idNumber";
+                            exceptionFieldNum++;
+                            jsonObject.put("idNumber", idNumber);
+                        }
+                        personnel.setAddress(address);
+                        personnel.setIdNumber(idNumber);
+                    }
+
+                    if (rowNum == 8){
+
+                        if (row.getCell(1).getStringCellValue().contains("学习时间") && row.getCell(3).getStringCellValue().contains("学     校") && row.getCell(7).getStringCellValue().contains("专   业")){
+                            // System.err.println("8 包含");
+                            correctFieldNum++;
+                        }else {
+                            exceptionFieldNum++;
+                            log.info("sheet教育关系 异常字段!!!!");
+                            jsonObject.put("eduRecord","eduRecord");
+                        }
+                    }
+                    if (rowNum == 9 || rowNum == 10 || rowNum == 11 || rowNum == 12) {
+                        PerEduRec eduRecord = getEduRecord(row);
+                        if (null != eduRecord) {
+                            eduRecords.add(eduRecord);
+                        }
+                    }
+
+                    if (rowNum == 13){
+
+                        if (row.getCell(1).getStringCellValue().contains("任职时间") && row.getCell(3).getStringCellValue().contains("单      位") && row.getCell(7).getStringCellValue().contains("职    务")){
+                            System.err.println("13任职时间包含");
+                            correctFieldNum++;
+                        }else {
+                            System.err.println("13任职时间 不 包含");
+                            if (rowNum == 14){
+
+                                SpecialParseExcel.toCheckForteenRowNum(file,sheetNum,workbook,rowNum);
+                                if (row.getCell(1).getStringCellValue().contains("任职时间") && row.getCell(3).getStringCellValue().contains("单      位") && row.getCell(7).getStringCellValue().contains("职    务")) {
+                                    System.err.println("14任职时间包含");
+                                    correctFieldNum++;
+                                }else {
+                                    System.err.println("14任职时间 不 包含");
+                                    if (rowNum == 15){
+
+                                        if (row.getCell(1).getStringCellValue().contains("任职时间") && row.getCell(3).getStringCellValue().contains("单      位") && row.getCell(7).getStringCellValue().contains("职    务")) {
+                                            System.err.println("15任职时间包含");
+                                            correctFieldNum++;
+                                        }else {
+                                            System.err.println("15任职时间 不 包含");
+                                        }
+                                    }
+                                }
+
+                            }
+
+                        }
+
+                    }
+
+
+                    form.setEduRecords(eduRecords);
+                    form.setWorkRecords(workRecords);
+                    form.setFamRelations(familyRelations);
+                    form.setSocRelations(socialRelations);
+                    form.setRewRecords(rewards);
+                }
+            }
+            if (i == 1) {
+                log.info("-------sheet解析-[" + file.getName() + "]-的第>" + i + "个sheet!-------");
+                for (Row row : sheet) {
+                    // todo  sheet 2
+                    int rowNum = row.getRowNum();
+
+                    if (rowNum == 0) {
+
+                        if (row.getCell(2).getStringCellValue().contains("姓  名") && row.getCell(3).getStringCellValue().contains("出生年月") && row.getCell(4).getStringCellValue().contains("政治面貌") && row.getCell(5).getStringCellValue().contains("工 作 单 位 及 职 务")) {
+                            correctFieldNum++;
+                        } else {
+                            exceptionFieldNum++;
+                            log.info("sheet家庭关系 异常字段!!!!");
+                            jsonObject.put("famRel", "famRel");
+                        }
+                    }
+                    if (rowNum == 1 || rowNum == 3 || rowNum == 4 || rowNum == 5 || rowNum == 6 || rowNum == 7 || rowNum == 8) {
+                        PerFamRel relation = getFamRel(rowNum, row);
+                        if (null != relation) {
+                            familyRelations.add(relation);
+                        }
+                    }
+
+
+                    if (rowNum == 9) {
+
+                        if (row.getCell(1).getStringCellValue().contains("关  系") && row.getCell(2).getStringCellValue().contains("姓  名") && row.getCell(3).getStringCellValue().contains("年 龄") && row.getCell(4).getStringCellValue().contains("政治面貌") && row.getCell(5).getStringCellValue().contains("工 作 单 位 及 职 务")) {
+                            correctFieldNum++;
+                        } else {
+                            exceptionFieldNum++;
+                            log.info("sheet社会关系 异常字段!!!!");
+                            jsonObject.put("socRel", "socRel");
+                        }
+                    }
+                    if (rowNum == 10 || rowNum == 11 || rowNum == 12 || rowNum == 13 || rowNum == 14) {
+                        PerSocRel relation = getSocRel(row);
+                        if (null != relation) {
+                            socialRelations.add(relation);
+                        }
+                    }
+
+                    if (rowNum == 15) {
+
+                        row.getCell(2).setCellType(CellType.STRING);
+                        if (row.getCell(2).getStringCellValue().contains("时   间") && row.getCell(4).getStringCellValue().contains("奖    惩    内    容")) {
+                            correctFieldNum++;
+                        } else {
+                            exceptionFieldNum++;
+                            log.info("sheet奖惩关系 异常字段!!!!");
+                            jsonObject.put("rewRec", "rewRec");
+                        }
+                    }
+                    if (rowNum == 16 || rowNum == 17 || rowNum == 18 || rowNum == 19 || rowNum == 20) {
+                        PerRewRec reward = getReward(row);
+                        if (null != reward) {
+                            rewards.add(reward);
+                        }
+                    }
+                }
+            }
+        }
+
+        log.info(file.getName() + "< toSheet >" + JSON.toJSONString(form));
+
+        tempFileResult.setCorrectFieldNum(String.valueOf(correctFieldNum));
+        tempFileResult.setExceptionFieldNum(String.valueOf(exceptionFieldNum));
+        if (exceptionFieldNum == 0) {
+            tempFileResult.setStatus("ok");
+        } else {
+            tempFileResult.setStatus(String.valueOf(exceptionFieldNum));
+        }
+        tempFileResult.setCheckField(jsonObject.toString());
+        tempFileResultMapper.insert(tempFileResult);
+        tempFileResults.add(tempFileResult);
+        personnel.setFileId(tempFileResult.getId());
+        form.setPer(personnel);
+        form.setTempFileResults(tempFileResults);
+        return form;
+    }
+    public  PerForm toHSSFSheet(File file,int sheetNum,HSSFWorkbook wb) throws Exception {
+        PerForm form = new PerForm();
+        Per personnel = new Per();
+        List<PerEduRec> eduRecords = new ArrayList<>();
+        List<PerWorkRec> workRecords = new ArrayList<>();
+        List<PerFamRel> familyRelations = new ArrayList<>();
+        List<PerSocRel> socialRelations = new ArrayList<>();
+        List<PerRewRec> rewards = new ArrayList<>();
+        String avatar = getAvatar(wb.getSheetAt(0), wb);
+        log.info("获取avatar-->" + avatar);
+        personnel.setAvatar(avatar);
+        int nameNum = 0;
+        for (int i = 0; i < sheetNum; i++) {
+
+            HSSFSheet sheet = wb.getSheetAt(i);
+            System.err.println("sheet name-->"+sheet.getSheetName());
+            // System.err.println("toHSSFSheet-->"+sheet);
+            // todo 遍历取sheet
+            if (i == 0) {
+                log.info("-------解析-[" + file.getName() + "]-的第>" + i + "个sheet!-------");
+                // 处理照片
+
+                for (Row row : sheet) {
+                    // String avatar = getAvatar(sheet, workbook);
+                    int rowNum = row.getRowNum();
+                    if (rowNum == 1){
+                        String tempWorkUnit = row.getCell(0).getStringCellValue();
+                        String workUnit = StringUtils.substringAfter(tempWorkUnit,":");
+                        personnel.setWorkUnit(StringUtils.trim(workUnit));
+                    }
+                    if (rowNum == 2) {
+                        String name ="";
+                        if (!row.getCell(1).getStringCellValue().equals("姓名")){
+                            name = row.getCell(2).getStringCellValue();
+                        }else {
+                            nameNum++;
+                        }
+
+                        String sex = row.getCell(4).getStringCellValue();
+                        String nation = row.getCell(6).getStringCellValue();
+                        // todo
+                        String birthplace = row.getCell(8).getStringCellValue();
+                        personnel.setName(name);
+                        personnel.setSex(sex);
+                        personnel.setNation(nation);
+                        personnel.setBirthplace(birthplace);
+                    }
+
+                    if (rowNum == 3) {
+                        String birthday;
+                        row.getCell(2).setCellType(CellType.STRING);
+                        if (null != row.getCell(2).getStringCellValue()) {
+                            // birthday = sdf.format(row.getCell(2).getDateCellValue());
+                            birthday = row.getCell(2).getStringCellValue();
+                        } else {
+                            birthday = "";
+                        }
+                        row.getCell(4).setCellType(CellType.STRING);
+
+                        String workingTime;
+                        if (null != row.getCell(4).getStringCellValue()) {
+                            // workingTime = sdf.format(row.getCell(4).getDateCellValue());
+                            workingTime = row.getCell(4).getStringCellValue();
+                        } else {
+                            workingTime = "";
+                        }
+                        String joiningPartyTime;
+                        row.getCell(6).setCellType(CellType.STRING);
+                        if (null != row.getCell(6).getStringCellValue()) {
+                            // joiningPartyTime = sdf.format(row.getCell(6).getDateCellValue());
+                            joiningPartyTime = row.getCell(6).getStringCellValue();
+                        } else {
+                            joiningPartyTime = "";
+                        }
+                        String healthStatus = row.getCell(8).getStringCellValue();
+                        personnel.setBirthday(CleanDateUtil.cleanDate(birthday));
+                        personnel.setWorkingTime(CleanDateUtil.cleanDate(workingTime));
+                        personnel.setJoiningPartyTime(CleanDateUtil.cleanDate(joiningPartyTime));
+                        personnel.setHealthStatus(healthStatus);
+                    }
+
+                    if (rowNum == 4) {
+
+                        String education = row.getCell(2).getStringCellValue();
+                        // todo 毕业院校
+                        String graTimeSchoolMajor = row.getCell(6).getStringCellValue();
+                        personnel.setEducation(education);
+                        personnel.setGraTimeSchoolMajor(graTimeSchoolMajor);
+                    }
+
+                    if (rowNum == 5) {
+                        // todo 无该政治面貌字段
+                        // String politicsStatus = row.getCell(2).getStringCellValue();
+                        String personnelNature = row.getCell(2).getStringCellValue();
+                        row.getCell(5).setCellType(CellType.STRING);
+                        row.getCell(8).setCellType(CellType.STRING);
+                        // todo 职称
+                        String jobTitle = row.getCell(5).getStringCellValue();
+                        String titleAcqTime = row.getCell(8).getStringCellValue();
+                        // personnel.setPoliticsStatus(politicsStatus);
+                        personnel.setPerNature(personnelNature);
+                        personnel.setJobTitle(jobTitle);
+                        personnel.setTitleAcqTime(CleanDateUtil.cleanDate(titleAcqTime));
+                    }
+
+                    if (rowNum == 6) {
+                        // todo 重复 当前模板不再需要在此处获取
+                        // String jobTitle = row.getCell(2).getStringCellValue();
+                        String currentJob = row.getCell(2).getStringCellValue();
+
+                        row.getCell(8).setCellType(CellType.STRING);
+                        row.getCell(7).setCellType(CellType.STRING);
+                        String contactPhone = row.getCell(7).getStringCellValue();
+                        // personnel.setJobTitle(jobTitle);
+                        personnel.setCurrentJob(currentJob);
+                        // personnel.setTitleAcqTime(titleAcqTime);
+                        personnel.setContactPhone(contactPhone);
+                    }
+
+                    if (rowNum == 7) {
+                        String address = row.getCell(2).getStringCellValue();
+                        String idNumber = row.getCell(8).getStringCellValue();
+                        personnel.setAddress(address);
+                        personnel.setIdNumber(idNumber);
+                    }
+
+                    if (rowNum == 9 || rowNum == 10 || rowNum == 11 || rowNum == 12) {
+                        PerEduRec eduRecord = getEduRecord(row);
+                        if (null != eduRecord) {
+                            eduRecords.add(eduRecord);
+                        }
+                    }
+
+                    if (rowNum == 14 || rowNum == 15 || rowNum == 16 || rowNum == 17 || rowNum == 18 || rowNum == 19 || rowNum == 20 || rowNum == 21 || rowNum == 22) {
+                        PerWorkRec workRecord = getWorkRecord(row);
+                        if (null != workRecord) {
+                            workRecords.add(workRecord);
+                        }
+                    }
+
+                    form.setPer(personnel);
+                    form.setEduRecords(eduRecords);
+                    form.setWorkRecords(workRecords);
+                    form.setFamRelations(familyRelations);
+                    form.setSocRelations(socialRelations);
+                    form.setRewRecords(rewards);
+                }
+
+            }
+            if (i == 1) {
+                log.info("-------解析-[" + file.getName() + "]-的第>" + i + "个sheet!-------");
+                for (Row row : sheet) {
+                    // todo  sheet 2
+                    int rowNum = row.getRowNum();
+                    if (rowNum == 1 || rowNum == 3 || rowNum == 4 || rowNum == 5 || rowNum == 6 || rowNum == 7 || rowNum == 8) {
+                        PerFamRel relation = getFamRel(rowNum, row);
+                        System.err.println("关系---》"+relation);
+                        if (null != relation) {
+                            familyRelations.add(relation);
+                        }
+                    }
+
+                    if (rowNum == 10 || rowNum == 11 || rowNum == 12 || rowNum == 13 || rowNum == 14) {
+                        PerSocRel relation = getSocRel(row);
+                        if (null != relation) {
+                            socialRelations.add(relation);
+                        }
+                    }
+
+                    if (rowNum == 16 || rowNum == 17 || rowNum == 18 || rowNum == 19 || rowNum == 20) {
+                        PerRewRec reward = getReward(row);
+                        if (null != reward) {
+                            rewards.add(reward);
+                        }
+                    }
+                }
+            }
+        }
+        System.err.println("**********************"+nameNum);
+        System.err.println(file.getName() + "< toHSSFSheet >" + JSON.toJSONString(form));
+        return form;
+    }
+
+
+
+
+    /**
+     * 获取头像
+     *
+     * @param sheet
+     * @param workbook
+     * @throws Exception
+     */
+    private String getAvatar(Sheet sheet, Workbook workbook) throws Exception {
+        List<PictureData> picList = new ArrayList<>();
+        // System.err.println("sheet-->"+sheet);
+        if (sheet instanceof HSSFSheet) {
+            // System.err.println("sheet instanceof HSSFSheet");
+            List<HSSFPictureData> pictures = ((HSSFWorkbook) workbook).getAllPictures();
+            if (pictures.size() != 0) {
+                for (HSSFShape shape : ((HSSFSheet) sheet).getDrawingPatriarch().getChildren()) {
+                    if (shape instanceof HSSFPicture) {
+                        HSSFPicture pic = (HSSFPicture) shape;
+                        int pictureIndex = pic.getPictureIndex() - 1;
+                        HSSFPictureData picData = pictures.get(pictureIndex);
+                        picList.add(picData);
+                    }
+                }
+            }
+        }
+        if (sheet instanceof XSSFSheet) {
+            // System.err.println("sheet instanceof XSSFSheet");
+            for (POIXMLDocumentPart dr : ((XSSFSheet) sheet).getRelations()) {
+                if (dr instanceof XSSFDrawing) {
+                    XSSFDrawing drawing = (XSSFDrawing) dr;
+                    List<XSSFShape> shapes = drawing.getShapes();
+                    for (XSSFShape shape : shapes) {
+                        XSSFPicture pic = (XSSFPicture) shape;
+                        picList.add(pic.getPictureData());
+                    }
+                }
+            }
+        }
+        if (picList.size() == 1) {
+            PictureData pic = picList.get(0);
+            // 随机图片名称
+            String picName = UUID.randomUUID().toString() + "." + pic.suggestFileExtension();
+            // System.err.println("picName-->"+picName);
+            // 获取图片二进制流
+            byte[] data = pic.getData();
+            // System.err.println("头像-->"+properties.getCommon().getFileDir());
+            FileOutputStream out = new FileOutputStream(properties.getCommon().getFileDir() + picName);
+            // System.err.println("头像-->"+properties.getCommon().getFileDir() + picName);
+            out.write(data);
+            out.close();
+            log.info("img-->" + properties.getCommon().getBaseUrl() + picName);
+            return properties.getCommon().getBaseUrl() + picName;
+        }
+        return null;
+    }
+    private PerEduRec getEduRecord(Row row) {
+        row.getCell(1).setCellType(CellType.STRING);
+        row.getCell(3).setCellType(CellType.STRING);
+        row.getCell(7).setCellType(CellType.STRING);
+        PerEduRec record = new PerEduRec();
+        String eduRecTime = row.getCell(1).getStringCellValue();
+        String eduRecSchool = row.getCell(3).getStringCellValue();
+        String eduRecMajor = row.getCell(7).getStringCellValue();
+        record.setTime(CleanDateUtil.cleanDate(eduRecTime));
+        record.setSchool(eduRecSchool);
+        record.setMajor(eduRecMajor);
+        if (!record.isEmpty()) {
+            return record;
+        }
+        return null;
+    }
+
+    private PerWorkRec getWorkRecord(Row row) {
+        row.getCell(1).setCellType(CellType.STRING);
+        row.getCell(3).setCellType(CellType.STRING);
+        row.getCell(7).setCellType(CellType.STRING);
+        PerWorkRec record = new PerWorkRec();
+        String workRecTime = row.getCell(1).getStringCellValue();
+        String workRecDept = row.getCell(3).getStringCellValue();
+        String workRecJob = row.getCell(7).getStringCellValue();
+        record.setTime(CleanDateUtil.cleanDate(workRecTime));
+        record.setDepartment(workRecDept);
+        record.setJob(workRecJob);
+        if (!record.isEmpty()) {
+            return record;
+        }
+        return null;
+    }
+
+    private PerFamRel getFamRel(int rowNum, Row row) {
+        row.getCell(1).setCellType(CellType.STRING);
+        row.getCell(2).setCellType(CellType.STRING);
+        row.getCell(3).setCellType(CellType.STRING);
+        row.getCell(4).setCellType(CellType.STRING);
+        row.getCell(5).setCellType(CellType.STRING);
+        PerFamRel relation = new PerFamRel();
+        String famRelRelation;
+        if (rowNum == 27) {
+            famRelRelation = "配偶";
+        } else {
+            famRelRelation = row.getCell(1).getStringCellValue();
+        }
+        String famRelName = row.getCell(2).getStringCellValue();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String tempFamRelBirthday = row.getCell(3).getStringCellValue();
+        System.err.println(famRelName+",tempFamRelBirthday-->"+tempFamRelBirthday);
+        String famRelBirthday = "";
+        String finalFamRelBirthday = "";
+        if (tempFamRelBirthday.length() != 4 && !StringUtils.contains(tempFamRelBirthday,".")){
+            // todo 做时间转换
+            // System.err.println("row3Type-->"+row.getCell(3).getCellType());
+            if (null != tempFamRelBirthday){
+                famRelBirthday = StringUtils.isBlank(tempFamRelBirthday.toString()) ? "" : tempFamRelBirthday.toString().trim();
+                Calendar calendar = new GregorianCalendar(1900,0,-1);
+                Date d = calendar.getTime();
+                if (null == famRelBirthday && "".equals(famRelBirthday)){
+                    Date dd = DateUtils.addDays(d,Integer.valueOf(famRelBirthday));
+
+                    finalFamRelBirthday = sdf.format(dd);
+                    relation.setBirthday(StringUtils.substringBefore(finalFamRelBirthday,"-01"));
+                }else {
+
+                }
+            }
+        }else {
+            relation.setBirthday(CleanDateUtil.cleanDate(tempFamRelBirthday));
+        }
+        String famRelPolSta = row.getCell(4).getStringCellValue();
+        String famRelDeptJob = row.getCell(5).getStringCellValue();
+        relation.setRelation(famRelRelation);
+        relation.setName(famRelName);
+
+        // relation.setBirthday(StringUtils.substringBefore(finalFamRelBirthday,"-01"));
+        relation.setPoliticalStatus(famRelPolSta);
+        relation.setDeptJob(famRelDeptJob);
+        if (!relation.isEmpty()) {
+            return relation;
+        }
+        return null;
+    }
+
+    private PerSocRel getSocRel(Row row) {
+        row.getCell(1).setCellType(CellType.STRING);
+        row.getCell(2).setCellType(CellType.STRING);
+        row.getCell(3).setCellType(CellType.STRING);
+        row.getCell(4).setCellType(CellType.STRING);
+        row.getCell(5).setCellType(CellType.STRING);
+        PerSocRel relation = new PerSocRel();
+        String socRelRelation = row.getCell(1).getStringCellValue();
+        String socRelName = row.getCell(2).getStringCellValue();
+        String socRelAge = row.getCell(3).getStringCellValue();
+        String socRelPolSta = row.getCell(4).getStringCellValue();
+        String socRelDeptJob = row.getCell(5).getStringCellValue();
+        relation.setRelation(socRelRelation);
+        relation.setName(socRelName);
+        relation.setAge(socRelAge);
+        relation.setPoliticalStatus(socRelPolSta);
+        relation.setDeptJob(socRelDeptJob);
+        if (!relation.isEmpty()) {
+            return relation;
+        }
+        return null;
+    }
+
+    private PerRewRec getReward(Row row) {
+        row.getCell(2).setCellType(CellType.STRING);
+        row.getCell(4).setCellType(CellType.STRING);
+        PerRewRec reward = new PerRewRec();
+        String rewTime = row.getCell(2).getStringCellValue();
+        String rewContent = row.getCell(4).getStringCellValue();
+        reward.setTime(CleanDateUtil.cleanDate(rewTime));
+        reward.setContent(rewContent);
+        if (!reward.isEmpty()) {
+            return reward;
+        }
+        return null;
+    }
+
+
+
+
+
+}

+ 256 - 0
src/main/java/com/sprivacy/pms/controller/UploadController.java

@@ -0,0 +1,256 @@
+package com.sprivacy.pms.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.sprivacy.pms.form.per.PerForm;
+import com.sprivacy.pms.http.HttpResponse;
+import com.sprivacy.pms.http.HttpResponseUtils;
+import com.sprivacy.pms.mapper.PerMapper;
+import com.sprivacy.pms.properties.PmsProperties;
+import com.sprivacy.pms.service.*;
+import com.sprivacy.pms.util.CleanDateUtil;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * @author fanglang
+ * @date 2018-10-26 10:24
+ * @desc 上传文件
+ */
+@RestController
+@RequestMapping(value = "/upload")
+public class UploadController {
+
+    private final static Logger log = LoggerFactory.getLogger(SysUserRoleController.class);
+
+    @Autowired
+    private EduRecService eduRecService;
+
+    @Autowired
+    private WorkRecService workRecService;
+
+    @Autowired
+    private FamRelService famRelService;
+
+    @Autowired
+    private SocRelService socRelService;
+
+    @Autowired
+    private RewRecService rewRecService;
+
+    @Autowired
+    private PerMapper perMapper;
+
+    @Autowired
+    private PerService perService;
+
+    @Autowired
+    private UploadService uploadService;
+
+    @Autowired
+    private PmsProperties properties;
+
+    /**
+     * TODO 工资上传。
+     * @param file
+     * @return
+     * @throws Exception
+     */
+    @ApiOperation(value = "上传工资表")
+    @PostMapping(value = "/excel/wage")
+    public HttpResponse uploadWageExcel(@RequestParam("file") MultipartFile file) throws Exception {
+        log.info("上传工资表。");
+        return HttpResponseUtils.ok(uploadService.importWageExcel(file));
+    }
+
+    /**
+     * TODO 单个/批量 文件上传接口。
+     * @param file
+     * @return
+     * @throws Exception
+     */
+    @ApiOperation("整批量/单个文件上传人员信息")
+    @PostMapping(value = "/import/rarFile")
+    public HttpResponse uploadAllExcels(MultipartFile file) throws Exception {
+        List<PerForm> perForms = new ArrayList<>();
+        String strOriginalFilename = file.getOriginalFilename();
+        String strFileType = StringUtils.substringAfter(strOriginalFilename, ".");
+        log.info("后缀名--->" + strFileType);
+        // 后缀名转换 如:JPG--jpg
+        if (StringUtils.isAllUpperCase(strFileType)) {
+            strFileType = StringUtils.lowerCase(strFileType);
+            log.info("UpperCase后缀名转换-->" + strFileType);
+        }
+
+        if (strFileType.equals("xls") || strFileType.equals("xlsx")){
+            // 调用单个excel上传接口
+            log.info("<*******整批次批量上传*******> <单个>导入接口! START");
+            perForms = uploadService.importSingleExcel(file);
+        }else {
+            log.info("<*******整批次批量上传*******> <批量>导入接口! START");
+            perForms = uploadService.importAllExcels(file);
+        }
+        if (null != perForms && perForms.size() > 0){
+            log.info("<*******整批次批量上传*******> END responseData{}:"+JSON.toJSONString(perForms));
+            return HttpResponseUtils.ok(1,"上传成功",perForms);
+        }
+
+        return HttpResponseUtils.ok(0,"上传失败",perForms);
+    }
+
+    /**
+     * TODO 文件下载接口,单个xls,多个zip格式。
+     * @param ids
+     * @param request
+     * @param response
+     * @throws Exception
+     */
+    @ApiOperation("下载文件")
+    @PostMapping(value = "/getFile")
+    // @GetMapping("/getFile/{id}")
+    public void getUrl(@RequestBody List<Long> ids, HttpServletRequest request, HttpServletResponse response) throws Exception {
+        log.info("<*******下载文件*******>{ids}-->" + JSON.toJSONString(ids));
+        uploadService.download(ids,request,response);
+    }
+
+    /**
+     * TODO 测试接口 用。
+     * @param tempDate
+     * @return
+     */
+    @ApiOperation("文件上传导入时时间的处理之测试接口")
+    @PostMapping(value = "/upload/timeDeal")
+    public HttpResponse cleanDate(String tempDate){
+        String finalTime = CleanDateUtil.cleanDate(tempDate);
+        if (null != finalTime){
+            return HttpResponseUtils.ok(1,"时间处理成功",finalTime);
+        }
+        return HttpResponseUtils.error(0,"时间处理失败",finalTime);
+    }
+
+    /**
+     * TODO 测试接口 用。
+     * @param file
+     * @return
+     */
+    @ApiOperation("文件上传测试")
+    @PostMapping(value = "/testFileCon")
+    public HttpResponse testFileContentType(MultipartFile file){
+        String strOriginalFilename = file.getOriginalFilename();
+        String strFileType = StringUtils.substringAfter(strOriginalFilename, ".");
+        log.info("后缀名--->" + strFileType);
+        // 后缀名转换 如:JPG--jpg
+        if (StringUtils.isAllUpperCase(strFileType)) {
+            strFileType = StringUtils.lowerCase(strFileType);
+            log.info("后缀名转换-->" + strFileType);
+        }
+        if (strFileType.equals("xls") || strFileType.equals("xlsx")){
+            // 调用单个excel上传接口
+            log.info("调用单个导入接口!");
+        }else {
+            log.info("调用批量导入接口!");
+        }
+
+        return  HttpResponseUtils.ok(1,"请求成功!",null);
+    }
+
+
+    @ApiOperation(value = "头像上传接口")
+    @PostMapping(value = "/upload/avatar")
+    public HttpResponse uploadAvatar(@RequestParam(value = "file", required = false) MultipartFile file){
+        String checkStr = checkImgSize(file);
+        System.err.println("checkStr>"+checkStr);
+        if (!checkStr.equals("2")){
+            // 上传成功
+            return HttpResponseUtils.ok(1,"长传头像成功",checkStr);
+        }else if (checkStr.equals("2")){
+            // 上传大小超过200K
+            return HttpResponseUtils.ok(0,"该图片大小超过了200K,请重新上传。",null);
+        }
+        return HttpResponseUtils.error(0,"操作失败",null);
+    }
+
+    public String checkImgSize(MultipartFile file){
+        if (null != file){
+            if (!file.isEmpty()) {
+                try {
+                    // 图片大小单位是Kb
+                    Long size = file.getSize() / 1024;
+
+                    System.err.println("size>"+size);
+                    if (size >= 200) {
+                        return "2";
+                    }
+                    // 图片后缀
+                    String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
+                    // 图片名称
+                    String name = UUID.randomUUID().toString() + suffix;
+                    // 图片访问路径
+                    // String url = properties.getCommon().getFileDir() + name;
+                    String url = properties.getCommon().getFileDir() + name;
+                    System.err.println("url>"+url);
+
+                    // 转存文件
+                    file.transferTo(new File(url));
+
+                    return properties.getCommon().getBaseUrl() + name;
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }else {
+                return "0";
+            }
+        }else {
+            return "0";
+        }
+        return "0";
+    }
+
+
+    @ApiOperation(value = "根据人员花名册做数据更新接口")
+    @PostMapping(value = "/updatePerData")
+    public HttpResponse updatePerDataByRegisterList(@RequestParam(value = "file", required = false) MultipartFile file) throws Exception {
+        if (null != file) {
+            String strOriginalFilename = file.getOriginalFilename();
+            String strFileType = StringUtils.substringAfter(strOriginalFilename, ".");
+            log.info("后缀名--->" + strFileType);
+            // 后缀名转换 如:JPG--jpg
+            if (StringUtils.isAllUpperCase(strFileType)) {
+                strFileType = StringUtils.lowerCase(strFileType);
+                log.info("UpperCase后缀名转换-->" + strFileType);
+            }
+
+            if (strFileType.equals("xls") || strFileType.equals("xlsx")) {
+                // 调用单个excel上传接口
+                log.info("<*******根据人员花名册做数据更新接口*******> <单个>导入接口! START");
+                int updatedNum = uploadService.updateSinglePerDataByRegisterList(file);
+                if (updatedNum > 0) {
+                    return HttpResponseUtils.ok(1, "根据人员花名册做数据更新接口", updatedNum);
+                } else {
+                    return HttpResponseUtils.error(0, "根据人员花名册做数据更新接口", updatedNum);
+                }
+            } else {
+                log.info("<*******根据人员花名册做数据更新接口*******> <批量>导入接口! START");
+                int updatedNum = uploadService.updateAllPerDataByRegisterList(file);
+                if (updatedNum > 0) {
+                    return HttpResponseUtils.ok(1, "根据人员花名册做数据更新接口", updatedNum);
+                } else {
+                    return HttpResponseUtils.error(0, "根据人员花名册做数据更新接口", updatedNum);
+                }
+            }
+        } else {
+            return HttpResponseUtils.error(0, "根据人员花名册做数据更新接口", "file为空。");
+        }
+    }
+}

+ 60 - 0
src/main/java/com/sprivacy/pms/controller/UserController.java

@@ -0,0 +1,60 @@
+package com.sprivacy.pms.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.sprivacy.pms.form.users.BackUser;
+import com.sprivacy.pms.form.users.LoginUser;
+import com.sprivacy.pms.http.HttpResponse;
+import com.sprivacy.pms.http.HttpResponseUtils;
+import com.sprivacy.pms.service.UserService;
+import com.sprivacy.pms.util.DateUtils;
+import com.sprivacy.pms.util.TextUtils;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-06 17:07
+ * @desc UserController
+ **/
+@RestController
+public class UserController {
+    private final static Logger log = LoggerFactory.getLogger(UserController.class);
+
+    @Autowired
+    private UserService userService;
+
+    @ApiOperation(value = "用户登录")
+    @PostMapping(value = "/login")
+    public HttpResponse login(@RequestBody LoginUser loginUser){
+        log.info("<******* 用户登录 START *******> [method:/login]-loginUser{入参}:"+ JSON.toJSONString(loginUser));
+        log.info("START LOGIN...当前登录用户为>" + loginUser.getUserName());
+        HttpResponseUtils.error(0,"登录失败");
+        if (!TextUtils.isEmpty(loginUser.getUserName()) && !TextUtils.isEmpty(loginUser.getPasswd())){
+            BackUser backUser = userService.login(loginUser.getUserName(),loginUser.getPasswd());
+            log.info("END LOGIN..."+backUser.getUserName()+"<>"+ DateUtils.getCurrentFromatTime());
+            if (backUser.getFlag().equals("1")){
+                log.info("<******* 用户登录 END *******> responseData{}:" + "用户名/密码正确,登录成功,"+JSON.toJSONString(backUser));
+                return HttpResponseUtils.ok(1,"用户名/密码正确,登录成功",backUser);
+            }else if (backUser.getFlag().equals("2")){
+                log.info("<******* 用户登录 END *******> responseData{}:" + "登录失败,用户名或密码错误,请重新登录,"+JSON.toJSONString(backUser));
+                return HttpResponseUtils.error(0,"登录失败,用户名或密码错误,请重新登录");
+            }else if (backUser.getFlag().equals("-1")){
+                log.info("<******* 用户登录 END *******> responseData{}:" + "查无此用户,请确认该用户是否是该系统内用户,"+backUser);
+                return HttpResponseUtils.error(0,"查无此用户,请确认该用户是否是该系统内用户");
+            }else if (backUser.getFlag().equals("0")){
+                log.info("<******* 用户登录 END *******> responseData{}:" + "服务器内部错误,请联系技术人员,"+backUser);
+                return HttpResponseUtils.error(0,"服务器内部错误,请联系技术人员");
+            }
+        }else {
+            log.info("<******* 用户登录 END *******> responseData{}:" + "登录失败,用户名或密码不可以为空,"+null);
+            return HttpResponseUtils.error(0,"登录失败,用户名或密码不可以为空");
+        }
+        return HttpResponseUtils.error(0,"服务器内部错误,请联系技术人员");
+    }
+
+}

+ 43 - 0
src/main/java/com/sprivacy/pms/controller/WageController.java

@@ -0,0 +1,43 @@
+package com.sprivacy.pms.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.sprivacy.pms.http.HttpResponse;
+import com.sprivacy.pms.http.HttpResponseUtils;
+import com.sprivacy.pms.model.Wage;
+import com.sprivacy.pms.service.WageService;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author fanglang
+ * @date 2018-11-30 15:15
+ * @desc
+ */
+@RestController
+public class WageController {
+    private final static Logger log = LoggerFactory.getLogger(WageController.class);
+
+    @Autowired
+    private WageService wageService;
+
+    @ApiOperation(value = "新增工资数据")
+    @PostMapping(value = "/wages")
+    public HttpResponse addWages(@RequestBody List<Wage> wages) {
+        log.info("<******* 新增工资数据 START *******> [method:/wages]-wages{入参}:"+JSON.toJSONString(wages));
+        log.info("新增工资数据--->"+ JSON.toJSONString(wages));
+        wageService.saveWage(wages);
+        log.info("<******* 新增工资数据 END *******> responseData{}:" + "新增工资数据 SUCCESS!");
+        return HttpResponseUtils.ok();
+    }
+
+
+
+
+}

+ 28 - 0
src/main/java/com/sprivacy/pms/exception/PmsException.java

@@ -0,0 +1,28 @@
+package com.sprivacy.pms.exception;
+
+/**
+ * @author fanglang
+ * @date 2018-10-15 13:47
+ * @desc 自定义异常
+ */
+public class PmsException extends RuntimeException {
+
+    public PmsException() {
+    }
+
+    public PmsException(String message) {
+        super(message);
+    }
+
+    public PmsException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public PmsException(Throwable cause) {
+        super(cause);
+    }
+
+    public PmsException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+        super(message, cause, enableSuppression, writableStackTrace);
+    }
+}

+ 25 - 0
src/main/java/com/sprivacy/pms/exception/PmsExceptionHandler.java

@@ -0,0 +1,25 @@
+package com.sprivacy.pms.exception;
+
+import com.sprivacy.pms.http.HttpResponse;
+import com.sprivacy.pms.http.HttpResponseUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+/**
+ * @author fanglang
+ * @date 2018-10-15 13:52
+ * @desc 自定义异常处理器
+ */
+@RestControllerAdvice
+public class PmsExceptionHandler {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(PmsExceptionHandler.class);
+
+    @ExceptionHandler(value = PmsException.class)
+    public HttpResponse handlePmsException(PmsException exception) {
+        LOGGER.error(exception.getCause().getMessage());
+        return HttpResponseUtils.error(exception.getMessage());
+    }
+}

+ 37 - 0
src/main/java/com/sprivacy/pms/exception/PmsResException.java

@@ -0,0 +1,37 @@
+package com.sprivacy.pms.exception;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-03-26 15:06
+ * @desc PmsResException
+ **/
+public class PmsResException extends Exception {
+    private Integer errCode;
+    private String errMessage;
+
+    public PmsResException(Integer errCode,String errMessage) {
+        this.errCode = errCode;
+        this.errMessage = errMessage;
+    }
+
+    public PmsResException(Integer errCode,Throwable e) {
+        this.errCode = errCode;
+        this.errMessage = e.getMessage();
+    }
+
+    public Integer getErrCode() {
+        return errCode;
+    }
+
+    public void setErrCode(Integer errCode) {
+        this.errCode = errCode;
+    }
+
+    public String getErrMessage() {
+        return errMessage;
+    }
+
+    public void setErrMessage(String errMessage) {
+        this.errMessage = errMessage;
+    }
+}

+ 231 - 0
src/main/java/com/sprivacy/pms/form/article/ArticleParam.java

@@ -0,0 +1,231 @@
+package com.sprivacy.pms.form.article;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-15 10:43
+ * @desc ArticleParam
+ **/
+public class ArticleParam {
+
+    private Integer articleId;
+    private Integer categoryId;
+    private Integer subCategoryId;
+    private String title;
+    private String description;
+    private String author;
+    private String contentJson;
+    private String contentHtml;
+    private String contentMarkdown;
+    private String banner;
+    private String thumbnail;
+    private String articleUrl;
+    private String source;
+    private Integer wordCount;
+    private Integer readCount;
+    private String createAt;
+    private String updateAt;
+    private String createBy;
+    private String imgUrl;
+    private String categoryItemName;
+    private String total;
+
+    public Integer getArticleId() {
+        return articleId;
+    }
+
+    public void setArticleId(Integer articleId) {
+        this.articleId = articleId;
+    }
+
+    public Integer getCategoryId() {
+        return categoryId;
+    }
+
+    public void setCategoryId(Integer categoryId) {
+        this.categoryId = categoryId;
+    }
+
+    public Integer getSubCategoryId() {
+        return subCategoryId;
+    }
+
+    public void setSubCategoryId(Integer subCategoryId) {
+        this.subCategoryId = subCategoryId;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getAuthor() {
+        return author;
+    }
+
+    public void setAuthor(String author) {
+        this.author = author;
+    }
+
+    public String getContentJson() {
+        return contentJson;
+    }
+
+    public void setContentJson(String contentJson) {
+        this.contentJson = contentJson;
+    }
+
+    public String getContentHtml() {
+        return contentHtml;
+    }
+
+    public void setContentHtml(String contentHtml) {
+        this.contentHtml = contentHtml;
+    }
+
+    public String getContentMarkdown() {
+        return contentMarkdown;
+    }
+
+    public void setContentMarkdown(String contentMarkdown) {
+        this.contentMarkdown = contentMarkdown;
+    }
+
+    public String getBanner() {
+        return banner;
+    }
+
+    public void setBanner(String banner) {
+        this.banner = banner;
+    }
+
+    public String getThumbnail() {
+        return thumbnail;
+    }
+
+    public void setThumbnail(String thumbnail) {
+        this.thumbnail = thumbnail;
+    }
+
+    public String getArticleUrl() {
+        return articleUrl;
+    }
+
+    public void setArticleUrl(String articleUrl) {
+        this.articleUrl = articleUrl;
+    }
+
+    public String getSource() {
+        return source;
+    }
+
+    public void setSource(String source) {
+        this.source = source;
+    }
+
+    public Integer getWordCount() {
+        return wordCount;
+    }
+
+    public void setWordCount(Integer wordCount) {
+        this.wordCount = wordCount;
+    }
+
+    public Integer getReadCount() {
+        return readCount;
+    }
+
+    public void setReadCount(Integer readCount) {
+        this.readCount = readCount;
+    }
+
+    public String getCreateAt() {
+        return createAt;
+    }
+
+    public void setCreateAt(String createAt) {
+        this.createAt = createAt;
+    }
+
+    public String getUpdateAt() {
+        return updateAt;
+    }
+
+    public void setUpdateAt(String updateAt) {
+        this.updateAt = updateAt;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    public String getImgUrl() {
+        return imgUrl;
+    }
+
+    public void setImgUrl(String imgUrl) {
+        this.imgUrl = imgUrl;
+    }
+
+    public String getCategoryItemName() {
+        return categoryItemName;
+    }
+
+    public void setCategoryItemName(String categoryItemName) {
+        this.categoryItemName = categoryItemName;
+    }
+
+    public String getTotal() {
+        return total;
+    }
+
+    public void setTotal(String total) {
+        this.total = total;
+    }
+
+    // // 文章所属类目
+    // private String category_id;
+    // // 文章标题
+    // private String title;
+    // // 文章描述
+    // private String description;
+    // // 文章作者
+    // private String author;
+    // // 文章json内容
+    // private String content_json;
+    // // 文章HTML内容
+    // private String content_html;
+    // // 文章Markdown内容
+    // private String content_markdown;
+    // // 文章banner
+    // private String banner;
+    // // 文章缩略图
+    // private String thumbnail;
+    // // 文章url
+    // private String url;
+    // // 文章来源source
+    // private String source;
+    // // 文章字数
+    // private String word_count;
+    // // 文章阅读次数
+    // private String read_count;
+    // private String create_at;
+    // private String update_at;
+    // private String create_by;
+
+
+}

+ 46 - 0
src/main/java/com/sprivacy/pms/form/category/CategoryItemAddParam.java

@@ -0,0 +1,46 @@
+package com.sprivacy.pms.form.category;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-21 15:34
+ * @desc CategoryItemAddParam
+ **/
+public class CategoryItemAddParam {
+    private String CategoryItemName;
+    private String categoryItemName;
+    private String banner;
+    private String description;
+    private String createBy;
+
+    public String getCategoryItemName() {
+        return CategoryItemName;
+    }
+
+    public void setCategoryItemName(String categoryItemName) {
+        CategoryItemName = categoryItemName;
+    }
+
+    public String getBanner() {
+        return banner;
+    }
+
+    public void setBanner(String banner) {
+        this.banner = banner;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+}

+ 57 - 0
src/main/java/com/sprivacy/pms/form/count/CountByAge.java

@@ -0,0 +1,57 @@
+package com.sprivacy.pms.form.count;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-18 13:45
+ * @desc CountByAge
+ **/
+public class CountByAge {
+    /**
+     * 20-30  31-40  41-50 51-60 61
+     */
+    private int twentyOneAndThirtyNum;
+    private int thirtyOneAndFortyNum;
+    private int fortyOneAndFiftyNum;
+    private int fiftyOneAndSixtyNum;
+    private int greaterThanSixtyOneNum;
+
+    public int getTwentyOneAndThirtyNum() {
+        return twentyOneAndThirtyNum;
+    }
+
+    public void setTwentyOneAndThirtyNum(int twentyOneAndThirtyNum) {
+        this.twentyOneAndThirtyNum = twentyOneAndThirtyNum;
+    }
+
+    public int getThirtyOneAndFortyNum() {
+        return thirtyOneAndFortyNum;
+    }
+
+    public void setThirtyOneAndFortyNum(int thirtyOneAndFortyNum) {
+        this.thirtyOneAndFortyNum = thirtyOneAndFortyNum;
+    }
+
+    public int getFortyOneAndFiftyNum() {
+        return fortyOneAndFiftyNum;
+    }
+
+    public void setFortyOneAndFiftyNum(int fortyOneAndFiftyNum) {
+        this.fortyOneAndFiftyNum = fortyOneAndFiftyNum;
+    }
+
+    public int getFiftyOneAndSixtyNum() {
+        return fiftyOneAndSixtyNum;
+    }
+
+    public void setFiftyOneAndSixtyNum(int fiftyOneAndSixtyNum) {
+        this.fiftyOneAndSixtyNum = fiftyOneAndSixtyNum;
+    }
+
+    public int getGreaterThanSixtyOneNum() {
+        return greaterThanSixtyOneNum;
+    }
+
+    public void setGreaterThanSixtyOneNum(int greaterThanSixtyOneNum) {
+        this.greaterThanSixtyOneNum = greaterThanSixtyOneNum;
+    }
+}

+ 83 - 0
src/main/java/com/sprivacy/pms/form/count/CountByEducation.java

@@ -0,0 +1,83 @@
+package com.sprivacy.pms.form.count;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-18 13:38
+ * @desc CountByEducation
+ **/
+public class CountByEducation {
+    /**
+     * 本科
+     * 大专
+     * 硕士
+     * 博士
+     */
+    private int collegeNum;
+    private int undergraduateCourseNum;
+    private int shuoNum;
+    private int boNum;
+    /**
+     * 高中
+     * 中专
+     * 其他
+     */
+    private int highSchoolNum;
+    private int technicalSecondarySchoolNum;
+    private int otherEducationNum;
+
+    public int getCollegeNum() {
+        return collegeNum;
+    }
+
+    public void setCollegeNum(int collegeNum) {
+        this.collegeNum = collegeNum;
+    }
+
+    public int getUndergraduateCourseNum() {
+        return undergraduateCourseNum;
+    }
+
+    public void setUndergraduateCourseNum(int undergraduateCourseNum) {
+        this.undergraduateCourseNum = undergraduateCourseNum;
+    }
+
+    public int getShuoNum() {
+        return shuoNum;
+    }
+
+    public void setShuoNum(int shuoNum) {
+        this.shuoNum = shuoNum;
+    }
+
+    public int getBoNum() {
+        return boNum;
+    }
+
+    public void setBoNum(int boNum) {
+        this.boNum = boNum;
+    }
+
+    public int getHighSchoolNum() {
+        return highSchoolNum;
+    }
+
+    public void setHighSchoolNum(int highSchoolNum) {
+        this.highSchoolNum = highSchoolNum;
+    }
+
+    public int getTechnicalSecondarySchoolNum() {
+        return technicalSecondarySchoolNum;
+    }
+
+    public void setTechnicalSecondarySchoolNum(int technicalSecondarySchoolNum) {
+        this.technicalSecondarySchoolNum = technicalSecondarySchoolNum;
+    }
+
+    public int getOtherEducationNum() {
+        return otherEducationNum;
+    }
+
+    public void setOtherEducationNum(int otherEducationNum) {
+        this.otherEducationNum = otherEducationNum;
+    }
+}

+ 84 - 0
src/main/java/com/sprivacy/pms/form/count/CountByJobRank.java

@@ -0,0 +1,84 @@
+package com.sprivacy.pms.form.count;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-19 14:02
+ * @desc CountByJobRank
+ **/
+public class CountByJobRank {
+    /**
+     * 办事员、科员(副股)、科员(正股)、副科非、副科、正科非、正科、副处。
+     */
+    private int clerkPerNum;
+    private int subUnitSectionMemberNotNum;
+    private int subUnitSectionMemberNum;
+    private int regularUnitSectionMemberNotNum;
+    private int regularUnitSectionMemberNum;
+    private int areStaffNotNum;
+    private int areStaffNum;
+    private int deputyDirectorNum;
+
+    public int getClerkPerNum() {
+        return clerkPerNum;
+    }
+
+    public void setClerkPerNum(int clerkPerNum) {
+        this.clerkPerNum = clerkPerNum;
+    }
+
+    public int getSubUnitSectionMemberNotNum() {
+        return subUnitSectionMemberNotNum;
+    }
+
+    public void setSubUnitSectionMemberNotNum(int subUnitSectionMemberNotNum) {
+        this.subUnitSectionMemberNotNum = subUnitSectionMemberNotNum;
+    }
+
+    public int getSubUnitSectionMemberNum() {
+        return subUnitSectionMemberNum;
+    }
+
+    public void setSubUnitSectionMemberNum(int subUnitSectionMemberNum) {
+        this.subUnitSectionMemberNum = subUnitSectionMemberNum;
+    }
+
+    public int getRegularUnitSectionMemberNotNum() {
+        return regularUnitSectionMemberNotNum;
+    }
+
+    public void setRegularUnitSectionMemberNotNum(int regularUnitSectionMemberNotNum) {
+        this.regularUnitSectionMemberNotNum = regularUnitSectionMemberNotNum;
+    }
+
+    public int getRegularUnitSectionMemberNum() {
+        return regularUnitSectionMemberNum;
+    }
+
+    public void setRegularUnitSectionMemberNum(int regularUnitSectionMemberNum) {
+        this.regularUnitSectionMemberNum = regularUnitSectionMemberNum;
+    }
+
+    public int getAreStaffNotNum() {
+        return areStaffNotNum;
+    }
+
+    public void setAreStaffNotNum(int areStaffNotNum) {
+        this.areStaffNotNum = areStaffNotNum;
+    }
+
+    public int getAreStaffNum() {
+        return areStaffNum;
+    }
+
+    public void setAreStaffNum(int areStaffNum) {
+        this.areStaffNum = areStaffNum;
+    }
+
+    public int getDeputyDirectorNum() {
+        return deputyDirectorNum;
+    }
+
+    public void setDeputyDirectorNum(int deputyDirectorNum) {
+        this.deputyDirectorNum = deputyDirectorNum;
+    }
+}

+ 39 - 0
src/main/java/com/sprivacy/pms/form/count/CountByJobTitle.java

@@ -0,0 +1,39 @@
+package com.sprivacy.pms.form.count;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-19 14:09
+ * @desc CountByJobTitle
+ **/
+public class CountByJobTitle {
+    /**
+     * 助理工程师、高级经济师、高级工。
+     */
+    private int assistantEngineerNum;
+    private int seniorEconomistNum;
+    private int advancedWorkerNum;
+
+    public int getAssistantEngineerNum() {
+        return assistantEngineerNum;
+    }
+
+    public void setAssistantEngineerNum(int assistantEngineerNum) {
+        this.assistantEngineerNum = assistantEngineerNum;
+    }
+
+    public int getSeniorEconomistNum() {
+        return seniorEconomistNum;
+    }
+
+    public void setSeniorEconomistNum(int seniorEconomistNum) {
+        this.seniorEconomistNum = seniorEconomistNum;
+    }
+
+    public int getAdvancedWorkerNum() {
+        return advancedWorkerNum;
+    }
+
+    public void setAdvancedWorkerNum(int advancedWorkerNum) {
+        this.advancedWorkerNum = advancedWorkerNum;
+    }
+}

+ 66 - 0
src/main/java/com/sprivacy/pms/form/count/CountByPerNature.java

@@ -0,0 +1,66 @@
+package com.sprivacy.pms.form.count;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-18 13:50
+ * @desc CountByPerNature
+ **/
+public class CountByPerNature {
+    /**
+     * 行政、事业、机关小集体、农村、社区、其他聘用人员
+     */
+    private int administrativeNum;
+    private int careerNum;
+    private int smallGroupNum;
+    private int ruralNum;
+    private int communityNum;
+    private int otherEmployeesNum;
+
+    public int getAdministrativeNum() {
+        return administrativeNum;
+    }
+
+    public void setAdministrativeNum(int administrativeNum) {
+        this.administrativeNum = administrativeNum;
+    }
+
+    public int getCareerNum() {
+        return careerNum;
+    }
+
+    public void setCareerNum(int careerNum) {
+        this.careerNum = careerNum;
+    }
+
+    public int getSmallGroupNum() {
+        return smallGroupNum;
+    }
+
+    public void setSmallGroupNum(int smallGroupNum) {
+        this.smallGroupNum = smallGroupNum;
+    }
+
+    public int getRuralNum() {
+        return ruralNum;
+    }
+
+    public void setRuralNum(int ruralNum) {
+        this.ruralNum = ruralNum;
+    }
+
+    public int getCommunityNum() {
+        return communityNum;
+    }
+
+    public void setCommunityNum(int communityNum) {
+        this.communityNum = communityNum;
+    }
+
+    public int getOtherEmployeesNum() {
+        return otherEmployeesNum;
+    }
+
+    public void setOtherEmployeesNum(int otherEmployeesNum) {
+        this.otherEmployeesNum = otherEmployeesNum;
+    }
+}

+ 36 - 0
src/main/java/com/sprivacy/pms/form/count/CountByPoliticsStatus.java

@@ -0,0 +1,36 @@
+package com.sprivacy.pms.form.count;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-19 14:10
+ * @desc CountByPoliticsStatus
+ **/
+public class CountByPoliticsStatus {
+    private int crowdNum;
+    private int leagueMemberNum;
+    private int partyMembernNum;
+
+    public int getCrowdNum() {
+        return crowdNum;
+    }
+
+    public void setCrowdNum(int crowdNum) {
+        this.crowdNum = crowdNum;
+    }
+
+    public int getLeagueMemberNum() {
+        return leagueMemberNum;
+    }
+
+    public void setLeagueMemberNum(int leagueMemberNum) {
+        this.leagueMemberNum = leagueMemberNum;
+    }
+
+    public int getPartyMembernNum() {
+        return partyMembernNum;
+    }
+
+    public void setPartyMembernNum(int partyMembernNum) {
+        this.partyMembernNum = partyMembernNum;
+    }
+}

+ 75 - 0
src/main/java/com/sprivacy/pms/form/count/CountByWorkAge.java

@@ -0,0 +1,75 @@
+package com.sprivacy.pms.form.count;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-18 13:53
+ * @desc CountByWorkAge
+ **/
+public class CountByWorkAge {
+    /**
+     * 1-5  6-10   11-15  16-20 21-25  26-30 31-
+     */
+    private int lessThanFiveYearsNum;
+    private int fiveYearsNum;
+    private int tenYearsNum;
+    private int fifteenYearsNum;
+    private int twentyYearsNum;
+    private int twentyFiveYearsNum;
+    private int thirtyOneYearsNum;
+
+    public int getLessThanFiveYearsNum() {
+        return lessThanFiveYearsNum;
+    }
+
+    public void setLessThanFiveYearsNum(int lessThanFiveYearsNum) {
+        this.lessThanFiveYearsNum = lessThanFiveYearsNum;
+    }
+
+    public int getFiveYearsNum() {
+        return fiveYearsNum;
+    }
+
+    public void setFiveYearsNum(int fiveYearsNum) {
+        this.fiveYearsNum = fiveYearsNum;
+    }
+
+    public int getTenYearsNum() {
+        return tenYearsNum;
+    }
+
+    public void setTenYearsNum(int tenYearsNum) {
+        this.tenYearsNum = tenYearsNum;
+    }
+
+    public int getFifteenYearsNum() {
+        return fifteenYearsNum;
+    }
+
+    public void setFifteenYearsNum(int fifteenYearsNum) {
+        this.fifteenYearsNum = fifteenYearsNum;
+    }
+
+    public int getTwentyYearsNum() {
+        return twentyYearsNum;
+    }
+
+    public void setTwentyYearsNum(int twentyYearsNum) {
+        this.twentyYearsNum = twentyYearsNum;
+    }
+
+    public int getTwentyFiveYearsNum() {
+        return twentyFiveYearsNum;
+    }
+
+    public void setTwentyFiveYearsNum(int twentyFiveYearsNum) {
+        this.twentyFiveYearsNum = twentyFiveYearsNum;
+    }
+
+    public int getThirtyOneYearsNum() {
+        return thirtyOneYearsNum;
+    }
+
+    public void setThirtyOneYearsNum(int thirtyOneYearsNum) {
+        this.thirtyOneYearsNum = thirtyOneYearsNum;
+    }
+}

+ 72 - 0
src/main/java/com/sprivacy/pms/form/count/CountInfo.java

@@ -0,0 +1,72 @@
+package com.sprivacy.pms.form.count;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-18 13:33
+ * @desc CountInfo
+ **/
+public class CountInfo {
+    private CountByEducation countByEducation;
+    private CountByAge countByAge;
+    private CountByPoliticsStatus countByPoliticsStatus;
+    private CountByWorkAge countByWorkAge;
+    private CountByJobRank countByJobRank;
+    private CountByJobTitle countByJobTitle;
+    private CountByPerNature countByPerNature;
+
+    public CountByEducation getCountByEducation() {
+        return countByEducation;
+    }
+
+    public void setCountByEducation(CountByEducation countByEducation) {
+        this.countByEducation = countByEducation;
+    }
+
+    public CountByAge getCountByAge() {
+        return countByAge;
+    }
+
+    public void setCountByAge(CountByAge countByAge) {
+        this.countByAge = countByAge;
+    }
+
+    public CountByPoliticsStatus getCountByPoliticsStatus() {
+        return countByPoliticsStatus;
+    }
+
+    public void setCountByPoliticsStatus(CountByPoliticsStatus countByPoliticsStatus) {
+        this.countByPoliticsStatus = countByPoliticsStatus;
+    }
+
+    public CountByWorkAge getCountByWorkAge() {
+        return countByWorkAge;
+    }
+
+    public void setCountByWorkAge(CountByWorkAge countByWorkAge) {
+        this.countByWorkAge = countByWorkAge;
+    }
+
+    public CountByJobRank getCountByJobRank() {
+        return countByJobRank;
+    }
+
+    public void setCountByJobRank(CountByJobRank countByJobRank) {
+        this.countByJobRank = countByJobRank;
+    }
+
+    public CountByJobTitle getCountByJobTitle() {
+        return countByJobTitle;
+    }
+
+    public void setCountByJobTitle(CountByJobTitle countByJobTitle) {
+        this.countByJobTitle = countByJobTitle;
+    }
+
+    public CountByPerNature getCountByPerNature() {
+        return countByPerNature;
+    }
+
+    public void setCountByPerNature(CountByPerNature countByPerNature) {
+        this.countByPerNature = countByPerNature;
+    }
+}

+ 87 - 0
src/main/java/com/sprivacy/pms/form/per/AutoPerForm.java

@@ -0,0 +1,87 @@
+package com.sprivacy.pms.form.per;
+
+import com.alibaba.fastjson.JSONObject;
+import com.sprivacy.pms.model.*;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-03-28 15:14
+ * @desc AutoPerForm
+ **/
+public class AutoPerForm {
+    private Per per;
+    // private List<Per> persList;
+    private List<PerEduRec> eduRecords;
+    private List<PerWorkRec> workRecords;
+    private List<PerFamRel> famRelations;
+    private List<PerSocRel> socRelations;
+    private List<PerRewRec> rewRecords;
+    private List<TempFileResult> tempFileResults;
+    private JSONObject zhMsg;
+
+    public Per getPer() {
+        return per;
+    }
+
+    public void setPer(Per per) {
+        this.per = per;
+    }
+
+    public List<PerEduRec> getEduRecords() {
+        return eduRecords;
+    }
+
+    public void setEduRecords(List<PerEduRec> eduRecords) {
+        this.eduRecords = eduRecords;
+    }
+
+    public List<PerWorkRec> getWorkRecords() {
+        return workRecords;
+    }
+
+    public void setWorkRecords(List<PerWorkRec> workRecords) {
+        this.workRecords = workRecords;
+    }
+
+    public List<PerFamRel> getFamRelations() {
+        return famRelations;
+    }
+
+    public void setFamRelations(List<PerFamRel> famRelations) {
+        this.famRelations = famRelations;
+    }
+
+    public List<PerSocRel> getSocRelations() {
+        return socRelations;
+    }
+
+    public void setSocRelations(List<PerSocRel> socRelations) {
+        this.socRelations = socRelations;
+    }
+
+    public List<PerRewRec> getRewRecords() {
+        return rewRecords;
+    }
+
+    public void setRewRecords(List<PerRewRec> rewRecords) {
+        this.rewRecords = rewRecords;
+    }
+
+    public List<TempFileResult> getTempFileResults() {
+        return tempFileResults;
+    }
+
+    public void setTempFileResults(List<TempFileResult> tempFileResults) {
+        this.tempFileResults = tempFileResults;
+    }
+
+    public JSONObject getZhMsg() {
+        return zhMsg;
+    }
+
+    public void setZhMsg(JSONObject zhMsg) {
+        this.zhMsg = zhMsg;
+    }
+}

+ 18 - 0
src/main/java/com/sprivacy/pms/form/per/EducationInfo.java

@@ -0,0 +1,18 @@
+package com.sprivacy.pms.form.per;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-08 10:33
+ * @desc EducationInfo
+ **/
+public class EducationInfo {
+    private String educationName;
+
+    public String getEducationName() {
+        return educationName;
+    }
+
+    public void setEducationName(String educationName) {
+        this.educationName = educationName;
+    }
+}

+ 18 - 0
src/main/java/com/sprivacy/pms/form/per/HealthStatusInfo.java

@@ -0,0 +1,18 @@
+package com.sprivacy.pms.form.per;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-08 10:33
+ * @desc HealthStatusInfo
+ **/
+public class HealthStatusInfo {
+    private String healthStatusName;
+
+    public String getHealthStatusName() {
+        return healthStatusName;
+    }
+
+    public void setHealthStatusName(String healthStatusName) {
+        this.healthStatusName = healthStatusName;
+    }
+}

+ 77 - 0
src/main/java/com/sprivacy/pms/form/per/PerForm.java

@@ -0,0 +1,77 @@
+package com.sprivacy.pms.form.per;
+
+import com.sprivacy.pms.model.*;
+
+import java.util.List;
+
+/**
+ * @author fanglang
+ * @date 2018-11-01 13:10
+ * @desc 人员封装类
+ */
+public class PerForm {
+    private Per per;
+    // private List<Per> persList;
+    private List<PerEduRec> eduRecords;
+    private List<PerWorkRec> workRecords;
+    private List<PerFamRel> famRelations;
+    private List<PerSocRel> socRelations;
+    private List<PerRewRec> rewRecords;
+    private List<TempFileResult> tempFileResults;
+
+    public Per getPer() {
+        return per;
+    }
+
+    public void setPer(Per per) {
+        this.per = per;
+    }
+
+    public List<PerEduRec> getEduRecords() {
+        return eduRecords;
+    }
+
+    public void setEduRecords(List<PerEduRec> eduRecords) {
+        this.eduRecords = eduRecords;
+    }
+
+    public List<PerWorkRec> getWorkRecords() {
+        return workRecords;
+    }
+
+    public void setWorkRecords(List<PerWorkRec> workRecords) {
+        this.workRecords = workRecords;
+    }
+
+    public List<PerFamRel> getFamRelations() {
+        return famRelations;
+    }
+
+    public void setFamRelations(List<PerFamRel> famRelations) {
+        this.famRelations = famRelations;
+    }
+
+    public List<PerSocRel> getSocRelations() {
+        return socRelations;
+    }
+
+    public void setSocRelations(List<PerSocRel> socRelations) {
+        this.socRelations = socRelations;
+    }
+
+    public List<PerRewRec> getRewRecords() {
+        return rewRecords;
+    }
+
+    public void setRewRecords(List<PerRewRec> rewRecords) {
+        this.rewRecords = rewRecords;
+    }
+
+    public List<TempFileResult> getTempFileResults() {
+        return tempFileResults;
+    }
+
+    public void setTempFileResults(List<TempFileResult> tempFileResults) {
+        this.tempFileResults = tempFileResults;
+    }
+}

+ 56 - 0
src/main/java/com/sprivacy/pms/form/per/PerInfoList.java

@@ -0,0 +1,56 @@
+package com.sprivacy.pms.form.per;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-08 10:12
+ * @desc PerInfoList
+ **/
+public class PerInfoList {
+    private List<SexInfo> sexInfo;
+    private List<EducationInfo> educationInfo;
+    private List<PoliticsStatusInfo> politicsStatusInfo;
+    private List<PerNatureInfo> perNatureInfo;
+    private List<HealthStatusInfo> healthStatusInfo;
+
+    public List<SexInfo> getSexInfo() {
+        return sexInfo;
+    }
+
+    public void setSexInfo(List<SexInfo> sexInfo) {
+        this.sexInfo = sexInfo;
+    }
+
+    public List<EducationInfo> getEducationInfo() {
+        return educationInfo;
+    }
+
+    public void setEducationInfo(List<EducationInfo> educationInfo) {
+        this.educationInfo = educationInfo;
+    }
+
+    public List<PoliticsStatusInfo> getPoliticsStatusInfo() {
+        return politicsStatusInfo;
+    }
+
+    public void setPoliticsStatusInfo(List<PoliticsStatusInfo> politicsStatusInfo) {
+        this.politicsStatusInfo = politicsStatusInfo;
+    }
+
+    public List<PerNatureInfo> getPerNatureInfo() {
+        return perNatureInfo;
+    }
+
+    public void setPerNatureInfo(List<PerNatureInfo> perNatureInfo) {
+        this.perNatureInfo = perNatureInfo;
+    }
+
+    public List<HealthStatusInfo> getHealthStatusInfo() {
+        return healthStatusInfo;
+    }
+
+    public void setHealthStatusInfo(List<HealthStatusInfo> healthStatusInfo) {
+        this.healthStatusInfo = healthStatusInfo;
+    }
+}

+ 18 - 0
src/main/java/com/sprivacy/pms/form/per/PerNatureInfo.java

@@ -0,0 +1,18 @@
+package com.sprivacy.pms.form.per;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-08 10:33
+ * @desc PerNatureInfo
+ **/
+public class PerNatureInfo {
+    private String perNatureName;
+
+    public String getPerNatureName() {
+        return perNatureName;
+    }
+
+    public void setPerNatureName(String perNatureName) {
+        this.perNatureName = perNatureName;
+    }
+}

+ 189 - 0
src/main/java/com/sprivacy/pms/form/per/PerQueryParam.java

@@ -0,0 +1,189 @@
+package com.sprivacy.pms.form.per;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-06 10:14
+ * @desc PerQueryParam
+ **/
+public class PerQueryParam {
+    private String name;
+    private String sex;
+    private String startBirthday;
+    private String endBirthday;
+    private String workingTime;
+    private String joiningPartyTime;
+    private String education;
+    private String idNumber;
+    private String healthStatus;
+    private String titleAcqTime;
+    private String graTimeSchoolMajor;
+    private String politicsStatus;
+    private String perNature;
+    private String jobTitle;
+    private String currentJob;
+    private String contactPhone;
+    private String address;
+    private String workUnit;
+    private String nation;
+    private String birthplace;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getStartBirthday() {
+        return startBirthday;
+    }
+
+    public void setStartBirthday(String startBirthday) {
+        this.startBirthday = startBirthday;
+    }
+
+    public String getEndBirthday() {
+        return endBirthday;
+    }
+
+    public void setEndBirthday(String endBirthday) {
+        this.endBirthday = endBirthday;
+    }
+
+    public String getWorkingTime() {
+        return workingTime;
+    }
+
+    public void setWorkingTime(String workingTime) {
+        this.workingTime = workingTime;
+    }
+
+    public String getJoiningPartyTime() {
+        return joiningPartyTime;
+    }
+
+    public void setJoiningPartyTime(String joiningPartyTime) {
+        this.joiningPartyTime = joiningPartyTime;
+    }
+
+    public String getEducation() {
+        return education;
+    }
+
+    public void setEducation(String education) {
+        this.education = education;
+    }
+
+    public String getIdNumber() {
+        return idNumber;
+    }
+
+    public void setIdNumber(String idNumber) {
+        this.idNumber = idNumber;
+    }
+
+    public String getHealthStatus() {
+        return healthStatus;
+    }
+
+    public void setHealthStatus(String healthStatus) {
+        this.healthStatus = healthStatus;
+    }
+
+    public String getTitleAcqTime() {
+        return titleAcqTime;
+    }
+
+    public void setTitleAcqTime(String titleAcqTime) {
+        this.titleAcqTime = titleAcqTime;
+    }
+
+    public String getGraTimeSchoolMajor() {
+        return graTimeSchoolMajor;
+    }
+
+    public void setGraTimeSchoolMajor(String graTimeSchoolMajor) {
+        this.graTimeSchoolMajor = graTimeSchoolMajor;
+    }
+
+    public String getPoliticsStatus() {
+        return politicsStatus;
+    }
+
+    public void setPoliticsStatus(String politicsStatus) {
+        this.politicsStatus = politicsStatus;
+    }
+
+    public String getPerNature() {
+        return perNature;
+    }
+
+    public void setPerNature(String perNature) {
+        this.perNature = perNature;
+    }
+
+    public String getJobTitle() {
+        return jobTitle;
+    }
+
+    public void setJobTitle(String jobTitle) {
+        this.jobTitle = jobTitle;
+    }
+
+    public String getCurrentJob() {
+        return currentJob;
+    }
+
+    public void setCurrentJob(String currentJob) {
+        this.currentJob = currentJob;
+    }
+
+    public String getContactPhone() {
+        return contactPhone;
+    }
+
+    public void setContactPhone(String contactPhone) {
+        this.contactPhone = contactPhone;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getWorkUnit() {
+        return workUnit;
+    }
+
+    public void setWorkUnit(String workUnit) {
+        this.workUnit = workUnit;
+    }
+
+    public String getNation() {
+        return nation;
+    }
+
+    public void setNation(String nation) {
+        this.nation = nation;
+    }
+
+    public String getBirthplace() {
+        return birthplace;
+    }
+
+    public void setBirthplace(String birthplace) {
+        this.birthplace = birthplace;
+    }
+}

+ 172 - 0
src/main/java/com/sprivacy/pms/form/per/PerRegisterList.java

@@ -0,0 +1,172 @@
+package com.sprivacy.pms.form.per;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-04-28 16:07
+ * @desc PerRegisterList
+ **/
+public class PerRegisterList {
+    private Integer sortId;
+    private String depetName;
+    private String jobPosition;
+    private String jobRank;
+    private String perName;
+    private String idNumber;
+    private String sex;
+    private String birthday;
+    private String workingTime;
+    private String joiningPartyTime;
+    // 技术职称
+    private String jobTitle;
+    private String education;
+    private String graTimeSchoolMajor;
+    private String jobPositionTime;
+    private String jobRankTime;
+    private String preparationOfNature;
+    private String perNature;
+    private String remark;
+
+    public Integer getSortId() {
+        return sortId;
+    }
+
+    public void setSortId(Integer sortId) {
+        this.sortId = sortId;
+    }
+
+    public String getDepetName() {
+        return depetName;
+    }
+
+    public void setDepetName(String depetName) {
+        this.depetName = depetName;
+    }
+
+    public String getJobPosition() {
+        return jobPosition;
+    }
+
+    public void setJobPosition(String jobPosition) {
+        this.jobPosition = jobPosition;
+    }
+
+    public String getJobRank() {
+        return jobRank;
+    }
+
+    public void setJobRank(String jobRank) {
+        this.jobRank = jobRank;
+    }
+
+    public String getPerName() {
+        return perName;
+    }
+
+    public void setPerName(String perName) {
+        this.perName = perName;
+    }
+
+    public String getIdNumber() {
+        return idNumber;
+    }
+
+    public void setIdNumber(String idNumber) {
+        this.idNumber = idNumber;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getBirthday() {
+        return birthday;
+    }
+
+    public void setBirthday(String birthday) {
+        this.birthday = birthday;
+    }
+
+    public String getWorkingTime() {
+        return workingTime;
+    }
+
+    public void setWorkingTime(String workingTime) {
+        this.workingTime = workingTime;
+    }
+
+    public String getJoiningPartyTime() {
+        return joiningPartyTime;
+    }
+
+    public void setJoiningPartyTime(String joiningPartyTime) {
+        this.joiningPartyTime = joiningPartyTime;
+    }
+
+    public String getJobTitle() {
+        return jobTitle;
+    }
+
+    public void setJobTitle(String jobTitle) {
+        this.jobTitle = jobTitle;
+    }
+
+    public String getEducation() {
+        return education;
+    }
+
+    public void setEducation(String education) {
+        this.education = education;
+    }
+
+    public String getGraTimeSchoolMajor() {
+        return graTimeSchoolMajor;
+    }
+
+    public void setGraTimeSchoolMajor(String graTimeSchoolMajor) {
+        this.graTimeSchoolMajor = graTimeSchoolMajor;
+    }
+
+    public String getJobPositionTime() {
+        return jobPositionTime;
+    }
+
+    public void setJobPositionTime(String jobPositionTime) {
+        this.jobPositionTime = jobPositionTime;
+    }
+
+    public String getJobRankTime() {
+        return jobRankTime;
+    }
+
+    public void setJobRankTime(String jobRankTime) {
+        this.jobRankTime = jobRankTime;
+    }
+
+    public String getPreparationOfNature() {
+        return preparationOfNature;
+    }
+
+    public void setPreparationOfNature(String preparationOfNature) {
+        this.preparationOfNature = preparationOfNature;
+    }
+
+    public String getPerNature() {
+        return perNature;
+    }
+
+    public void setPerNature(String perNature) {
+        this.perNature = perNature;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+}

+ 53 - 0
src/main/java/com/sprivacy/pms/form/per/PerRelation.java

@@ -0,0 +1,53 @@
+package com.sprivacy.pms.form.per;
+
+import lombok.Data;
+
+/**
+ * @author fanglang
+ * @date 2018-11-24 9:54
+ * @desc 人员关系基础类
+ */
+@Data
+public class PerRelation {
+    private String source;
+    private String target;
+    private String name;
+
+    /**
+     * 1 表示家庭关系
+     * 2 表示社会关系
+     */
+    private Integer type;
+
+    public String getSource() {
+        return source;
+    }
+
+    public void setSource(String source) {
+        this.source = source;
+    }
+
+    public String getTarget() {
+        return target;
+    }
+
+    public void setTarget(String target) {
+        this.target = target;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+}

+ 18 - 0
src/main/java/com/sprivacy/pms/form/per/PoliticsStatusInfo.java

@@ -0,0 +1,18 @@
+package com.sprivacy.pms.form.per;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-08 10:33
+ * @desc PoliticsStatusInfo
+ **/
+public class PoliticsStatusInfo {
+    private String politicsStatusName;
+
+    public String getPoliticsStatusName() {
+        return politicsStatusName;
+    }
+
+    public void setPoliticsStatusName(String politicsStatusName) {
+        this.politicsStatusName = politicsStatusName;
+    }
+}

+ 28 - 0
src/main/java/com/sprivacy/pms/form/per/QueryParam.java

@@ -0,0 +1,28 @@
+package com.sprivacy.pms.form.per;
+
+/**
+ * @author fanglang
+ * @date 2018-11-14 14:00
+ * @desc 查询参数
+ */
+public class QueryParam {
+
+    private String param;
+    private String column;
+
+    public String getParam() {
+        return param;
+    }
+
+    public void setParam(String param) {
+        this.param = param;
+    }
+
+    public String getColumn() {
+        return column;
+    }
+
+    public void setColumn(String column) {
+        this.column = column;
+    }
+}

+ 18 - 0
src/main/java/com/sprivacy/pms/form/per/SexInfo.java

@@ -0,0 +1,18 @@
+package com.sprivacy.pms.form.per;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-08 10:24
+ * @desc SexInfo
+ **/
+public class SexInfo {
+    private String sexName;
+
+    public String getSexName() {
+        return sexName;
+    }
+
+    public void setSexName(String sexName) {
+        this.sexName = sexName;
+    }
+}

+ 87 - 0
src/main/java/com/sprivacy/pms/form/per/SortParam.java

@@ -0,0 +1,87 @@
+package com.sprivacy.pms.form.per;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-06 17:49
+ * @desc SortParam
+ **/
+public class SortParam {
+    /**
+     * 离职时间
+     */
+    private String endWorkingTime;
+    /**
+     * 岗龄 --》 工龄
+     */
+    private String startWithJoiningWorkAge;
+    private String endWithJoiningWorkAge;
+    /**
+     * 入党时间
+     */
+    private String startJoiningPartyTime;
+    /**
+     * 党龄
+     */
+    private String startWithJoiningPartyTime;
+    private String endWithJoiningPartyTime;
+    /**
+     * 职称取得时间
+     */
+    private String titleAcqTime;
+
+    public String getEndWorkingTime() {
+        return endWorkingTime;
+    }
+
+    public void setEndWorkingTime(String endWorkingTime) {
+        this.endWorkingTime = endWorkingTime;
+    }
+
+    public String getStartWithJoiningWorkAge() {
+        return startWithJoiningWorkAge;
+    }
+
+    public void setStartWithJoiningWorkAge(String startWithJoiningWorkAge) {
+        this.startWithJoiningWorkAge = startWithJoiningWorkAge;
+    }
+
+    public String getEndWithJoiningWorkAge() {
+        return endWithJoiningWorkAge;
+    }
+
+    public void setEndWithJoiningWorkAge(String endWithJoiningWorkAge) {
+        this.endWithJoiningWorkAge = endWithJoiningWorkAge;
+    }
+
+    public String getStartJoiningPartyTime() {
+        return startJoiningPartyTime;
+    }
+
+    public void setStartJoiningPartyTime(String startJoiningPartyTime) {
+        this.startJoiningPartyTime = startJoiningPartyTime;
+    }
+
+    public String getStartWithJoiningPartyTime() {
+        return startWithJoiningPartyTime;
+    }
+
+    public void setStartWithJoiningPartyTime(String startWithJoiningPartyTime) {
+        this.startWithJoiningPartyTime = startWithJoiningPartyTime;
+    }
+
+    public String getEndWithJoiningPartyTime() {
+        return endWithJoiningPartyTime;
+    }
+
+    public void setEndWithJoiningPartyTime(String endWithJoiningPartyTime) {
+        this.endWithJoiningPartyTime = endWithJoiningPartyTime;
+    }
+
+    public String getTitleAcqTime() {
+        return titleAcqTime;
+    }
+
+    public void setTitleAcqTime(String titleAcqTime) {
+        this.titleAcqTime = titleAcqTime;
+    }
+}

+ 40 - 0
src/main/java/com/sprivacy/pms/form/province/ProvinceCityInfo.java

@@ -0,0 +1,40 @@
+package com.sprivacy.pms.form.province;
+
+import com.sprivacy.pms.model.City;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-07 9:19
+ * @desc Province
+ **/
+public class ProvinceCityInfo {
+    private Long id;
+    private String provinceName;
+    private List<City> cities;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getProvinceName() {
+        return provinceName;
+    }
+
+    public void setProvinceName(String provinceName) {
+        this.provinceName = provinceName;
+    }
+
+    public List<City> getCities() {
+        return cities;
+    }
+
+    public void setCities(List<City> cities) {
+        this.cities = cities;
+    }
+}

+ 27 - 0
src/main/java/com/sprivacy/pms/form/remind/RemindDealParam.java

@@ -0,0 +1,27 @@
+package com.sprivacy.pms.form.remind;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-02-25 13:42
+ * @desc BirthDealParam
+ **/
+public class RemindDealParam {
+    private Long id;
+    private Long uId;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getuId() {
+        return uId;
+    }
+
+    public void setuId(Long uId) {
+        this.uId = uId;
+    }
+}

+ 38 - 0
src/main/java/com/sprivacy/pms/form/users/AuthorityParam.java

@@ -0,0 +1,38 @@
+package com.sprivacy.pms.form.users;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-13 15:33
+ * @desc AuthorityParam
+ **/
+public class AuthorityParam {
+    private String userId;
+    private List<String> rid;
+    private String Flag;
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public List<String> getRid() {
+        return rid;
+    }
+
+    public void setRid(List<String> rid) {
+        this.rid = rid;
+    }
+
+    public String getFlag() {
+        return Flag;
+    }
+
+    public void setFlag(String flag) {
+        Flag = flag;
+    }
+}

+ 99 - 0
src/main/java/com/sprivacy/pms/form/users/BackUser.java

@@ -0,0 +1,99 @@
+package com.sprivacy.pms.form.users;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-06 17:18
+ * @desc BackUser
+ **/
+public class BackUser {
+    private Integer id;
+    private String userName;
+    private String nickName;
+    private String telephone;
+    private String email;
+    private Integer authority;
+    private String department;
+    private String createAt;
+    private String updateAt;
+    private String flag;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getNickName() {
+        return nickName;
+    }
+
+    public void setNickName(String nickName) {
+        this.nickName = nickName;
+    }
+
+    public String getTelephone() {
+        return telephone;
+    }
+
+    public void setTelephone(String telephone) {
+        this.telephone = telephone;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public Integer getAuthority() {
+        return authority;
+    }
+
+    public void setAuthority(Integer authority) {
+        this.authority = authority;
+    }
+
+    public String getDepartment() {
+        return department;
+    }
+
+    public void setDepartment(String department) {
+        this.department = department;
+    }
+
+    public String getCreateAt() {
+        return createAt;
+    }
+
+    public void setCreateAt(String createAt) {
+        this.createAt = createAt;
+    }
+
+    public String getUpdateAt() {
+        return updateAt;
+    }
+
+    public void setUpdateAt(String updateAt) {
+        this.updateAt = updateAt;
+    }
+
+    public String getFlag() {
+        return flag;
+    }
+
+    public void setFlag(String flag) {
+        this.flag = flag;
+    }
+}

+ 27 - 0
src/main/java/com/sprivacy/pms/form/users/LoginUser.java

@@ -0,0 +1,27 @@
+package com.sprivacy.pms.form.users;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-06 17:12
+ * @desc LoginUser
+ **/
+public class LoginUser {
+    private String userName;
+    private String passwd;
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getPasswd() {
+        return passwd;
+    }
+
+    public void setPasswd(String passwd) {
+        this.passwd = passwd;
+    }
+}

+ 29 - 0
src/main/java/com/sprivacy/pms/form/users/RolePermission.java

@@ -0,0 +1,29 @@
+package com.sprivacy.pms.form.users;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-13 10:34
+ * @desc RolePermission
+ **/
+public class RolePermission {
+    private String rid;
+    private List<String> pid;
+
+    public String getRid() {
+        return rid;
+    }
+
+    public void setRid(String rid) {
+        this.rid = rid;
+    }
+
+    public List<String> getPid() {
+        return pid;
+    }
+
+    public void setPid(List<String> pid) {
+        this.pid = pid;
+    }
+}

+ 49 - 0
src/main/java/com/sprivacy/pms/form/users/RolePermissionInfo.java

@@ -0,0 +1,49 @@
+package com.sprivacy.pms.form.users;
+
+import com.sprivacy.pms.model.SysPermission;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-13 17:13
+ * @desc RolePermissionInfo
+ **/
+public class RolePermissionInfo {
+    private String id;
+    private String role;
+    private String description;
+    private List<SysPermission> sysPermissions;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getRole() {
+        return role;
+    }
+
+    public void setRole(String role) {
+        this.role = role;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public List<SysPermission> getSysPermissions() {
+        return sysPermissions;
+    }
+
+    public void setSysPermissions(List<SysPermission> sysPermissions) {
+        this.sysPermissions = sysPermissions;
+    }
+}

+ 50 - 0
src/main/java/com/sprivacy/pms/form/users/UserRole.java

@@ -0,0 +1,50 @@
+package com.sprivacy.pms.form.users;
+
+import com.sprivacy.pms.model.SysPermission;
+import com.sprivacy.pms.model.SysRole;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-13 9:40
+ * @desc UsreRole
+ **/
+public class UserRole {
+    private Long id;
+    private String userName;
+    private List<SysRole> sysRoles;
+    private List<SysPermission> sysPermissions;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public List<SysRole> getSysRoles() {
+        return sysRoles;
+    }
+
+    public void setSysRoles(List<SysRole> sysRoles) {
+        this.sysRoles = sysRoles;
+    }
+
+    public List<SysPermission> getSysPermissions() {
+        return sysPermissions;
+    }
+
+    public void setSysPermissions(List<SysPermission> sysPermissions) {
+        this.sysPermissions = sysPermissions;
+    }
+}

+ 10 - 0
src/main/java/com/sprivacy/pms/form/users/UserRoleInfo.java

@@ -0,0 +1,10 @@
+package com.sprivacy.pms.form.users;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-13 17:11
+ * @desc UserRoleInfo
+ **/
+public class UserRoleInfo {
+
+}

+ 50 - 0
src/main/java/com/sprivacy/pms/form/users/UserRolePermission.java

@@ -0,0 +1,50 @@
+package com.sprivacy.pms.form.users;
+
+import com.sprivacy.pms.model.SysPermission;
+import com.sprivacy.pms.model.SysRole;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-13 11:05
+ * @desc UserRolePermission
+ **/
+public class UserRolePermission {
+    private Long id;
+    private String userName;
+    private List<SysRole> sysRoles;
+    private List<SysPermission> sysPermissions;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public List<SysRole> getSysRoles() {
+        return sysRoles;
+    }
+
+    public void setSysRoles(List<SysRole> sysRoles) {
+        this.sysRoles = sysRoles;
+    }
+
+    public List<SysPermission> getSysPermissions() {
+        return sysPermissions;
+    }
+
+    public void setSysPermissions(List<SysPermission> sysPermissions) {
+        this.sysPermissions = sysPermissions;
+    }
+}

+ 38 - 0
src/main/java/com/sprivacy/pms/form/users/UserRolePermissionInfo.java

@@ -0,0 +1,38 @@
+package com.sprivacy.pms.form.users;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-13 17:10
+ * @desc UserRolePermissionInfo
+ **/
+public class UserRolePermissionInfo {
+    private String id;
+    private String userName;
+    List<RolePermissionInfo> rolePermissionInfos;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public List<RolePermissionInfo> getRolePermissionInfos() {
+        return rolePermissionInfos;
+    }
+
+    public void setRolePermissionInfos(List<RolePermissionInfo> rolePermissionInfos) {
+        this.rolePermissionInfos = rolePermissionInfos;
+    }
+}

+ 46 - 0
src/main/java/com/sprivacy/pms/http/HttpResponse.java

@@ -0,0 +1,46 @@
+package com.sprivacy.pms.http;
+
+/**
+ * @author fanglang
+ * @date 2018-07-26 14:28
+ * @desc HttpResponse
+ */
+public class HttpResponse {
+    private Integer success;
+    private String message;
+    private Object data;
+
+    public HttpResponse(Integer success, String message, Object data) {
+        this.success = success;
+        this.message = message;
+        this.data = data;
+    }
+
+    public HttpResponse(Integer success, String message) {
+        this(success, message, null);
+    }
+
+    public Integer getSuccess() {
+        return success;
+    }
+
+    public void setSuccess(Integer success) {
+        this.success = success;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    public Object getData() {
+        return data;
+    }
+
+    public void setData(Object data) {
+        this.data = data;
+    }
+}

+ 40 - 0
src/main/java/com/sprivacy/pms/http/HttpResponseUtils.java

@@ -0,0 +1,40 @@
+package com.sprivacy.pms.http;
+
+/**
+ * @author fanglang
+ * @date 2018-07-26 14:29
+ * @desc HttpResponseUtils
+ */
+public class HttpResponseUtils {
+    public static HttpResponse error(int success, String message) {
+        return new HttpResponse(success, message);
+    }
+
+    public static HttpResponse error(String message, Object data) {
+        return new HttpResponse(0, message, data);
+    }
+
+    public static HttpResponse error(int success, String message, Object data) {
+        return new HttpResponse(success, message, data);
+    }
+
+    public static HttpResponse error(String message) {
+        return error(0, message);
+    }
+
+    public static HttpResponse ok(String message, Object data) {
+        return new HttpResponse(1, message, data);
+    }
+
+    public static HttpResponse ok(Object data) {
+        return ok("操作成功", data);
+    }
+
+    public static HttpResponse ok(int success, String message, Object data) {
+        return new HttpResponse(success, message, data);
+    }
+
+    public static HttpResponse ok() {
+        return ok(null);
+    }
+}

+ 18 - 0
src/main/java/com/sprivacy/pms/mapper/ArticleMapper.java

@@ -0,0 +1,18 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sprivacy.pms.model.Article;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-15 13:35
+ * @desc ArticleMapper
+ **/
+@Component
+public interface ArticleMapper extends BaseMapper<Article>{
+
+    IPage<Article> selectPageArticles(Page page);
+}

+ 22 - 0
src/main/java/com/sprivacy/pms/mapper/BirthRemindMapper.java

@@ -0,0 +1,22 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sprivacy.pms.model.BirthRemind;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-02-25 10:58
+ * @desc BirthRemindMapper
+ **/
+@Component
+public interface BirthRemindMapper extends BaseMapper<BirthRemind>{
+
+    List<BirthRemind> findByPId(@Param("pid") long pid);
+
+    int deleteByPId(Map<String,Object> map);
+}

+ 17 - 0
src/main/java/com/sprivacy/pms/mapper/CategoryItemMapper.java

@@ -0,0 +1,17 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sprivacy.pms.model.CategoryItem;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-21 14:45
+ * @desc CategoryItemMapper
+ **/
+@Component
+public interface CategoryItemMapper extends BaseMapper<CategoryItem> {
+    CategoryItem findByCategoryId(String categoryId);
+}

+ 17 - 0
src/main/java/com/sprivacy/pms/mapper/CityMapper.java

@@ -0,0 +1,17 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sprivacy.pms.model.City;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-07 10:31
+ * @desc CityMapper
+ **/
+@Component
+public interface CityMapper extends BaseMapper<City> {
+    List<City> findByPId(Long pid);
+}

+ 15 - 0
src/main/java/com/sprivacy/pms/mapper/CronMapper.java

@@ -0,0 +1,15 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sprivacy.pms.model.Cron;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-02-26 9:15
+ * @desc CronMapper
+ **/
+@Component
+public interface CronMapper extends BaseMapper<Cron> {
+    Cron selectedById(Long id);
+}

+ 26 - 0
src/main/java/com/sprivacy/pms/mapper/DepartureRemindMapper.java

@@ -0,0 +1,26 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sprivacy.pms.model.DepartureRemind;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-02-25 10:59
+ * @desc DepartureRemindMapper
+ **/
+@Component
+public interface DepartureRemindMapper extends BaseMapper<DepartureRemind>{
+
+    List<DepartureRemind> selectedDepartureByCreateTimeAndRemindStatusAndWaitStatus(Map<String,Object> map);
+
+    List<DepartureRemind> checkLastDeparture(Map<String,Object> map);
+
+    List<DepartureRemind> findByPId(@Param("pid") long pid);
+
+    int deleteByPId(Map<String,Object> map);
+}

+ 22 - 0
src/main/java/com/sprivacy/pms/mapper/EduRecMapper.java

@@ -0,0 +1,22 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sprivacy.pms.model.PerEduRec;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author fanglang
+ * @date 2018-11-14 14:20
+ * @desc EducationRecordMapper
+ */
+@Component
+public interface EduRecMapper extends BaseMapper<PerEduRec> {
+
+    List<PerEduRec> findByPid(@Param("pid") long pid);
+
+    int deleteByPId(Map<String,Object> map);
+}

+ 22 - 0
src/main/java/com/sprivacy/pms/mapper/FamRelMapper.java

@@ -0,0 +1,22 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sprivacy.pms.model.PerFamRel;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author fanglang
+ * @date 2018-11-14 14:22
+ * @desc
+ */
+@Component
+public interface FamRelMapper extends BaseMapper<PerFamRel> {
+
+    List<PerFamRel> findByPid(@Param("pid") long pid);
+
+    int deleteByPId(Map<String,Object> map);
+}

+ 15 - 0
src/main/java/com/sprivacy/pms/mapper/ImageMapper.java

@@ -0,0 +1,15 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sprivacy.pms.model.Image;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-15 16:12
+ * @desc ImageMapper
+ **/
+@Component
+public interface ImageMapper extends BaseMapper<Image> {
+
+}

+ 36 - 0
src/main/java/com/sprivacy/pms/mapper/PerMapper.java

@@ -0,0 +1,36 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sprivacy.pms.model.Per;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author fanglang
+ * @date 2018-11-14 14:17
+ * @desc PersonnelMapper
+ */
+@Component
+public interface PerMapper extends BaseMapper<Per> {
+    /**
+     * 根据关键字段排序
+     * @param map
+     * @return List<Per>
+     */
+    List<Per> sorting(Map<String,Object> map);
+
+
+    List<Per> countByParam(Map<String,Object> map);
+
+    List<Per> countBySpecialParam(Map<String,Object> map);
+
+    List<Per> selectByFileId(String fileId);
+
+    List<Per> selectByPId(String pId);
+
+    List<Per> selectAll();
+
+    Per selectedByIdNumber(Map<String,Object> map);
+}

+ 19 - 0
src/main/java/com/sprivacy/pms/mapper/ProvinceMapper.java

@@ -0,0 +1,19 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import com.sprivacy.pms.model.Province;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-07 10:33
+ * @desc ProvinceMapper
+ **/
+@Component
+public interface ProvinceMapper extends BaseMapper<Province>{
+
+    List<Province> findAll();
+}

+ 22 - 0
src/main/java/com/sprivacy/pms/mapper/RelMapper.java

@@ -0,0 +1,22 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sprivacy.pms.model.Rel;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author fanglang
+ * @date 2018-11-24 11:10
+ * @desc RelMapper
+ */
+public interface RelMapper extends BaseMapper<Rel> {
+    List<Rel> findByType(@Param("type") int type);
+
+    List<Rel> findAll();
+
+    IPage<Rel> findAllByPage(Page<Rel> page);
+}

+ 21 - 0
src/main/java/com/sprivacy/pms/mapper/RewRecMapper.java

@@ -0,0 +1,21 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sprivacy.pms.model.PerRewRec;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author fanglang
+ * @date 2018-11-14 14:23
+ * @desc RewardMapper
+ */
+@Component
+public interface RewRecMapper extends BaseMapper<PerRewRec> {
+    List<PerRewRec> findByPid(@Param("pid") long pid);
+
+    int deleteByPId(Map<String,Object> map);
+}

+ 21 - 0
src/main/java/com/sprivacy/pms/mapper/SocRelMapper.java

@@ -0,0 +1,21 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sprivacy.pms.model.PerSocRel;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author fanglang
+ * @date 2018-11-14 14:25
+ * @desc SocialRelationMapper
+ */
+@Component
+public interface SocRelMapper extends BaseMapper<PerSocRel> {
+    List<PerSocRel> findByPid(@Param("pid") long pid);
+
+    int deleteByPId(Map<String,Object> map);
+}

+ 18 - 0
src/main/java/com/sprivacy/pms/mapper/SysPermissionMapper.java

@@ -0,0 +1,18 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sprivacy.pms.model.SysPermission;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-12 16:22
+ * @desc SysPermissionMapper
+ **/
+@Component
+public interface SysPermissionMapper extends BaseMapper<SysPermission> {
+
+    List<SysPermission> findById(Long id);
+}

+ 22 - 0
src/main/java/com/sprivacy/pms/mapper/SysRoleMapper.java

@@ -0,0 +1,22 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sprivacy.pms.model.SysRole;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-12 16:01
+ * @desc SysRoleMapper
+ **/
+@Component
+public interface SysRoleMapper extends BaseMapper<SysRole> {
+
+    List<SysRole> findById(Long rid);
+
+    List<SysRole> findAll();
+
+    List<SysRole> findByRole(String roleName);
+}

+ 19 - 0
src/main/java/com/sprivacy/pms/mapper/SysRolePermissionMapper.java

@@ -0,0 +1,19 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sprivacy.pms.model.SysRolePermission;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-12 16:27
+ * @desc SysRolePermissionMapper
+ **/
+@Component
+public interface SysRolePermissionMapper extends BaseMapper<SysRolePermission> {
+
+    List<SysRolePermission> findByRid(Long rid);
+}

+ 22 - 0
src/main/java/com/sprivacy/pms/mapper/SysUserRoleMapper.java

@@ -0,0 +1,22 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sprivacy.pms.model.SysUserRole;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-12 16:17
+ * @desc SysUserRoleMapper
+ **/
+@Component
+public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
+
+    List<SysUserRole> findByUid(Long uid);
+
+    List<SysUserRole> findByUidAndRid(Map<String,Object> map);
+
+}

+ 18 - 0
src/main/java/com/sprivacy/pms/mapper/TempFileResultMapper.java

@@ -0,0 +1,18 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sprivacy.pms.model.TempFileResult;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-02-11 9:55
+ * @desc TempFileResultMapper
+ **/
+@Component
+public interface TempFileResultMapper extends BaseMapper<TempFileResult>{
+
+    IPage<TempFileResult> getPageFileList(Page page);
+}

+ 21 - 0
src/main/java/com/sprivacy/pms/mapper/UserMapper.java

@@ -0,0 +1,21 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sprivacy.pms.model.User;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author guanhuijuan
+ * @create 2018-12-06 17:05
+ * @desc UserMapper
+ **/
+@Component
+public interface UserMapper extends BaseMapper<User> {
+    User findByUserName(String userName);
+
+    List<User> findAll();
+
+    List<User> findByName(String userName);
+}

+ 14 - 0
src/main/java/com/sprivacy/pms/mapper/WageMapper.java

@@ -0,0 +1,14 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sprivacy.pms.model.Wage;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author fanglang
+ * @date 2018-11-30 14:11
+ * @desc
+ */
+@Component
+public interface WageMapper extends BaseMapper<Wage> {
+}

+ 22 - 0
src/main/java/com/sprivacy/pms/mapper/WorkRecMapper.java

@@ -0,0 +1,22 @@
+package com.sprivacy.pms.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sprivacy.pms.model.PerWorkRec;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author fanglang
+ * @date 2018-11-14 14:26
+ * @desc WorkRecordMapper
+ */
+@Component
+public interface WorkRecMapper extends BaseMapper<PerWorkRec> {
+
+    List<PerWorkRec> findByPid(@Param("pid") long pid);
+
+    int deleteByPId(Map<String,Object> map);
+}

+ 185 - 0
src/main/java/com/sprivacy/pms/model/Article.java

@@ -0,0 +1,185 @@
+package com.sprivacy.pms.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-15 13:29
+ * @desc Article
+ **/
+@Data
+public class Article {
+    @TableId
+    private Long id;
+    private Integer categoryId;
+    private Integer subCategoryId;
+    private String title;
+    private String description;
+    private String author;
+    private String contentJson;
+    private String contentHtml;
+    private String contentMarkdown;
+    private String banner;
+    private String thumbnail;
+    private String articleUrl;
+    private String source;
+    private Integer wordCount;
+    private Integer readCount;
+    private String createAt;
+    private String updateAt;
+    private String createBy;
+    private String imgUrl;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Integer getCategoryId() {
+        return categoryId;
+    }
+
+    public void setCategoryId(Integer categoryId) {
+        this.categoryId = categoryId;
+    }
+
+    public Integer getSubCategoryId() {
+        return subCategoryId;
+    }
+
+    public void setSubCategoryId(Integer subCategoryId) {
+        this.subCategoryId = subCategoryId;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getAuthor() {
+        return author;
+    }
+
+    public void setAuthor(String author) {
+        this.author = author;
+    }
+
+    public String getContentJson() {
+        return contentJson;
+    }
+
+    public void setContentJson(String contentJson) {
+        this.contentJson = contentJson;
+    }
+
+    public String getContentHtml() {
+        return contentHtml;
+    }
+
+    public void setContentHtml(String contentHtml) {
+        this.contentHtml = contentHtml;
+    }
+
+    public String getContentMarkdown() {
+        return contentMarkdown;
+    }
+
+    public void setContentMarkdown(String contentMarkdown) {
+        this.contentMarkdown = contentMarkdown;
+    }
+
+    public String getBanner() {
+        return banner;
+    }
+
+    public void setBanner(String banner) {
+        this.banner = banner;
+    }
+
+    public String getThumbnail() {
+        return thumbnail;
+    }
+
+    public void setThumbnail(String thumbnail) {
+        this.thumbnail = thumbnail;
+    }
+
+    public String getArticleUrl() {
+        return articleUrl;
+    }
+
+    public void setArticleUrl(String articleUrl) {
+        this.articleUrl = articleUrl;
+    }
+
+    public String getSource() {
+        return source;
+    }
+
+    public void setSource(String source) {
+        this.source = source;
+    }
+
+    public Integer getWordCount() {
+        return wordCount;
+    }
+
+    public void setWordCount(Integer wordCount) {
+        this.wordCount = wordCount;
+    }
+
+    public Integer getReadCount() {
+        return readCount;
+    }
+
+    public void setReadCount(Integer readCount) {
+        this.readCount = readCount;
+    }
+
+    public String getCreateAt() {
+        return createAt;
+    }
+
+    public void setCreateAt(String createAt) {
+        this.createAt = createAt;
+    }
+
+    public String getUpdateAt() {
+        return updateAt;
+    }
+
+    public void setUpdateAt(String updateAt) {
+        this.updateAt = updateAt;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    public String getImgUrl() {
+        return imgUrl;
+    }
+
+    public void setImgUrl(String imgUrl) {
+        this.imgUrl = imgUrl;
+    }
+}

+ 303 - 0
src/main/java/com/sprivacy/pms/model/BirthRemind.java

@@ -0,0 +1,303 @@
+package com.sprivacy.pms.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-02-25 10:59
+ * @desc BirthRemind
+ **/
+@Data
+public class BirthRemind {
+    @TableId
+    private Long id;
+
+    private Long pId;
+
+    private Long fileId;
+
+    private String avatar;
+
+    private String name;
+
+    private String sex;
+
+    private String birthday;
+
+    private String birthplace;
+
+    private String nation;
+
+    private String workUnit;
+
+    private String workingTime;
+
+    private String remindTime;
+
+    private Boolean remindStatus;
+
+    private String operator;
+
+    private String joiningPartyTime;
+
+    private String healthStatus;
+
+    private String education;
+
+    private String graTimeSchoolMajor;
+
+    private String politicsStatus;
+
+    private String perNature;
+
+    private String jobTitle;
+
+    private String titleAcqTime;
+
+    private String currentJob;
+
+    private String jobRank;
+
+    private String contactPhone;
+
+    private String address;
+
+    private String idNumber;
+
+    private String createTime;
+
+    private String updateTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getpId() {
+        return pId;
+    }
+
+    public void setpId(Long pId) {
+        this.pId = pId;
+    }
+
+    public Long getFileId() {
+        return fileId;
+    }
+
+    public void setFileId(Long fileId) {
+        this.fileId = fileId;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getBirthday() {
+        return birthday;
+    }
+
+    public void setBirthday(String birthday) {
+        this.birthday = birthday;
+    }
+
+    public String getBirthplace() {
+        return birthplace;
+    }
+
+    public void setBirthplace(String birthplace) {
+        this.birthplace = birthplace;
+    }
+
+    public String getNation() {
+        return nation;
+    }
+
+    public void setNation(String nation) {
+        this.nation = nation;
+    }
+
+    public String getWorkUnit() {
+        return workUnit;
+    }
+
+    public void setWorkUnit(String workUnit) {
+        this.workUnit = workUnit;
+    }
+
+    public String getWorkingTime() {
+        return workingTime;
+    }
+
+    public void setWorkingTime(String workingTime) {
+        this.workingTime = workingTime;
+    }
+
+    public String getRemindTime() {
+        return remindTime;
+    }
+
+    public void setRemindTime(String remindTime) {
+        this.remindTime = remindTime;
+    }
+
+    public Boolean getRemindStatus() {
+        return remindStatus;
+    }
+
+    public void setRemindStatus(Boolean remindStatus) {
+        this.remindStatus = remindStatus;
+    }
+
+    public String getOperator() {
+        return operator;
+    }
+
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+
+    public String getJoiningPartyTime() {
+        return joiningPartyTime;
+    }
+
+    public void setJoiningPartyTime(String joiningPartyTime) {
+        this.joiningPartyTime = joiningPartyTime;
+    }
+
+    public String getHealthStatus() {
+        return healthStatus;
+    }
+
+    public void setHealthStatus(String healthStatus) {
+        this.healthStatus = healthStatus;
+    }
+
+    public String getEducation() {
+        return education;
+    }
+
+    public void setEducation(String education) {
+        this.education = education;
+    }
+
+    public String getGraTimeSchoolMajor() {
+        return graTimeSchoolMajor;
+    }
+
+    public void setGraTimeSchoolMajor(String graTimeSchoolMajor) {
+        this.graTimeSchoolMajor = graTimeSchoolMajor;
+    }
+
+    public String getPoliticsStatus() {
+        return politicsStatus;
+    }
+
+    public void setPoliticsStatus(String politicsStatus) {
+        this.politicsStatus = politicsStatus;
+    }
+
+    public String getPerNature() {
+        return perNature;
+    }
+
+    public void setPerNature(String perNature) {
+        this.perNature = perNature;
+    }
+
+    public String getJobTitle() {
+        return jobTitle;
+    }
+
+    public void setJobTitle(String jobTitle) {
+        this.jobTitle = jobTitle;
+    }
+
+    public String getTitleAcqTime() {
+        return titleAcqTime;
+    }
+
+    public void setTitleAcqTime(String titleAcqTime) {
+        this.titleAcqTime = titleAcqTime;
+    }
+
+    public String getCurrentJob() {
+        return currentJob;
+    }
+
+    public void setCurrentJob(String currentJob) {
+        this.currentJob = currentJob;
+    }
+
+    public String getJobRank() {
+        return jobRank;
+    }
+
+    public void setJobRank(String jobRank) {
+        this.jobRank = jobRank;
+    }
+
+    public String getContactPhone() {
+        return contactPhone;
+    }
+
+    public void setContactPhone(String contactPhone) {
+        this.contactPhone = contactPhone;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getIdNumber() {
+        return idNumber;
+    }
+
+    public void setIdNumber(String idNumber) {
+        this.idNumber = idNumber;
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(String updateTime) {
+        this.updateTime = updateTime;
+    }
+}

+ 77 - 0
src/main/java/com/sprivacy/pms/model/CategoryItem.java

@@ -0,0 +1,77 @@
+package com.sprivacy.pms.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-21 14:42
+ * @desc CategoryItem
+ **/
+@Data
+public class CategoryItem {
+    @TableId
+    private Long id;
+    private String categoryItemName;
+    private String banner;
+    private String description;
+    private String createAt;
+    private String updateAt;
+    private String createBy;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getCategoryItemName() {
+        return categoryItemName;
+    }
+
+    public void setCategoryItemName(String categoryItemName) {
+        this.categoryItemName = categoryItemName;
+    }
+
+    public String getBanner() {
+        return banner;
+    }
+
+    public void setBanner(String banner) {
+        this.banner = banner;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getCreateAt() {
+        return createAt;
+    }
+
+    public void setCreateAt(String createAt) {
+        this.createAt = createAt;
+    }
+
+    public String getUpdateAt() {
+        return updateAt;
+    }
+
+    public void setUpdateAt(String updateAt) {
+        this.updateAt = updateAt;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+}

+ 41 - 0
src/main/java/com/sprivacy/pms/model/City.java

@@ -0,0 +1,41 @@
+package com.sprivacy.pms.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-07 10:29
+ * @desc City
+ **/
+@Data
+public class City {
+    @TableId
+    private Long id;
+    private Long pId;
+    private String cityName;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getpId() {
+        return pId;
+    }
+
+    public void setpId(Long pId) {
+        this.pId = pId;
+    }
+
+    public String getCityName() {
+        return cityName;
+    }
+
+    public void setCityName(String cityName) {
+        this.cityName = cityName;
+    }
+}

+ 43 - 0
src/main/java/com/sprivacy/pms/model/Cron.java

@@ -0,0 +1,43 @@
+package com.sprivacy.pms.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-02-26 9:17
+ * @desc Cron
+ **/
+@Data
+public class Cron {
+    @TableId
+    private Long id;
+
+    private String cron;
+
+    private String description;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getCron() {
+        return cron;
+    }
+
+    public void setCron(String cron) {
+        this.cron = cron;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+}

+ 313 - 0
src/main/java/com/sprivacy/pms/model/DepartureRemind.java

@@ -0,0 +1,313 @@
+package com.sprivacy.pms.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-02-25 10:59
+ * @desc DepartureRemind
+ **/
+@Data
+public class DepartureRemind {
+    @TableId
+    private Long id;
+
+    private Long pId;
+
+    private Long fileId;
+
+    private String avatar;
+
+    private String name;
+
+    private String sex;
+
+    private String birthday;
+
+    private String birthplace;
+
+    private String nation;
+
+    private String workUnit;
+
+    private String workingTime;
+
+    private String remindTime;
+
+    private Boolean remindStatus;
+
+    private Boolean waitStatus;
+
+    private String operator;
+
+    private String joiningPartyTime;
+
+    private String healthStatus;
+
+    private String education;
+
+    private String graTimeSchoolMajor;
+
+    private String politicsStatus;
+
+    private String perNature;
+
+    private String jobTitle;
+
+    private String titleAcqTime;
+
+    private String currentJob;
+
+    private String jobRank;
+
+    private String contactPhone;
+
+    private String address;
+
+    private String idNumber;
+
+    private String createTime;
+
+    private String updateTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getpId() {
+        return pId;
+    }
+
+    public void setpId(Long pId) {
+        this.pId = pId;
+    }
+
+    public Long getFileId() {
+        return fileId;
+    }
+
+    public void setFileId(Long fileId) {
+        this.fileId = fileId;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getBirthday() {
+        return birthday;
+    }
+
+    public void setBirthday(String birthday) {
+        this.birthday = birthday;
+    }
+
+    public String getBirthplace() {
+        return birthplace;
+    }
+
+    public void setBirthplace(String birthplace) {
+        this.birthplace = birthplace;
+    }
+
+    public String getNation() {
+        return nation;
+    }
+
+    public void setNation(String nation) {
+        this.nation = nation;
+    }
+
+    public String getWorkUnit() {
+        return workUnit;
+    }
+
+    public void setWorkUnit(String workUnit) {
+        this.workUnit = workUnit;
+    }
+
+    public String getWorkingTime() {
+        return workingTime;
+    }
+
+    public void setWorkingTime(String workingTime) {
+        this.workingTime = workingTime;
+    }
+
+    public String getRemindTime() {
+        return remindTime;
+    }
+
+    public void setRemindTime(String remindTime) {
+        this.remindTime = remindTime;
+    }
+
+    public Boolean getRemindStatus() {
+        return remindStatus;
+    }
+
+    public void setRemindStatus(Boolean remindStatus) {
+        this.remindStatus = remindStatus;
+    }
+
+    public Boolean getWaitStatus() {
+        return waitStatus;
+    }
+
+    public void setWaitStatus(Boolean waitStatus) {
+        this.waitStatus = waitStatus;
+    }
+
+    public String getOperator() {
+        return operator;
+    }
+
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+
+    public String getJoiningPartyTime() {
+        return joiningPartyTime;
+    }
+
+    public void setJoiningPartyTime(String joiningPartyTime) {
+        this.joiningPartyTime = joiningPartyTime;
+    }
+
+    public String getHealthStatus() {
+        return healthStatus;
+    }
+
+    public void setHealthStatus(String healthStatus) {
+        this.healthStatus = healthStatus;
+    }
+
+    public String getEducation() {
+        return education;
+    }
+
+    public void setEducation(String education) {
+        this.education = education;
+    }
+
+    public String getGraTimeSchoolMajor() {
+        return graTimeSchoolMajor;
+    }
+
+    public void setGraTimeSchoolMajor(String graTimeSchoolMajor) {
+        this.graTimeSchoolMajor = graTimeSchoolMajor;
+    }
+
+    public String getPoliticsStatus() {
+        return politicsStatus;
+    }
+
+    public void setPoliticsStatus(String politicsStatus) {
+        this.politicsStatus = politicsStatus;
+    }
+
+    public String getPerNature() {
+        return perNature;
+    }
+
+    public void setPerNature(String perNature) {
+        this.perNature = perNature;
+    }
+
+    public String getJobTitle() {
+        return jobTitle;
+    }
+
+    public void setJobTitle(String jobTitle) {
+        this.jobTitle = jobTitle;
+    }
+
+    public String getTitleAcqTime() {
+        return titleAcqTime;
+    }
+
+    public void setTitleAcqTime(String titleAcqTime) {
+        this.titleAcqTime = titleAcqTime;
+    }
+
+    public String getCurrentJob() {
+        return currentJob;
+    }
+
+    public void setCurrentJob(String currentJob) {
+        this.currentJob = currentJob;
+    }
+
+    public String getJobRank() {
+        return jobRank;
+    }
+
+    public void setJobRank(String jobRank) {
+        this.jobRank = jobRank;
+    }
+
+    public String getContactPhone() {
+        return contactPhone;
+    }
+
+    public void setContactPhone(String contactPhone) {
+        this.contactPhone = contactPhone;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getIdNumber() {
+        return idNumber;
+    }
+
+    public void setIdNumber(String idNumber) {
+        this.idNumber = idNumber;
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(String updateTime) {
+        this.updateTime = updateTime;
+    }
+}

+ 68 - 0
src/main/java/com/sprivacy/pms/model/Image.java

@@ -0,0 +1,68 @@
+package com.sprivacy.pms.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+/**
+ * @author guanhuijuan
+ * @create 2019-01-15 16:08
+ * @desc Image
+ **/
+@Data
+public class Image {
+    @TableId
+    private Long id;
+    private String name;
+    private String url;
+    private String suffix;
+    private Long size;
+    private String createAt;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getSuffix() {
+        return suffix;
+    }
+
+    public void setSuffix(String suffix) {
+        this.suffix = suffix;
+    }
+
+    public Long getSize() {
+        return size;
+    }
+
+    public void setSize(Long size) {
+        this.size = size;
+    }
+
+    public String getCreateAt() {
+        return createAt;
+    }
+
+    public void setCreateAt(String createAt) {
+        this.createAt = createAt;
+    }
+}

+ 283 - 0
src/main/java/com/sprivacy/pms/model/Per.java

@@ -0,0 +1,283 @@
+package com.sprivacy.pms.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+/**
+ * @author fanglang
+ * @date 2018-10-22 14:13
+ * @desc 人员信息
+ */
+@Data
+public class Per {
+    @TableId
+    private Long id;
+
+    private Long fileId;
+
+    private String name;
+
+    private String sex;
+
+    private String nation;
+
+    private String birthplace;
+
+    private String avatar;
+
+    private String birthday;
+
+    private String workUnit;
+
+    private String workingTime;
+
+    private String departureTime;
+
+    private String joiningPartyTime;
+
+    private String healthStatus;
+
+    private String education;
+
+    private String graTimeSchoolMajor;
+
+    private String politicsStatus;
+
+    private String perNature;
+
+    private String jobTitle;
+
+    private String titleAcqTime;
+
+    private String currentJob;
+
+    private String jobRank;
+
+    private String contactPhone;
+
+    private String address;
+
+    private String idNumber;
+
+    private String createTime;
+
+    private String updateTime;
+
+    private String operator;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getFileId() {
+        return fileId;
+    }
+
+    public void setFileId(Long fileId) {
+        this.fileId = fileId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getNation() {
+        return nation;
+    }
+
+    public void setNation(String nation) {
+        this.nation = nation;
+    }
+
+    public String getBirthplace() {
+        return birthplace;
+    }
+
+    public void setBirthplace(String birthplace) {
+        this.birthplace = birthplace;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getBirthday() {
+        return birthday;
+    }
+
+    public void setBirthday(String birthday) {
+        this.birthday = birthday;
+    }
+
+    public String getWorkUnit() {
+        return workUnit;
+    }
+
+    public void setWorkUnit(String workUnit) {
+        this.workUnit = workUnit;
+    }
+
+    public String getWorkingTime() {
+        return workingTime;
+    }
+
+    public void setWorkingTime(String workingTime) {
+        this.workingTime = workingTime;
+    }
+
+    public String getDepartureTime() {
+        return departureTime;
+    }
+
+    public void setDepartureTime(String departureTime) {
+        this.departureTime = departureTime;
+    }
+
+    public String getJoiningPartyTime() {
+        return joiningPartyTime;
+    }
+
+    public void setJoiningPartyTime(String joiningPartyTime) {
+        this.joiningPartyTime = joiningPartyTime;
+    }
+
+    public String getHealthStatus() {
+        return healthStatus;
+    }
+
+    public void setHealthStatus(String healthStatus) {
+        this.healthStatus = healthStatus;
+    }
+
+    public String getEducation() {
+        return education;
+    }
+
+    public void setEducation(String education) {
+        this.education = education;
+    }
+
+    public String getGraTimeSchoolMajor() {
+        return graTimeSchoolMajor;
+    }
+
+    public void setGraTimeSchoolMajor(String graTimeSchoolMajor) {
+        this.graTimeSchoolMajor = graTimeSchoolMajor;
+    }
+
+    public String getPoliticsStatus() {
+        return politicsStatus;
+    }
+
+    public void setPoliticsStatus(String politicsStatus) {
+        this.politicsStatus = politicsStatus;
+    }
+
+    public String getPerNature() {
+        return perNature;
+    }
+
+    public void setPerNature(String perNature) {
+        this.perNature = perNature;
+    }
+
+    public String getJobTitle() {
+        return jobTitle;
+    }
+
+    public void setJobTitle(String jobTitle) {
+        this.jobTitle = jobTitle;
+    }
+
+    public String getTitleAcqTime() {
+        return titleAcqTime;
+    }
+
+    public void setTitleAcqTime(String titleAcqTime) {
+        this.titleAcqTime = titleAcqTime;
+    }
+
+    public String getCurrentJob() {
+        return currentJob;
+    }
+
+    public void setCurrentJob(String currentJob) {
+        this.currentJob = currentJob;
+    }
+
+    public String getJobRank() {
+        return jobRank;
+    }
+
+    public void setJobRank(String jobRank) {
+        this.jobRank = jobRank;
+    }
+
+    public String getContactPhone() {
+        return contactPhone;
+    }
+
+    public void setContactPhone(String contactPhone) {
+        this.contactPhone = contactPhone;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getIdNumber() {
+        return idNumber;
+    }
+
+    public void setIdNumber(String idNumber) {
+        this.idNumber = idNumber;
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(String updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getOperator() {
+        return operator;
+    }
+
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+}

+ 99 - 0
src/main/java/com/sprivacy/pms/model/PerEduRec.java

@@ -0,0 +1,99 @@
+package com.sprivacy.pms.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import org.springframework.util.StringUtils;
+
+/**
+ * @author fanglang
+ * @date 2018-10-22 14:15
+ * @desc 人员教育经历
+ */
+@Data
+public class PerEduRec {
+
+    @TableId
+    private Long id;
+
+    private Long pid;
+
+    private String time;
+
+    private String school;
+
+    private String major;
+
+    private String createTime;
+
+    private String updateTime;
+
+    private String operator;
+
+    public boolean isEmpty() {
+        return StringUtils.isEmpty(time) && StringUtils.isEmpty(school) && StringUtils.isEmpty(major);
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getPid() {
+        return pid;
+    }
+
+    public void setPid(Long pid) {
+        this.pid = pid;
+    }
+
+    public String getTime() {
+        return time;
+    }
+
+    public void setTime(String time) {
+        this.time = time;
+    }
+
+    public String getSchool() {
+        return school;
+    }
+
+    public void setSchool(String school) {
+        this.school = school;
+    }
+
+    public String getMajor() {
+        return major;
+    }
+
+    public void setMajor(String major) {
+        this.major = major;
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(String updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getOperator() {
+        return operator;
+    }
+
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+}

+ 123 - 0
src/main/java/com/sprivacy/pms/model/PerFamRel.java

@@ -0,0 +1,123 @@
+package com.sprivacy.pms.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import org.springframework.util.StringUtils;
+
+/**
+ * @author fanglang
+ * @date 2018-10-22 14:34
+ * @desc 家庭人员关系信息
+ */
+@Data
+public class PerFamRel {
+
+    @TableId
+    private Long id;
+
+    private Long pid;
+
+    private String relation;
+
+    private String name;
+
+    private String birthday;
+
+    private String politicalStatus;
+
+    private String deptJob;
+
+    private String createTime;
+
+    private String updateTime;
+
+    private String operator;
+
+    public boolean isEmpty() {
+        return StringUtils.isEmpty(relation) &&
+                StringUtils.isEmpty(name) &&
+                StringUtils.isEmpty(birthday) &&
+                StringUtils.isEmpty(politicalStatus) &&
+                StringUtils.isEmpty(deptJob);
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getPid() {
+        return pid;
+    }
+
+    public void setPid(Long pid) {
+        this.pid = pid;
+    }
+
+    public String getRelation() {
+        return relation;
+    }
+
+    public void setRelation(String relation) {
+        this.relation = relation;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getBirthday() {
+        return birthday;
+    }
+
+    public void setBirthday(String birthday) {
+        this.birthday = birthday;
+    }
+
+    public String getPoliticalStatus() {
+        return politicalStatus;
+    }
+
+    public void setPoliticalStatus(String politicalStatus) {
+        this.politicalStatus = politicalStatus;
+    }
+
+    public String getDeptJob() {
+        return deptJob;
+    }
+
+    public void setDeptJob(String deptJob) {
+        this.deptJob = deptJob;
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(String updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getOperator() {
+        return operator;
+    }
+
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+}

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