From 4403a428edc18482c5aa561e603b26ebe13d328f Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期二, 02 四月 2024 18:27:02 +0800
Subject: [PATCH] 部门端登录、基础数据导入优化、得分计算优化

---
 ruoyi-system/src/main/java/com/ruoyi/system/dto/FieldDTO.java                                 |   16 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptFocusDTO.java                      |    9 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/TbField.java                               |   24 
 ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldCategoryService.java               |    8 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java          |  198 ++++++-
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java                       |   15 
 ruoyi-common/src/main/java/com/ruoyi/common/enums/UserTypeEnum.java                           |   22 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/SysUserUpdateStatusDTO.java                   |    2 
 ruoyi-common/src/main/java/com/ruoyi/common/enums/FieldInputTypeEnum.java                     |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/query/DeptQuery.java                              |    2 
 ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java        |   14 
 ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java   |   15 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/excel/DeptExcel.java                       |   73 ++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldServiceImpl.java              |   10 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldController.java                 |    8 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataConfigUpdateDTO.java          |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldCategoryDetailVO.java                     |    4 
 ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/system/SysUserController.java         |   25 
 ruoyi-system/src/main/java/com/ruoyi/system/query/SysUserQuery.java                           |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfigDetail.java               |    4 
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java                   |   94 ++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java                         |   23 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataFieldDTO.java                        |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/vo/UserInfoVo.java                                |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfig.java                     |   12 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataCategory.java                   |   12 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java        |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/TbFieldCategory.java                       |   14 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/TbScore.java                               |   16 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataDTO.java                             |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/TbDept.java                                |   42 +
 ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldUpdateDTO.java                    |    8 
 ruoyi-system/src/main/java/com/ruoyi/system/service/TbDeptService.java                        |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/TbQuestion.java                            |   12 
 ruoyi-system/src/main/java/com/ruoyi/system/listener/BasicDataListener.java                   |  108 ++-
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/conveter/CountyFlagConverter.java          |   40 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldCategoryController.java         |    6 
 ruoyi-admin-dept/src/main/resources/application.yml                                           |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/lisenter/DeptImportListener.java           |   93 +++
 ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataField.java                      |   16 
 ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/interceptor/MybatisConfiguration.java |    5 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java           |    4 
 ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java                  |    6 
 ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java                       |    2 
 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java               |   21 
 ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldVO.java                                   |    8 
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                               |  100 ++-
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbDeptController.java                  |   66 +
 ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/HistoryDataController.java        |   20 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataCategoryUpdateDTO.java        |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java                            |   10 
 ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldReportingVO.java                          |    2 
 ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java     |   14 
 ruoyi-system/src/main/java/com/ruoyi/system/query/ScoreQuery.java                             |    2 
 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java            |   32 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/ShowHideDTO.java                              |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicData.java                           |   12 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataConfigDTO.java                       |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java                      |   18 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDeptServiceImpl.java               |   76 ++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java              |   25 
 ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java      |    4 
 sql/ry_20230706.sql                                                                           |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/TbDataScreenConfig.java                    |   16 
 ruoyi-system/src/main/java/com/ruoyi/system/vo/DeptVO.java                                    |   28 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldCategoryServiceImpl.java      |   20 
 ruoyi-system/src/main/java/com/ruoyi/system/importExcel/DeptExcel.java                        |    8 
 ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldService.java                       |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptUpdateDTO.java                     |    8 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldCategoryUpdateDTO.java            |    2 
 ruoyi-common/src/main/java/com/ruoyi/common/config/DataUpdateHandlerConfig.java               |    7 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java              |   64 +-
 ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldCategoryVO.java                           |    2 
 ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml                            |   10 
 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java                      |    2 
 ruoyi-system/src/main/resources/mapper/system/TbScoreMapper.xml                               |    1 
 76 files changed, 1,087 insertions(+), 495 deletions(-)

diff --git a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java
index 711cf98..d4c52a7 100644
--- a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java
+++ b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java
@@ -2,7 +2,9 @@
 
 import com.ruoyi.common.basic.PageDTO;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.system.dto.BasicDataDTO;
 import com.ruoyi.system.query.ScoreQuery;
 import com.ruoyi.system.service.TbBasicDataService;
@@ -30,10 +32,11 @@
 
     @ApiOperation("获取基础数据填报相关信息")
     @GetMapping("/basic-fields")
-    public R<BasicDataReportingVO> getBasicFields(@RequestParam("deptAreaCode") String deptAreaCode) {
-        //TODO 如果能够获取到当前登录用户,则不需要传区划代码
+    public R<BasicDataReportingVO> getBasicFields() {
         try {
-            return tbBasicDataService.getBasicFields(deptAreaCode);
+            SysUser user = SecurityUtils.getLoginUser().getUser();
+            String areaCode = user.getAreaCode();
+            return tbBasicDataService.getBasicFields(areaCode);
         } catch (Exception e) {
             if (e instanceof ServiceException) {
                 return R.fail(e.getMessage());
@@ -62,14 +65,13 @@
      */
     @GetMapping("/download")
     @ApiOperation("模板下载")
-    public R<Void> downloadImportTemplate() {
+    public void downloadImportTemplate() {
         try {
             tbBasicDataService.downloadImportTemplate();
         } catch (Exception e) {
             log.error("模板下载异常",e);
-            return R.fail("模板下载失败,请联系管理员!");
+            throw new ServiceException("模板下载失败,请联系管理员!");
         }
-        return R.ok();
     }
 
     @PostMapping("/import")
diff --git a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/HistoryDataController.java b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/HistoryDataController.java
new file mode 100644
index 0000000..f45555b
--- /dev/null
+++ b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/HistoryDataController.java
@@ -0,0 +1,20 @@
+package com.ruoyi.web.controller.api;
+
+import io.swagger.annotations.Api;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author mitao
+ * @date 2024/4/1
+ */
+@Slf4j
+@RestController
+@RequestMapping("/history-data")
+@RequiredArgsConstructor
+@Api(tags = "历史数据相关接口")
+public class HistoryDataController {
+
+}
diff --git a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/interceptor/MybatisConfiguration.java b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/interceptor/MybatisConfiguration.java
index 5390dc1..39295fc 100644
--- a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/interceptor/MybatisConfiguration.java
+++ b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/interceptor/MybatisConfiguration.java
@@ -1,6 +1,5 @@
 package com.ruoyi.web.controller.interceptor;
 
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
 @Configuration
@@ -9,9 +8,9 @@
     /**
      * 注册拦截器
      */
-    @Bean
+  /*  @Bean
     public MybatisInterceptor getMybatisInterceptor() {
         return new MybatisInterceptor();
-    }
+    }*/
     
 }
\ No newline at end of file
diff --git a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java
index df1c793..fcbb05d 100644
--- a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java
+++ b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java
@@ -2,20 +2,19 @@
 
 import com.ruoyi.framework.web.service.TokenService;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.ibatis.executor.Executor;
 import org.apache.ibatis.mapping.MappedStatement;
 import org.apache.ibatis.mapping.SqlCommandType;
-import org.apache.ibatis.plugin.*;
+import org.apache.ibatis.plugin.Interceptor;
+import org.apache.ibatis.plugin.Invocation;
+import org.apache.ibatis.plugin.Plugin;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
 
 import java.lang.reflect.Field;
-import java.time.LocalDateTime;
 import java.util.*;
 
 @Slf4j
-@Component
-@Intercepts({ @Signature(type = Executor.class, method = "update", args = { MappedStatement.class, Object.class }) })
+/*@Component
+@Intercepts({ @Signature(type = Executor.class, method = "update", args = { MappedStatement.class, Object.class }) })*/
 public class MybatisInterceptor implements Interceptor {
 
     @Autowired
@@ -57,7 +56,7 @@
                     //注入创建时间
                     if ("createTime".equals(field.getName())) {
                         field.setAccessible(true);
-                        field.set(parameter, LocalDateTime.now());
+                        field.set(parameter, new Date());
                         field.setAccessible(false);
                     } 
                 } catch (Exception e) {
@@ -80,7 +79,7 @@
                     }
                     if ("updateTime".equals(field.getName())) {
                         field.setAccessible(true);
-                        field.set(parameter, LocalDateTime.now());
+                        field.set(parameter, new Date());
                         field.setAccessible(false);
                     }
                 } catch (Exception e) {
diff --git a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index 4775983..04dd3f5 100644
--- a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -135,14 +135,14 @@
         // 生成令牌
         LoginUser loginUser = loginService.loginPwd(loginBody.getUsername(), loginBody.getPassword(),loginBody.getCode(),loginBody.getUuid());
         ajax.put(Constants.TOKEN, tokenService.createToken(loginUser));
-        List<SysRole> roles = loginUser.getUser().getRoles();
-        if(CollectionUtils.isEmpty(roles)){
-            return AjaxResult.error("请关联角色!");
-        }
-        List<SysMenu> menus = roleService.roleInfoFromUserId(loginUser.getUserId());
+        //List<SysRole> roles = loginUser.getUser().getRoles();
+        //if(CollectionUtils.isEmpty(roles)){
+        //    return AjaxResult.error("请关联角色!");
+        //}
+        //List<SysMenu> menus = roleService.roleInfoFromUserId(loginUser.getUserId());
 
-        ajax.put("menus",menus);
-        ajax.put("roleName",roles.get(0).getRoleName());
+        //ajax.put("menus",menus);
+        //ajax.put("roleName",roles.get(0).getRoleName());
         ajax.put("userInfo",loginUser);
         return ajax;
     }
diff --git a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
index be5af6a..84af5c3 100644
--- a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
+++ b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
@@ -63,9 +63,9 @@
         SysUser currentUser = loginUser.getUser();
         currentUser.setNickName(user.getNickName());
         currentUser.setEmail(user.getEmail());
-        currentUser.setPhonenumber(user.getPhonenumber());
+        currentUser.setPhoneNumber(user.getPhoneNumber());
         currentUser.setSex(user.getSex());
-        if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser))
+        if (StringUtils.isNotEmpty(user.getPhoneNumber()) && !userService.checkPhoneUnique(currentUser))
         {
             return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
         }
diff --git a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
index 28ee85d..c5e7659 100644
--- a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
+++ b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -1,6 +1,5 @@
 package com.ruoyi.web.controller.system;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.common.core.controller.BaseController;
@@ -14,19 +13,21 @@
 import com.ruoyi.framework.web.service.TokenService;
 import com.ruoyi.system.dto.SysUserUpdateStatusDTO;
 import com.ruoyi.system.query.SysUserQuery;
-import com.ruoyi.system.service.*;
+import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.service.ISysRoleService;
+import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.system.vo.SysUserVO;
-import com.ruoyi.system.vo.UserAddListVO;
-import com.ruoyi.system.vo.UserLevelVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -65,7 +66,7 @@
     @PostMapping("/listNotPage")
     public AjaxResult listNotPage()
     {
-        List<SysUser> list = userService.selectList();
+        List<SysUser> list = userService.queryList();
         return AjaxResult.success(list);
     }
 
@@ -155,7 +156,7 @@
 //                if(StringUtils.isNotEmpty(name) && type == 3){
 //                    users = sysUsers.stream().filter(e -> userLevelVO1.getKey().equals(e.getDeptId())
 //                            && ((StringUtils.isNotEmpty(e.getNickName()) && e.getNickName().contains(name)))
-//                            || (StringUtils.isNotEmpty(e.getPhonenumber()) && e.getPhonenumber().contains(name))).collect(Collectors.toList());
+//                            || (StringUtils.isNotEmpty(e.getPhoneNumber()) && e.getPhoneNumber().contains(name))).collect(Collectors.toList());
 //                }else {
 //                    users = sysUsers.stream().filter(e -> userLevelVO1.getKey().equals(e.getDeptId())).collect(Collectors.toList());
 //                }
@@ -270,12 +271,12 @@
     @PostMapping("/add")
     public AjaxResult add(@Validated @RequestBody SysUser user)
     {
-        user.setUserName(user.getPhonenumber());
+        user.setUserName(user.getPhoneNumber());
         if (!userService.checkUserNameUnique(user))
         {
             return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
         }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
+        else if (StringUtils.isNotEmpty(user.getPhoneNumber()) && !userService.checkPhoneUnique(user))
         {
             return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
         }
@@ -294,14 +295,14 @@
     @PostMapping("/edit")
     public AjaxResult edit(@Validated @RequestBody SysUser user)
     {
-        user.setUserName(user.getPhonenumber());
+        user.setUserName(user.getPhoneNumber());
 //        userService.checkUserAllowed(user);
 //        userService.checkUserDataScope(user.getUserId());
         if (!userService.checkUserNameUnique(user))
         {
             return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
         }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
+        else if (StringUtils.isNotEmpty(user.getPhoneNumber()) && !userService.checkPhoneUnique(user))
         {
             return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
         }
diff --git a/ruoyi-admin-dept/src/main/resources/application.yml b/ruoyi-admin-dept/src/main/resources/application.yml
index 642ff48..86cae4f 100644
--- a/ruoyi-admin-dept/src/main/resources/application.yml
+++ b/ruoyi-admin-dept/src/main/resources/application.yml
@@ -93,6 +93,9 @@
         max-wait: -1ms
   jackson:
     default-property-inclusion: non_null
+    deserialization:
+      read-unknown-enum-values-as-null: true
+
 # token配置
 token:
   # 令牌自定义标识
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbDeptController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbDeptController.java
index deade72..3c05ff9 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbDeptController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbDeptController.java
@@ -1,26 +1,34 @@
 package com.ruoyi.web.controller.api;
 
 
+import com.alibaba.excel.EasyExcel;
 import com.ruoyi.common.basic.PageDTO;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.BeanUtils;
-import com.ruoyi.common.utils.ExcelUtil;
-import com.ruoyi.system.domain.TbDept;
+import com.ruoyi.common.utils.CollUtils;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.system.dto.update.DeptFocusDTO;
 import com.ruoyi.system.dto.update.DeptUpdateDTO;
 import com.ruoyi.system.query.DeptQuery;
+import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.system.service.TbDeptService;
 import com.ruoyi.system.vo.DeptVO;
+import com.ruoyi.web.controller.excel.DeptExcel;
+import com.ruoyi.web.controller.lisenter.DeptImportListener;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
+import java.io.InputStream;
+import java.net.URLEncoder;
+import java.util.Optional;
 
 /**
  * <p>
@@ -39,7 +47,7 @@
 
     private final HttpServletResponse response;
     private final TbDeptService tbDeptService;
-
+    private final ISysUserService sysUserService;
     /**
      * 导入模板下载
      */
@@ -47,8 +55,15 @@
     @ApiOperation("模板下载")
     public void download() {
         try {
-            ArrayList<TbDept> list = new ArrayList<>();
-            ExcelUtil.exportExcel(list, "部门导入模板", "部门导入模板", TbDept.class, "部门导入模板", response);
+            //ArrayList<TbDept> list = new ArrayList<>();
+            //ExcelUtil.exportExcel(list, "部门导入模板", "部门导入模板", TbDept.class, "部门导入模板", response);
+            // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
+            response.setContentType("application/vnd.ms-excel");
+            response.setCharacterEncoding("utf-8");
+            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
+            String fileName = URLEncoder.encode("部门导入模板", "UTF-8");
+            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+            EasyExcel.write(response.getOutputStream(), DeptExcel.class).sheet("模板").doWrite(CollUtils.emptyList());
         } catch (Exception e) {
             log.error("模板下载异常",e);
             throw new ServiceException("模板下载失败,请联系管理员!");
@@ -62,9 +77,13 @@
      */
     @PostMapping("/import")
     @ApiOperation("导入")
+    @Transactional(rollbackFor = Exception.class)
     public R<Void> importExcel(@RequestPart("file")MultipartFile file) {
         try {
-            tbDeptService.importExcel(file);
+            //tbDeptService.importExcel(file);
+            InputStream inputStream = file.getInputStream();
+            EasyExcel.read(inputStream, DeptExcel.class, new DeptImportListener(sysUserService)).sheet().doRead();
+            inputStream.close();
         } catch (Exception e) {
             if (e instanceof ServiceException) {
                 return R.fail(e.getMessage());
@@ -96,15 +115,17 @@
 
     /**
      * 根据id查询部门详情
-     * @param id 部门id
+     * @param userId 部门id
      * @return DeptVO
      */
     @GetMapping("/get-details")
     @ApiOperation("根据id查询部门详情")
-    public R<DeptVO> getDetails(@RequestParam Integer id) {
+    public R<DeptVO> getDetails(@RequestParam Long userId) {
         try {
-            TbDept dept = tbDeptService.getById(id);
-            return R.ok(BeanUtils.copyBean(dept,DeptVO.class));
+            Optional<SysUser> sysUser = sysUserService.lambdaQuery().eq(SysUser::getUserId, userId).oneOpt();
+            if (sysUser.isPresent()) {
+                return R.ok(BeanUtils.copyBean(sysUser.get(),DeptVO.class));
+            }
         } catch (Exception e) {
             if (e instanceof ServiceException) {
                 return R.fail(e.getMessage());
@@ -112,6 +133,7 @@
             log.error("根据id查询部门详情异常", e);
             return R.fail();
         }
+        return R.ok(new DeptVO());
     }
 
     /**
@@ -121,10 +143,16 @@
      */
     @PostMapping("/edit")
     @ApiOperation("编辑")
-    public R<Object> edit(@RequestBody DeptUpdateDTO dto){
+    public R<Void> edit(@RequestBody DeptUpdateDTO dto){
         try {
-            TbDept tbDept = BeanUtils.copyBean(dto, TbDept.class);
-            tbDeptService.updateById(tbDept);
+            dto.setPassword(SecurityUtils.encryptPassword(dto.getPassword()));
+            sysUserService.lambdaUpdate().set(SysUser::getAreaAlias, dto.getAreaAlias())
+                    .set(SysUser::getPersonInCharge, dto.getPersonInCharge())
+                    .set(SysUser::getPhoneNumber, dto.getPhoneNumber())
+                    .set(SysUser::getUserName, dto.getUserName())
+                    .set(SysUser::getPassword, dto.getPassword())
+                    .eq(SysUser::getUserId, dto.getUserId())
+                    .update();
         } catch (Exception e) {
             if (e instanceof ServiceException) {
                 return R.fail(e.getMessage());
@@ -146,5 +174,15 @@
        tbDeptService.focus(dto);
         return R.ok();
     }
+
+    /**
+     * 部门未上传季度数据提示
+     * @return Void
+     */
+    @PostMapping("/reporting-message")
+    @ApiOperation(value = "部门未上传季度数据提示",notes = "code=200不展示,code=500 展示返回的msg")
+    public R<Void> reportingMessage(){
+        return tbDeptService.reportingMessage();
+    }
 }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldCategoryController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldCategoryController.java
index 4675827..7205de3 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldCategoryController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldCategoryController.java
@@ -62,7 +62,7 @@
      */
     @GetMapping("/get-details")
     @ApiOperation("根据id获取字段分类详情")
-    public R<FieldCategoryDetailVO> getById(@RequestParam(value = "id") Integer id) {
+    public R<FieldCategoryDetailVO> getById(@RequestParam(value = "id") Long id) {
         try {
             FieldCategoryDetailVO vo = tbFieldCategoryService.getDetailsById(id);
             return R.ok(vo);
@@ -121,7 +121,7 @@
      */
     @DeleteMapping("/delete-children")
     @ApiOperation("编辑页面删除子字段分类")
-    public R<Object> deleteChildren(@RequestParam(value = "id") Integer id){
+    public R<Object> deleteChildren(@RequestParam(value = "id") Long id){
         try {
             tbFieldCategoryService.deleteChildren(id);
         } catch (Exception e) {
@@ -141,7 +141,7 @@
      */
     @DeleteMapping("/delete")
     @ApiOperation("列表页面删除分类")
-    public R<Void> delete(@RequestParam(value = "id") Integer id){
+    public R<Void> delete(@RequestParam(value = "id") Long id){
         try {
             tbFieldCategoryService.delete(id);
         } catch (Exception e) {
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldController.java
index 6b0485b..f927e35 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldController.java
@@ -48,7 +48,7 @@
      */
     @GetMapping("/categories")
     @ApiOperation(value = "获取分类列表",notes = "一级分类id传0,二级分类传一级分类id,三级分类同理")
-    public R<List<FieldCategoryVO>> queryFieldCategories(@RequestParam Integer id) {
+    public R<List<FieldCategoryVO>> queryFieldCategories(@RequestParam Long id) {
         try {
             return R.ok(tbFieldCategoryService.queryFieldCategories(id));
         } catch (Exception e) {
@@ -82,7 +82,7 @@
 
     @GetMapping("/influenced-data")
     @ApiOperation("隐藏字段,获取同步隐藏的基础数据")
-    public R<String> influencedData(@RequestParam Integer id) {
+    public R<String> influencedData(@RequestParam Long id) {
         try {
             return R.ok(tbFieldService.influencedData(id));
         } catch (Exception e) {
@@ -159,7 +159,7 @@
      */
     @GetMapping("/get-details")
     @ApiOperation("获取详情")
-    public R<FieldVO> getDetails(@RequestParam Integer id){
+    public R<FieldVO> getDetails(@RequestParam Long id){
         try {
             TbField field = tbFieldService.getById(id);
             return R.ok(BeanUtils.copyBean(field, FieldVO.class));
@@ -179,7 +179,7 @@
      */
     @DeleteMapping("/delete")
     @ApiOperation("删除")
-    public R<Void> delete(@RequestParam Integer id){
+    public R<Void> delete(@RequestParam Long id){
         try {
             tbFieldService.removeById(id);
         } catch (Exception e) {
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/conveter/CountyFlagConverter.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/conveter/CountyFlagConverter.java
new file mode 100644
index 0000000..41d6cb4
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/conveter/CountyFlagConverter.java
@@ -0,0 +1,40 @@
+package com.ruoyi.web.controller.conveter;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.data.ReadCellData;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+import com.ruoyi.common.enums.DisabledEnum;
+
+/**
+ * @author mitao
+ * @date 2024/3/28
+ */
+public class CountyFlagConverter implements Converter<DisabledEnum> {
+    @Override
+    public Class<?> supportJavaTypeKey() {
+        return null;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return null;
+    }
+
+    @Override
+    public DisabledEnum convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        if (cellData.toString().equals("是")) {
+            return DisabledEnum.YES;
+        } else  {
+            return DisabledEnum.NO;
+        }
+    }
+
+
+    @Override
+    public WriteCellData<?> convertToExcelData(DisabledEnum value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        return Converter.super.convertToExcelData(value, contentProperty, globalConfiguration);
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/excel/DeptExcel.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/excel/DeptExcel.java
new file mode 100644
index 0000000..82cafff
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/excel/DeptExcel.java
@@ -0,0 +1,73 @@
+package com.ruoyi.web.controller.excel;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.enums.DisabledEnum;
+import com.ruoyi.web.controller.conveter.CountyFlagConverter;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 部门管理表
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-03-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="部门导入Excel对象")
+public class DeptExcel implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "部门地区")
+    @Excel(name = "部门地区")
+    @ExcelProperty(value = "部门地区",index = 0)
+    private String areaName;
+
+    @ApiModelProperty(value = "别名")
+    @Excel(name = "别名")
+    @ExcelProperty(value = "别名",index = 1)
+    private String areaAlias;
+
+    @ApiModelProperty(value = "区划代码")
+    @Excel(name = "区划代码")
+    @ExcelProperty(value = "区划代码",index = 2)
+    private String areaCode;
+
+    @ApiModelProperty(value = "级次(省、市、县)")
+    @Excel(name = "级次(省、市、县)")
+    @ExcelProperty(value = "级次 (省、市、县)",index = 3)
+    private String areaLevel;
+
+    @ApiModelProperty(value = "县级标志(不包含直辖市的区 0:否 1:是)")
+    @Excel(name = "县级标志 是/否",enumImportMethod = "getByDesc")
+    @ExcelProperty(value = "县级标志 是/否",index = 4,converter = CountyFlagConverter.class)
+    private DisabledEnum countyFlag;
+
+    @ApiModelProperty(value = "登录账号")
+    @Excel(name = "登录账号")
+    @ExcelProperty(value = "登录账号",index = 6)
+    private String userName;
+
+    @ApiModelProperty(value = "负责人姓名")
+    @ExcelProperty(value = "负责人姓名",index = 5)
+    private String personInCharge;
+
+    @ApiModelProperty(value = "联系电话")
+    @Excel(name = "联系电话")
+    @ExcelProperty(value = "联系电话",index = 7)
+    private String phoneNumber;
+
+    @ApiModelProperty(value = "登录密码")
+    @Excel(name = "登录密码")
+    @ExcelProperty(value = "登录密码",index = 8)
+    private String password;
+
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java
index df1c793..ae4b66e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java
@@ -10,7 +10,6 @@
 import org.springframework.stereotype.Component;
 
 import java.lang.reflect.Field;
-import java.time.LocalDateTime;
 import java.util.*;
 
 @Slf4j
@@ -57,7 +56,7 @@
                     //注入创建时间
                     if ("createTime".equals(field.getName())) {
                         field.setAccessible(true);
-                        field.set(parameter, LocalDateTime.now());
+                        field.set(parameter, new Date());
                         field.setAccessible(false);
                     } 
                 } catch (Exception e) {
@@ -80,7 +79,7 @@
                     }
                     if ("updateTime".equals(field.getName())) {
                         field.setAccessible(true);
-                        field.set(parameter, LocalDateTime.now());
+                        field.set(parameter, new Date());
                         field.setAccessible(false);
                     }
                 } catch (Exception e) {
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/lisenter/DeptImportListener.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/lisenter/DeptImportListener.java
new file mode 100644
index 0000000..61e7071
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/lisenter/DeptImportListener.java
@@ -0,0 +1,93 @@
+package com.ruoyi.web.controller.lisenter;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.read.listener.ReadListener;
+import com.alibaba.excel.util.ListUtils;
+import com.alibaba.fastjson2.JSON;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.enums.UserTypeEnum;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.BeanUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.web.controller.excel.DeptExcel;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
+
+/**
+ * @author mitao
+ * @date 2024/3/28
+ */
+@Slf4j
+public class DeptImportListener implements ReadListener<DeptExcel> {
+    /**
+     * 每隔5条存储数据库,实际使用中可以100条,然后清理list ,方便内存回收
+     */
+    private static final int BATCH_COUNT = 2000;
+
+    /**
+     * 缓存的数据
+     */
+    private List<DeptExcel> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
+
+    public ISysUserService sysUserService;
+
+    public DeptImportListener() {
+    }
+
+    public DeptImportListener(ISysUserService sysUserService) {
+        this.sysUserService = sysUserService;
+    }
+
+    @Override
+    public void invoke(DeptExcel data, AnalysisContext context) {
+        log.info("解析到一条数据:{}", JSON.toJSONString(data));
+        if (StringUtils.isEmpty(data.getAreaName()) || StringUtils.isEmpty(data.getAreaCode()) ||
+                StringUtils.isEmpty(data.getAreaLevel()) || StringUtils.isNull(data.getCountyFlag()) ||
+                StringUtils.isEmpty(data.getPersonInCharge()) || StringUtils.isEmpty(data.getUserName()) ||
+                StringUtils.isEmpty(data.getPhoneNumber()) || StringUtils.isEmpty(data.getPassword())) {
+            throw new ServiceException(String.format("数据校验失败,请检查第%d行内容填写是否完整", cachedDataList.size()+1));
+        }
+        boolean flag = sysUserService.lambdaQuery().eq(SysUser::getUserType,UserTypeEnum.PLATFORM.getCode()).eq(SysUser::getUserName, data.getUserName()).oneOpt().isPresent();
+        if (flag) {
+            throw new ServiceException(String.format("数据校验失败,第%d行的登录账号:%s已存在", cachedDataList.size()+1,data.getUserName()));
+        }
+        flag = cachedDataList.stream().anyMatch(item -> item.getAreaCode().equals(data.getAreaCode()));
+        if (flag) {
+            throw new ServiceException(String.format("数据校验失败,第%d行区划代码%s重复", cachedDataList.size()+1,data.getAreaCode()));
+        }
+        flag = cachedDataList.stream().anyMatch(item -> item.getUserName().equals(data.getUserName()));
+        if (flag) {
+            throw new ServiceException(String.format("数据校验失败,第%d行登录账号%s重复", cachedDataList.size()+1,data.getAreaCode()));
+        }
+        cachedDataList.add(data);
+        // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
+        if (cachedDataList.size() >= BATCH_COUNT) {
+            saveData();
+            // 存储完成清理 list
+            cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
+        }
+    }
+
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+        log.info("所有数据解析完成!");
+        saveData();
+    }
+    private void saveData() {
+        log.info("{}条数据,开始存储数据库!", cachedDataList.size());
+        List<SysUser> sysUsers = BeanUtils.copyList(cachedDataList, SysUser.class);
+        sysUsers.forEach(item->{
+            item.setPassword(SecurityUtils.encryptPassword(item.getPassword()));
+            item.setNickName(item.getAreaName());
+            item.setUserType("2");
+        });
+        sysUserService.remove(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUserType, UserTypeEnum.DEPARTMENT.getCode()));
+        sysUserService.saveBatch(sysUsers);
+        log.info("{}条数据,导入成功!", cachedDataList.size());
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
index be5af6a..84af5c3 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
@@ -63,9 +63,9 @@
         SysUser currentUser = loginUser.getUser();
         currentUser.setNickName(user.getNickName());
         currentUser.setEmail(user.getEmail());
-        currentUser.setPhonenumber(user.getPhonenumber());
+        currentUser.setPhoneNumber(user.getPhoneNumber());
         currentUser.setSex(user.getSex());
-        if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser))
+        if (StringUtils.isNotEmpty(user.getPhoneNumber()) && !userService.checkPhoneUnique(currentUser))
         {
             return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
         }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
index 310a24a..6a324bf 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -1,6 +1,5 @@
 package com.ruoyi.web.controller.system;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.common.core.controller.BaseController;
@@ -14,19 +13,21 @@
 import com.ruoyi.framework.web.service.TokenService;
 import com.ruoyi.system.dto.SysUserUpdateStatusDTO;
 import com.ruoyi.system.query.SysUserQuery;
-import com.ruoyi.system.service.*;
+import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.service.ISysRoleService;
+import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.system.vo.SysUserVO;
-import com.ruoyi.system.vo.UserAddListVO;
-import com.ruoyi.system.vo.UserLevelVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -65,7 +66,7 @@
     @PostMapping("/listNotPage")
     public AjaxResult listNotPage()
     {
-        List<SysUser> list = userService.selectList();
+        List<SysUser> list = userService.queryList();
         return AjaxResult.success(list);
     }
 
@@ -155,7 +156,7 @@
 //                if(StringUtils.isNotEmpty(name) && type == 3){
 //                    users = sysUsers.stream().filter(e -> userLevelVO1.getKey().equals(e.getDeptId())
 //                            && ((StringUtils.isNotEmpty(e.getNickName()) && e.getNickName().contains(name)))
-//                            || (StringUtils.isNotEmpty(e.getPhonenumber()) && e.getPhonenumber().contains(name))).collect(Collectors.toList());
+//                            || (StringUtils.isNotEmpty(e.getPhoneNumber()) && e.getPhoneNumber().contains(name))).collect(Collectors.toList());
 //                }else {
 //                    users = sysUsers.stream().filter(e -> userLevelVO1.getKey().equals(e.getDeptId())).collect(Collectors.toList());
 //                }
@@ -270,12 +271,12 @@
     @PostMapping("/add")
     public AjaxResult add(@Validated @RequestBody SysUser user)
     {
-        user.setUserName(user.getPhonenumber());
+        user.setUserName(user.getPhoneNumber());
         if (!userService.checkUserNameUnique(user))
         {
             return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
         }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
+        else if (StringUtils.isNotEmpty(user.getPhoneNumber()) && !userService.checkPhoneUnique(user))
         {
             return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
         }
@@ -294,14 +295,14 @@
     @PostMapping("/edit")
     public AjaxResult edit(@Validated @RequestBody SysUser user)
     {
-        user.setUserName(user.getPhonenumber());
+        user.setUserName(user.getPhoneNumber());
 //        userService.checkUserAllowed(user);
 //        userService.checkUserDataScope(user.getUserId());
         if (!userService.checkUserNameUnique(user))
         {
             return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
         }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
+        else if (StringUtils.isNotEmpty(user.getPhoneNumber()) && !userService.checkPhoneUnique(user))
         {
             return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
         }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/DataUpdateHandlerConfig.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/DataUpdateHandlerConfig.java
index 7b7dba6..8249197 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/config/DataUpdateHandlerConfig.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/DataUpdateHandlerConfig.java
@@ -1,9 +1,12 @@
 package com.ruoyi.common.config;
 
 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import com.ruoyi.common.utils.SecurityUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.ibatis.reflection.MetaObject;
 import org.springframework.context.annotation.Configuration;
+
+import java.util.Date;
 
 /**
  * @author xiaochen
@@ -26,6 +29,8 @@
      */
     @Override
     public void insertFill(MetaObject metaObject) {
+        this.strictInsertFill(metaObject, "createTime", Date.class, new Date()); // 起始版本 3.3.0(推荐使用)
+        this.strictInsertFill(metaObject, "createBy", String.class, SecurityUtils.getUsername()); // 起始版本 3.3.0(推荐使用)
         //  获取登录信息
        /* String userName = JwtTokenUtils.getUsername();
         if (StringUtils.isNotBlank(userName)) {
@@ -44,6 +49,8 @@
      */
     @Override
     public void updateFill(MetaObject metaObject) {
+        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date()); // 起始版本 3.3.0(推荐)
+        this.strictUpdateFill(metaObject, "updateBy", String.class, SecurityUtils.getUsername()); // 起始版本 3.3.0(推荐)
         //  获取登录信息
         /*String userName = JwtTokenUtils.getUsername();
         if (StringUtils.isNotBlank(userName)) {
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
index 96b149c..bd7fa1a 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
@@ -74,5 +74,5 @@
      * 密码长度限制
      */
     public static final int PASSWORD_MIN_LENGTH = 5;
-    public static final int PASSWORD_MAX_LENGTH = 20;
+    public static final int PASSWORD_MAX_LENGTH = 40;
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java
index 15bf66b..50ead5e 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java
@@ -1,12 +1,14 @@
 package com.ruoyi.common.core.domain;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
 import java.io.Serializable;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonInclude;
 
 /**
  * Entity基类
@@ -19,27 +21,34 @@
 
     /** 搜索值 */
     @JsonIgnore
+    @TableField(exist = false)
     private String searchValue;
 
     /** 创建者 */
+    @TableField("create_by")
     private String createBy;
 
     /** 创建时间 */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField("create_time")
     private Date createTime;
 
     /** 更新者 */
+    @TableField("update_by")
     private String updateBy;
 
     /** 更新时间 */
+    @TableField("update_time")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
 
     /** 备注 */
+    @TableField("remark")
     private String remark;
 
     /** 请求参数 */
     @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    @TableField(exist = false)
     private Map<String, Object> params;
 
     public String getSearchValue()
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
index b49a187..6f9439e 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -1,19 +1,22 @@
 package com.ruoyi.common.core.domain.entity;
 
-import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-import javax.validation.constraints.*;
-
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+import com.ruoyi.common.enums.DisabledEnum;
+import com.ruoyi.common.xss.Xss;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import com.ruoyi.common.core.domain.BaseEntity;
-import com.ruoyi.common.xss.Xss;
+
+import javax.validation.constraints.Email;
+import javax.validation.constraints.Size;
+import java.util.Date;
+import java.util.List;
 
 /**
  * 用户对象 sys_user
@@ -21,6 +24,7 @@
  * @author ruoyi
  */
 @Data
+@TableName("sys_user")
 public class SysUser extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
@@ -28,65 +32,82 @@
     /** 用户ID */
     //@Excel(name = "用户序号", cellType = ColumnType.NUMERIC, prompt = "用户编号")
     @ApiModelProperty(value = "用户id")
+    @TableId(value = "user_id", type = IdType.AUTO)
     @TableField("user_id")
     private Long userId;
 
     /** 部门ID */
     //@Excel(name = "部门编号", type = Type.IMPORT)
     @ApiModelProperty(value = "部门id")
+    @TableField("dept_id")
     private Long deptId;
+
+    @ApiModelProperty(value = "用户类型")
+    @TableField("user_type")
+    private String userType;
 
     /** 用户账号 */
     //@Excel(name = "登录名称")
     @ApiModelProperty(value = "登录名称")
+    @TableField("user_name")
     private String userName;
 
     /** 用户昵称 */
     //@Excel(name = "用户名称")
     @ApiModelProperty(value = "用户名称")
+    @TableField("nick_name")
     private String nickName;
 
     /** 用户邮箱 */
     //@Excel(name = "用户邮箱")
     @ApiModelProperty(value = "用户邮箱")
+    @TableField("email")
     private String email;
 
     /** 手机号码 */
     //@Excel(name = "手机号码")
     @ApiModelProperty(value = "手机号码")
-    private String phonenumber;
+    @TableField("phone_number")
+    private String phoneNumber;
 
     /** 用户性别 */
     //@Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知")
     @ApiModelProperty(value = "用户性别 0=男,1=女,2=未知")
+    @TableField("sex")
     private String sex;
 
     /** 用户头像 */
     @ApiModelProperty(value = "用户头像")
+    @TableField("avatar")
     private String avatar;
 
     /** 密码 */
     @ApiModelProperty(value = "密码")
+    @TableField("password")
     private String password;
 
     /** 帐号状态(0正常 1停用) */
     //@Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")
     @ApiModelProperty(value = "帐号状态  0=正常,1=停用")
+    @TableField("status")
     private String status;
 
     /** 删除标志(0代表存在 2代表删除) */
     @ApiModelProperty(value = "删除标志(0代表存在 2代表删除)")
+    @TableField("del_flag")
     private String delFlag;
 
     /** 最后登录IP */
     //@Excel(name = "最后登录IP", type = Type.EXPORT)
     @ApiModelProperty(value = "最后登录IP")
+    @TableField("login_ip")
     private String loginIp;
 
     /** 最后登录时间 */
     //@Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "最后登录时间")
+    @TableField("login_date")
     private Date loginDate;
 
     /** 部门对象 */
@@ -94,34 +115,64 @@
         //@Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT),
         //@Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT)
 //    })
+    @TableField(exist = false)
     @ApiModelProperty(value = "部门对象")
     private SysDept dept;
 
     /** 角色对象 */
+    @TableField(exist = false)
     @ApiModelProperty(value = "角色对象")
     private List<SysRole> roles;
 
     /** 角色组 */
+    @TableField(exist = false)
     @ApiModelProperty(value = "角色组")
     private Long[] roleIds;
 
     /** 岗位组 */
+    @TableField(exist = false)
     @ApiModelProperty(value = "岗位组")
     private Long[] postIds;
 
     /** 角色ID */
+    @TableField(exist = false)
     @ApiModelProperty(value = "角色ID")
     private Long roleId;
-    /**
-     * 是否为黑名单 1是 0否
-     */
-    @ApiModelProperty(value = "是否为黑名单 1是 0否")
-    private Integer ifBlack;
 
     @TableField(exist = false)
     private String roleName;
 
+    @TableField(exist = false)
     private String deptName;
+
+    @ApiModelProperty(value = "部门地区")
+    @TableField("area_name")
+    private String areaName;
+
+    @ApiModelProperty(value = "别名")
+    @TableField("area_alias")
+    private String areaAlias;
+
+    @ApiModelProperty(value = "区划代码")
+    @TableField("area_code")
+    private String areaCode;
+
+    @ApiModelProperty(value = "级次(省、市、县)")
+    @TableField("area_level")
+    private String areaLevel;
+
+    @ApiModelProperty(value = "县级标志(不包含直辖市的区 0:否 1:是)")
+    @TableField("county_flag")
+    private DisabledEnum countyFlag;
+
+    @ApiModelProperty(value = "负责人")
+    @TableField("person_in_charge")
+    private String personInCharge;
+
+    @ApiModelProperty(value = "是否重点关注(0:否 1:是)")
+    @TableField("focussed")
+    private DisabledEnum focussed;
+
 
     public String getRoleName() {
         return roleName;
@@ -208,14 +259,14 @@
     }
 
     @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符")
-    public String getPhonenumber()
+    public String getPhoneNumber()
     {
-        return phonenumber;
+        return phoneNumber;
     }
 
-    public void setPhonenumber(String phonenumber)
+    public void setPhoneNumber(String phoneNumber)
     {
-        this.phonenumber = phonenumber;
+        this.phoneNumber = phoneNumber;
     }
 
     public String getSex()
@@ -338,13 +389,6 @@
         this.roleId = roleId;
     }
 
-    public Integer getIfBlack() {
-        return ifBlack;
-    }
-
-    public void setIfBlack(Integer ifBlack) {
-        this.ifBlack = ifBlack;
-    }
 
     @Override
     public String toString() {
@@ -354,7 +398,7 @@
             .append("userName", getUserName())
             .append("nickName", getNickName())
             .append("email", getEmail())
-            .append("phonenumber", getPhonenumber())
+            .append("phoneNumber", getPhoneNumber())
             .append("sex", getSex())
             .append("avatar", getAvatar())
             .append("password", getPassword())
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/FieldInputTypeEnum.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/FieldInputTypeEnum.java
index ea64f42..49386a0 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/FieldInputTypeEnum.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/FieldInputTypeEnum.java
@@ -1,5 +1,7 @@
 package com.ruoyi.common.enums;
 
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
 import lombok.Getter;
 import lombok.AllArgsConstructor;
 @Getter
@@ -7,8 +9,9 @@
 public enum FieldInputTypeEnum {
 	MANUAL_INPUT(1, "手动输入"),
 	FIXED_CONTENT(2, "固定内容");
-
+	@EnumValue
 	private final Integer code;
+	@JsonValue
 	private final String desc;
 
 	public static FieldInputTypeEnum getEnumByCode(Integer code) {
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserTypeEnum.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserTypeEnum.java
new file mode 100644
index 0000000..aa3827e
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserTypeEnum.java
@@ -0,0 +1,22 @@
+package com.ruoyi.common.enums;
+
+import lombok.Getter;
+import lombok.AllArgsConstructor;
+@Getter
+@AllArgsConstructor
+public enum UserTypeEnum {
+	PLATFORM("1", "平台"),
+	DEPARTMENT("2", "部门");
+
+	private final String code;
+	private final String desc;
+
+	public static UserTypeEnum getEnumByCode(String code) {
+		for (UserTypeEnum e : UserTypeEnum.values()) {
+			if (e.code.equals(code)) {
+				return e;
+			}
+		}
+		return null;
+	}
+} 
\ No newline at end of file
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
index 5f5d764..a907a93 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
@@ -107,7 +107,7 @@
                 operLog.setUserId(loginUser.getUserId());
                 if(Objects.nonNull(loginUser.getUser())){
                     operLog.setNickName(loginUser.getUser().getNickName());
-                    operLog.setPhonenumber(loginUser.getUser().getPhonenumber());
+                    operLog.setPhoneNumber(loginUser.getUser().getPhoneNumber());
                     // 设置角色名称
                     SysRole sysRole = roleService.selectRoleByUserId(loginUser.getUserId());
                     if(Objects.nonNull(sysRole)){
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
index 8f74d14..e7cee1e 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -111,10 +111,10 @@
                 // 过滤请求
                 .authorizeRequests()
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
-                /*.antMatchers("/getPrivacyAgreement/{agreementType}","/applet/queryProtocolConfigByType","/applet/login","/login","/applet/queryProtocolConfigByType", "/register","/applet/getCode","/applet/loginCode","/applet/changepwd", "/captchaImage","/getCode","/loginCode","/operations/getBySingleNum/**",
-                        "/user/getUserInfoByNumber/**","/genAccount","/loginPwd").permitAll()*/
+                .antMatchers("/getPrivacyAgreement/{agreementType}","/applet/queryProtocolConfigByType","/applet/login","/login","/applet/queryProtocolConfigByType", "/register","/applet/getCode","/applet/loginCode","/applet/changepwd", "/captchaImage","/getCode","/loginCode","/operations/getBySingleNum/**",
+                        "/user/getUserInfoByNumber/**","/genAccount","/loginPwd").permitAll()
                 //放行所有
-                .antMatchers("/*/**").permitAll()
+                //.antMatchers("/*/**").permitAll()
                 // 静态资源,可匿名访问
                 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                 .antMatchers("/swagger-ui.html","/doc.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
index 88fbc3b..306fd18 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -1,6 +1,5 @@
 package com.ruoyi.framework.web.service;
 
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.common.constant.CacheConstants;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.constant.UserConstants;
@@ -17,7 +16,6 @@
 import com.ruoyi.framework.manager.AsyncManager;
 import com.ruoyi.framework.manager.factory.AsyncFactory;
 import com.ruoyi.framework.security.context.AuthenticationContextHolder;
-import com.ruoyi.system.domain.TbDept;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.system.service.TbDeptService;
@@ -77,7 +75,7 @@
         // 用户验证
         Authentication authentication = null;
         // 用户验证
-        SysUser user = userService.selectUserByUserName(username);
+        SysUser user = userService.selectPlatUserByUserName(username);
         if (StringUtils.isNull(user)){
             log.info("登录用户:{} 不存在.", username);
             throw new ServiceException(MessageUtils.message("user.not.exists"));
@@ -152,7 +150,7 @@
             throw new ServiceException("不可用短信验证码登录");
         }
         // 校验验证码
-        Object cacheObject = redisCache.getCacheObject(user.getPhonenumber());
+        Object cacheObject = redisCache.getCacheObject(user.getPhoneNumber());
         if(!code.equals(String.valueOf(cacheObject))){
             log.info("登录用户:{} 短信验证码错误{}", username,code);
             throw new ServiceException("短信验证码错误");
@@ -167,29 +165,29 @@
     /**
      * 登录验证
      *
-     * @param account       用户名
+     * @param username       用户名
      * @param password      密码
      * @param uuid          uuid
-     * @param loginBodyUuid
+
      * @return 结果
      */
-    public LoginUser loginPwd(String account, String password, String code, String uuid)
+    public LoginUser loginPwd(String username, String password, String code, String uuid)
     {
         // 验证码校验
-        validateCaptcha(account, code, uuid);
+        validateCaptcha(username, code, uuid);
         // 登录前置校验
-        loginPreCheck(account, password);
+        loginPreCheck(username, password);
         // 用户验证
         Authentication authentication = null;
         // 用户验证
-        TbDept dept = tbDeptService.getOne(Wrappers.<TbDept>lambdaQuery().eq(TbDept::getAccount, account));
-        if (StringUtils.isNull(dept)){
-            log.info("登录用户:{} 不存在.", account);
+        SysUser user = userService.selectDeptUserByUserName(username);
+        if (StringUtils.isNull(user)){
+            log.info("登录用户:{} 不存在.", username);
             throw new ServiceException(MessageUtils.message("user.not.exists"));
         }
         try
         {
-            UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(account, password);
+            UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password);
             AuthenticationContextHolder.setContext(authenticationToken);
             // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
             authentication = authenticationManager.authenticate(authenticationToken);
@@ -198,12 +196,12 @@
         {
             if (e instanceof BadCredentialsException)
             {
-                AsyncManager.me().execute(AsyncFactory.recordLogininfor(account, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
+                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
                 throw new UserPasswordNotMatchException();
             }
             else
             {
-                AsyncManager.me().execute(AsyncFactory.recordLogininfor(account, Constants.LOGIN_FAIL, e.getMessage()));
+                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
                 throw new ServiceException(e.getMessage());
             }
         }
@@ -211,7 +209,7 @@
         {
             AuthenticationContextHolder.clearContext();
         }
-        AsyncManager.me().execute(AsyncFactory.recordLogininfor(account, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
+        AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
         LoginUser loginUser = (LoginUser) authentication.getPrincipal();
         recordLoginInfo(loginUser.getUserId());
         // 生成token
@@ -295,4 +293,6 @@
         sysUser.setLoginDate(DateUtils.getNowDate());
         userService.updateUserProfile(sysUser);
     }
+
+
 }
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
index d4e744e..4cbe9cd 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
@@ -1,16 +1,5 @@
 package com.ruoyi.framework.web.service;
 
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-import javax.servlet.http.HttpServletRequest;
-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.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.stereotype.Component;
 import com.ruoyi.common.constant.CacheConstants;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.model.LoginUser;
@@ -24,6 +13,16 @@
 import io.jsonwebtoken.Claims;
 import io.jsonwebtoken.Jwts;
 import io.jsonwebtoken.SignatureAlgorithm;
+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.stereotype.Component;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 /**
  * token验证处理
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java
index 19b3ca0..f4cdcc1 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java
@@ -94,7 +94,7 @@
     @Excel(name = "角色名称")
     private String roleName;
     @Excel(name = "手机号")
-    private String phonenumber;
+    private String phoneNumber;
     @Excel(name = "用户id")
     private Long userId;
     @Excel(name = "操作人员名称")
@@ -124,12 +124,12 @@
         this.roleName = roleName;
     }
 
-    public String getPhonenumber() {
-        return phonenumber;
+    public String getPhoneNumber() {
+        return phoneNumber;
     }
 
-    public void setPhonenumber(String phonenumber) {
-        this.phonenumber = phonenumber;
+    public void setPhoneNumber(String phoneNumber) {
+        this.phoneNumber = phoneNumber;
     }
 
     public Long getUserId() {
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicData.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicData.java
index 612dcc6..c79f27a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicData.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicData.java
@@ -8,7 +8,7 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * <p>
@@ -28,7 +28,7 @@
 
     @ApiModelProperty(value = "分类id")
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "季度")
     @TableField("quarter")
@@ -60,20 +60,20 @@
     private String delFlag;
 
     @ApiModelProperty(value = "创建人")
-    @TableField("create_by")
+    @TableField(value = "create_by", fill = FieldFill.INSERT)
     private String createBy;
 
     @ApiModelProperty(value = "创建时间")
     @TableField(value = "create_time", fill = FieldFill.INSERT)
-    private LocalDateTime createTime;
+    private Date createTime;
 
     @ApiModelProperty(value = "更新人")
-    @TableField("update_by")
+    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
     private String updateBy;
 
     @ApiModelProperty(value = "更新时间")
     @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
-    private LocalDateTime updateTime;
+    private Date updateTime;
 
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataCategory.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataCategory.java
index 83d941d..e5c327d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataCategory.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataCategory.java
@@ -8,7 +8,7 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * <p>
@@ -28,7 +28,7 @@
 
     @ApiModelProperty(value = "基础数据分类id")
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "基础数据分类名称")
     @TableField("basic_data_category_name")
@@ -44,20 +44,20 @@
     private String delFlag;
 
     @ApiModelProperty(value = "创建者")
-    @TableField("create_by")
+    @TableField(value = "create_by", fill = FieldFill.INSERT)
     private String createBy;
 
     @ApiModelProperty(value = "创建时间")
     @TableField(value = "create_time", fill = FieldFill.INSERT)
-    private LocalDateTime createTime;
+    private Date createTime;
 
     @ApiModelProperty(value = "更新者")
-    @TableField("update_by")
+    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
     private String updateBy;
 
     @ApiModelProperty(value = "更新时间")
     @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
-    private LocalDateTime updateTime;
+    private Date updateTime;
 
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfig.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfig.java
index 953d132..19211c5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfig.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfig.java
@@ -9,7 +9,7 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * <p>
@@ -29,7 +29,7 @@
 
     @ApiModelProperty(value = "基础数据配置id")
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "基础数据分类id")
     @TableField("basic_data_category_id")
@@ -65,20 +65,20 @@
     private String delFlag;
 
     @ApiModelProperty(value = "创建者")
-    @TableField("create_by")
+    @TableField(value = "create_by", fill = FieldFill.INSERT)
     private String createBy;
 
     @ApiModelProperty(value = "创建时间")
     @TableField(value = "create_time", fill = FieldFill.INSERT)
-    private LocalDateTime createTime;
+    private Date createTime;
 
     @ApiModelProperty(value = "创建者")
-    @TableField("update_by")
+    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
     private String updateBy;
 
     @ApiModelProperty(value = "创建时间")
     @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
-    private LocalDateTime updateTime;
+    private Date updateTime;
 
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfigDetail.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfigDetail.java
index b67b763..46215f6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfigDetail.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfigDetail.java
@@ -29,11 +29,11 @@
 
     @ApiModelProperty(value = "id")
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "基础数据配置id")
     @TableField("basic_data_config_id")
-    private Integer basicDataConfigId;
+    private Long basicDataConfigId;
 
     @ApiModelProperty(value = "键")
     @TableField("key")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataField.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataField.java
index 57f4636..24a8b0f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataField.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataField.java
@@ -7,7 +7,7 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * <p>
@@ -27,35 +27,35 @@
 
     @ApiModelProperty(value = "动态字段id")
     @TableId(value = "id",type = IdType.AUTO)
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "基础数据id")
     @TableField("basic_data_id")
-    private Integer basicDataId;
+    private Long basicDataId;
 
     @ApiModelProperty(value = "字段id")
     @TableField("field_id")
-    private Integer fieldId;
+    private Long fieldId;
 
     @ApiModelProperty(value = "字段值")
     @TableField("field_value")
     private String fieldValue;
 
     @ApiModelProperty(value = "创建人")
-    @TableField("create_by")
+    @TableField(value = "create_by", fill = FieldFill.INSERT)
     private String createBy;
 
     @ApiModelProperty(value = "创建时间")
     @TableField(value = "create_time", fill = FieldFill.INSERT)
-    private LocalDateTime createTime;
+    private Date createTime;
 
     @ApiModelProperty(value = "更新人")
-    @TableField("update_by")
+    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
     private String updateBy;
 
     @ApiModelProperty(value = "更新时间")
     @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
-    private LocalDateTime updateTime;
+    private Date updateTime;
 
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbDataScreenConfig.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbDataScreenConfig.java
index d036394..cd4e1ca 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbDataScreenConfig.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbDataScreenConfig.java
@@ -7,7 +7,7 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * <p>
@@ -27,15 +27,15 @@
 
     @ApiModelProperty(value = "大屏数据配置id")
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "配置类型(1=风险等级设置 2=数据指标设置 3=形式指标设置)")
     @TableField("type")
     private Boolean type;
 
     @ApiModelProperty(value = "得分计算规则(多个规则使用','隔开)")
-    @TableField("caculate_formula")
-    private String caculateFormula;
+    @TableField("calculate_formula")
+    private String calculateFormula;
 
     @ApiModelProperty(value = "配置类型子类型(1=数据指标一/形式指标一 2=数据指标二/形式指标二 3=数据指标三/形式指标三 4=数据指标四/形式指标四)")
     @TableField("sub_type")
@@ -47,20 +47,20 @@
     private String delFlag;
 
     @ApiModelProperty(value = "创建者")
-    @TableField("create_by")
+    @TableField(value = "create_by", fill = FieldFill.INSERT)
     private String createBy;
 
     @ApiModelProperty(value = "创建时间")
     @TableField(value = "create_time", fill = FieldFill.INSERT)
-    private LocalDateTime createTime;
+    private Date createTime;
 
     @ApiModelProperty(value = "创建者")
-    @TableField("update_by")
+    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
     private String updateBy;
 
     @ApiModelProperty(value = "更新时间")
     @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
-    private LocalDateTime updateTime;
+    private Date updateTime;
 
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbDept.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbDept.java
index 9bab699..5727c18 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbDept.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbDept.java
@@ -9,7 +9,7 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * <p>
@@ -29,7 +29,7 @@
 
     @ApiModelProperty(value = "部门id")
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "部门地区")
     @TableField("area_name")
@@ -81,20 +81,50 @@
     private Integer focussed;
 
     @ApiModelProperty(value = "创建者")
-    @TableField("create_by")
+    @TableField(value = "create_by", fill = FieldFill.INSERT)
     private String createBy;
 
     @ApiModelProperty(value = "创建时间")
     @TableField(value = "create_time", fill = FieldFill.INSERT)
-    private LocalDateTime createTime;
+    private Date createTime;
 
     @ApiModelProperty(value = "更新者")
-    @TableField("update_by")
+    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
     private String updateBy;
 
     @ApiModelProperty(value = "更新时间")
     @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
-    private LocalDateTime updateTime;
+    private Date updateTime;
 
 
+    /**
+     * 用户唯一标识
+     */
+    @TableField(exist = false)
+    private String token;
+
+    /**
+     * 登录IP地址
+     */
+    @TableField(exist = false)
+    private String ipaddr;
+
+    /**
+     * 登录地点
+     */
+    @TableField(exist = false)
+    private String loginLocation;
+
+    /**
+     * 浏览器类型
+     */
+    @TableField(exist = false)
+    private String browser;
+
+    /**
+     * 操作系统
+     */
+    @TableField(exist = false)
+    private String os;
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbField.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbField.java
index 9e6d061..36838f1 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbField.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbField.java
@@ -1,6 +1,8 @@
 package com.ruoyi.system.domain;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.ruoyi.common.enums.FieldInputTypeEnum;
+import com.ruoyi.common.enums.FieldTypeEnum;
 import com.ruoyi.common.enums.ShowStatusEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -8,7 +10,7 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * <p>
@@ -28,7 +30,7 @@
 
     @ApiModelProperty(value = "字段id")
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "字段名")
     @TableField("field_name")
@@ -36,19 +38,19 @@
 
     @ApiModelProperty(value = "字段类型(1=数字 2=文本 3=百分比)")
     @TableField("field_type")
-    private Integer fieldType;
+    private FieldTypeEnum fieldType;
 
     @ApiModelProperty(value = "一级分类id")
     @TableField("level_one_category_id")
-    private Integer levelOneCategoryId;
+    private Long levelOneCategoryId;
 
     @ApiModelProperty(value = "二级分类id")
     @TableField("level_two_category_id")
-    private Integer levelTwoCategoryId;
+    private Long levelTwoCategoryId;
 
     @ApiModelProperty(value = "三级分类id")
     @TableField("level_three_category_id")
-    private Integer levelThreeCategoryId;
+    private Long levelThreeCategoryId;
 
     @ApiModelProperty(value = "一级分类")
     @TableField("level_one_category")
@@ -76,7 +78,7 @@
 
     @ApiModelProperty(value = "文本输入类型(1=手动输入 2=固定内容)")
     @TableField("text_input_type")
-    private Integer textInputType;
+    private FieldInputTypeEnum textInputType;
 
     @ApiModelProperty(value = "文本最少字数")
     @TableField("text_min_num")
@@ -96,20 +98,20 @@
     private String delFlag;
 
     @ApiModelProperty(value = "创建者")
-    @TableField("create_by")
+    @TableField(value = "create_by", fill = FieldFill.INSERT)
     private String createBy;
 
     @ApiModelProperty(value = "创建时间")
     @TableField(value = "create_time", fill = FieldFill.INSERT)
-    private LocalDateTime createTime;
+    private Date createTime;
 
     @ApiModelProperty(value = "更新者")
-    @TableField("update_by")
+    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
     private String updateBy;
 
     @ApiModelProperty(value = "更新时间")
     @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
-    private LocalDateTime updateTime;
+    private Date updateTime;
 
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbFieldCategory.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbFieldCategory.java
index b924e7a..9bbfafd 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbFieldCategory.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbFieldCategory.java
@@ -8,7 +8,7 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * <p>
@@ -28,11 +28,11 @@
 
     @ApiModelProperty(value = "分类id")
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "父级id")
     @TableField("parent_id")
-    private Integer parentId;
+    private Long parentId;
 
     @ApiModelProperty(value = "分类名称")
     @TableField("field_category_name")
@@ -52,20 +52,20 @@
     private String delFlag;
 
     @ApiModelProperty(value = "创建人")
-    @TableField("create_by")
+    @TableField(value = "create_by", fill = FieldFill.INSERT)
     private String createBy;
 
     @ApiModelProperty(value = "创建时间")
     @TableField(value = "create_time", fill = FieldFill.INSERT)
-    private LocalDateTime createTime;
+    private Date createTime;
 
     @ApiModelProperty(value = "更新人")
-    @TableField("update_by")
+    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
     private String updateBy;
 
     @ApiModelProperty(value = "更新时间")
     @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
-    private LocalDateTime updateTime;
+    private Date updateTime;
 
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbQuestion.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbQuestion.java
index 9eb0f7b..81c05b5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbQuestion.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbQuestion.java
@@ -7,7 +7,7 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * <p>
@@ -27,7 +27,7 @@
 
     @ApiModelProperty(value = "问题id")
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "问题标题")
     @TableField("title")
@@ -43,20 +43,20 @@
     private String delFlag;
 
     @ApiModelProperty(value = "创建者")
-    @TableField("create_by")
+    @TableField(value = "create_by", fill = FieldFill.INSERT)
     private String createBy;
 
     @ApiModelProperty(value = "创建时间")
     @TableField(value = "create_time", fill = FieldFill.INSERT)
-    private LocalDateTime createTime;
+    private Date createTime;
 
     @ApiModelProperty(value = "更新者")
-    @TableField("update_by")
+    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
     private String updateBy;
 
     @ApiModelProperty(value = "更新时间")
     @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
-    private LocalDateTime updateTime;
+    private Date updateTime;
 
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbScore.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbScore.java
index 21aae3c..ff3fb99 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbScore.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbScore.java
@@ -7,7 +7,7 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * <p>
@@ -27,15 +27,15 @@
 
     @ApiModelProperty(value = "得分id")
     @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "计算类型id")
     @TableField("basic_data_config_id")
-    private Integer basicDataConfigId;
+    private Long basicDataConfigId;
 
     @ApiModelProperty(value = "所属基础数据id")
     @TableField("basic_data_id")
-    private Integer basicDataId;
+    private Long basicDataId;
 
     @ApiModelProperty(value = "得分")
     @TableField("score")
@@ -47,20 +47,20 @@
     private String delFlag;
 
     @ApiModelProperty(value = "创建者")
-    @TableField("create_by")
+    @TableField(value = "create_by", fill = FieldFill.INSERT)
     private String createBy;
 
     @ApiModelProperty(value = "创建时间")
     @TableField(value = "create_time", fill = FieldFill.INSERT)
-    private LocalDateTime createTime;
+    private Date createTime;
 
     @ApiModelProperty(value = "更新者")
-    @TableField("update_by")
+    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
     private String updateBy;
 
     @ApiModelProperty(value = "更新时间")
     @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
-    private LocalDateTime updateTime;
+    private Date updateTime;
 
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataConfigDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataConfigDTO.java
index c0abdc7..1226df9 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataConfigDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataConfigDTO.java
@@ -25,7 +25,7 @@
 
     @ApiModelProperty(value = "基础数据分类id")
     @NotNull(message = "基础数据分类id不能为空")
-    private Integer basicDataCategoryId;
+    private Long basicDataCategoryId;
 
     @ApiModelProperty(value = "字段说明")
     @NotBlank(message = "字段说明不能为空")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataDTO.java
index 842e0f9..b5fa1aa 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataDTO.java
@@ -15,10 +15,6 @@
 @ApiModel(value = "当前季度基础数据数据传输对象")
 public class BasicDataDTO {
 
-    //TODO 登录功能好了之后删掉
-    @ApiModelProperty(value = "区划代码")
-    private String deptAreaCode;
-
     @ApiModelProperty(value = "转移支付规模")
     private String transferPaymentScale;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataFieldDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataFieldDTO.java
index b74a7e6..9e40e64 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataFieldDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataFieldDTO.java
@@ -13,7 +13,7 @@
 public class BasicDataFieldDTO {
 
     @ApiModelProperty(value = "字段id")
-    private Integer fieldId;
+    private Long fieldId;
 
     @ApiModelProperty(value = "字段值")
     private String fieldValue;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/FieldDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/FieldDTO.java
index caa97ee..3bfef1b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/FieldDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/FieldDTO.java
@@ -1,5 +1,7 @@
 package com.ruoyi.system.dto;
 
+import com.ruoyi.common.enums.FieldInputTypeEnum;
+import com.ruoyi.common.enums.FieldTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -22,19 +24,19 @@
     @NotBlank(message="字段名不能为空")
     private String fieldName;
 
-    @ApiModelProperty(value = "字段类型(1=数字 2=文本 3=百分比)")
+    @ApiModelProperty(value = "字段类型(1=数字 2=文本 3=百分比)直接传文字")
     @NotNull(message="字段类型不能为空")
-    private Integer fieldType;
+    private FieldTypeEnum fieldType;
 
     @ApiModelProperty(value = "一级分类id")
     @NotNull(message="分类id不能为空")
-    private Integer levelOneCategoryId;
+    private Long levelOneCategoryId;
 
     @ApiModelProperty(value = "二级分类id")
-    private Integer levelTwoCategoryId;
+    private Long levelTwoCategoryId;
 
     @ApiModelProperty(value = "三级分类id")
-    private Integer levelThreeCategoryId;
+    private Long levelThreeCategoryId;
 
     @ApiModelProperty(value = "数字最小值")
     private Integer numMin;
@@ -42,8 +44,8 @@
     @ApiModelProperty(value = "数字最大值")
     private Integer numMax;
 
-    @ApiModelProperty(value = "文本输入类型(1=手动输入 2=固定内容)")
-    private Integer textInputType;
+    @ApiModelProperty(value = "文本输入类型(1=手动输入 2=固定内容)直接传文字")
+    private FieldInputTypeEnum textInputType;
 
     @ApiModelProperty(value = "文本最少字数")
     private Integer textMinNum;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/ShowHideDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/ShowHideDTO.java
index 6a93277..28ec4d9 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/ShowHideDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/ShowHideDTO.java
@@ -20,7 +20,7 @@
 
     @ApiModelProperty(value = "分类id")
     @NotNull(message = "id不能为空")
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "状态 (直接传 展示中 或 已隐藏)")
     @NotNull(message = "status不能为空")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/SysUserUpdateStatusDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/SysUserUpdateStatusDTO.java
index 57f6eec..c64ae5b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/SysUserUpdateStatusDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/SysUserUpdateStatusDTO.java
@@ -10,6 +10,8 @@
 @ApiModel(value = "用户修改状态DTO")
 public class SysUserUpdateStatusDTO implements Serializable {
 
+    private static final long serialVersionUID = 1334686713880506731L;
+
     @ApiModelProperty(value = "用户id")
     private Long userId;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataCategoryUpdateDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataCategoryUpdateDTO.java
index 2494bdf..4d49cae 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataCategoryUpdateDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataCategoryUpdateDTO.java
@@ -20,7 +20,7 @@
 
     @ApiModelProperty(value = "id")
     @NotNull(message = "id不能为空")
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "分类名称")
     @NotBlank(message = "分类名称不能为空")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataConfigUpdateDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataConfigUpdateDTO.java
index 0cb7d84..0771454 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataConfigUpdateDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataConfigUpdateDTO.java
@@ -19,7 +19,7 @@
 
     @ApiModelProperty(value = "id")
     @NotNull(message = "id不能为空")
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "类型名称")
     @NotBlank(message = "类型名称不能为空")
@@ -27,7 +27,7 @@
 
     @ApiModelProperty(value = "基础数据分类id")
     @NotNull(message = "基础数据分类id不能为空")
-    private Integer basicDataCategoryId;
+    private Long basicDataCategoryId;
 
     @ApiModelProperty(value = "字段说明")
     @NotBlank(message = "字段说明不能为空")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptFocusDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptFocusDTO.java
index 8e74c4f..8f36cae 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptFocusDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptFocusDTO.java
@@ -1,5 +1,6 @@
 package com.ruoyi.system.dto.update;
 
+import com.ruoyi.common.enums.DisabledEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -18,10 +19,10 @@
     private static final long serialVersionUID = -7322348219193526224L;
 
     @ApiModelProperty(value = "部门id")
-    @NotNull(message = "id不能为空")
-    private Integer id;
+    @NotNull(message = "userId不能为空")
+    private Long userId;
 
-    @ApiModelProperty(value = "是否重点关注(0:否 1:是)")
+    @ApiModelProperty(value = "是否重点关注 传 是/否")
     @NotNull(message = "是否重点关注不能为空")
-    private Integer focussed;
+    private DisabledEnum focussed;
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptUpdateDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptUpdateDTO.java
index faa33c9..b2652f6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptUpdateDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptUpdateDTO.java
@@ -19,8 +19,8 @@
     private static final long serialVersionUID = -4377907033147587467L;
 
     @ApiModelProperty(value = "部门id")
-    @NotNull(message = "id不能为空")
-    private Integer id;
+    @NotNull(message = "userId不能为空")
+    private Long userId;
 
     @ApiModelProperty(value = "别名")
     @NotBlank(message = "别名不能为空")
@@ -32,11 +32,11 @@
 
     @ApiModelProperty(value = "联系电话")
     @NotBlank(message = "联系电话不能为空")
-    private String phone;
+    private String phoneNumber;
 
     @ApiModelProperty(value = "登录账号")
     @NotBlank(message = "登录账号不能为空")
-    private String account;
+    private String userName;
 
     @ApiModelProperty(value = "登录密码")
     @NotBlank(message = "登录密码不能为空")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldCategoryUpdateDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldCategoryUpdateDTO.java
index e465235..d31771b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldCategoryUpdateDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldCategoryUpdateDTO.java
@@ -18,7 +18,7 @@
 
     @ApiModelProperty(value = "id")
     @NotNull(message = "id不能为空")
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "一级分类名称")
     @NotBlank(message = "分类名称不能为空")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldUpdateDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldUpdateDTO.java
index 1562c03..cf0c10f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldUpdateDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldUpdateDTO.java
@@ -17,7 +17,7 @@
 
     @ApiModelProperty(value = "id")
     @NotNull(message = "id不能为空")
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "字段名")
     @NotBlank(message="字段名不能为空")
@@ -29,13 +29,13 @@
 
     @ApiModelProperty(value = "一级分类id")
     @NotNull(message="分类id不能为空")
-    private Integer levelOneCategoryId;
+    private Long levelOneCategoryId;
 
     @ApiModelProperty(value = "二级分类id")
-    private Integer levelTwoCategoryId;
+    private Long levelTwoCategoryId;
 
     @ApiModelProperty(value = "三级分类id")
-    private Integer levelThreeCategoryId;
+    private Long levelThreeCategoryId;
 
     @ApiModelProperty(value = "数字最小值")
     private Integer numMin;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/DeptExcel.java b/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/DeptExcel.java
index 81bea78..a059273 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/DeptExcel.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/DeptExcel.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.importExcel;
 
 import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.ruoyi.common.enums.DisabledEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -44,14 +45,13 @@
     @Excel(name = "县级标志 是/否",enumImportMethod = "getByDesc")
     private DisabledEnum countyFlag;
 
-    @ApiModelProperty(value = "负责人")
-    @Excel(name = "负责人")
-    private String personInCharge;
-
     @ApiModelProperty(value = "登录账号")
     @Excel(name = "登录账号")
     private String account;
 
+    @ApiModelProperty(value = "负责人姓名")
+    private String personInCharge;
+
     @ApiModelProperty(value = "联系电话")
     @Excel(name = "联系电话")
     private String phone;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/listener/BasicDataListener.java b/ruoyi-system/src/main/java/com/ruoyi/system/listener/BasicDataListener.java
index b38a865..d08192d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/listener/BasicDataListener.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/listener/BasicDataListener.java
@@ -16,7 +16,6 @@
 
 import java.time.LocalDate;
 import java.util.*;
-import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -29,7 +28,7 @@
     public TbBasicDataService tbBasicDataService;
     public List<TbField> fieldList;
     public TbFieldService tbFieldService;
-    public TbDept dept;
+    public String areaCode;
     public TbBasicDataFieldService tbBasicDataFieldService;
     public TbBasicDataConfigService tbBasicDataConfigService;
     public TbBasicDataConfigDetailService tbBasicDataConfigDetailService;
@@ -38,12 +37,12 @@
     }
 
     public BasicDataListener(TbBasicDataService tbBasicDataService, List<TbField> fieldList,TbFieldService tbFieldService,
-                             TbDept dept,TbBasicDataFieldService tbBasicDataFieldService,TbBasicDataConfigService tbBasicDataConfigService,
+                             String areaCode,TbBasicDataFieldService tbBasicDataFieldService,TbBasicDataConfigService tbBasicDataConfigService,
                              TbBasicDataConfigDetailService tbBasicDataConfigDetailService,TbScoreService tbScoreService ) {
         this.tbBasicDataService = tbBasicDataService;
         this.fieldList = fieldList;
         this.tbFieldService = tbFieldService;
-        this.dept = dept;
+        this.areaCode = areaCode;
         this.tbBasicDataFieldService = tbBasicDataFieldService;
         this.tbBasicDataConfigService = tbBasicDataConfigService;
         this.tbBasicDataConfigDetailService = tbBasicDataConfigDetailService;
@@ -70,7 +69,8 @@
     @Override
     public void doAfterAllAnalysed(AnalysisContext context) {
         try {
-            saveData();
+            TbBasicData tbBasicData = saveData();
+            calculateScore(tbBasicData);
         } catch (Exception e) {
             if (e instanceof ServiceException) {
                 throw new ServiceException(e.getMessage());
@@ -83,10 +83,9 @@
     /**
      * 加上存储数据库
      */
-    private void saveData() {
-        Map<Integer, String> headMap = cachedDataList.get(2);
-        Map<Integer, String> quarterMap = cachedDataList.get(4);
-        Map<Integer, String> dataMap = cachedDataList.get(5);
+    private TbBasicData saveData() {
+        Map<Integer, String> headMap = cachedDataList.get(cachedDataList.size()-3);
+        Map<Integer, String> dataMap = cachedDataList.get(cachedDataList.size()-1);
         log.info("{}条数据,开始存储数据库!", cachedDataList.size());
         log.info("表头:{}", JSON.toJSONString(headMap));
         log.info("填写的数据:{}", JSON.toJSONString(dataMap));
@@ -103,18 +102,30 @@
         LocalDate now = LocalDate.now();
         TbBasicData tbBasicData;
         Optional<TbBasicData> tbBasicDataOpt = tbBasicDataService.lambdaQuery().
-                eq(TbBasicData::getQuarter, String.format("%s年%s", now.getYear(), quarterMap.get(1)))
-                .eq(TbBasicData::getDeptAreaCode, dept.getAreaCode()).oneOpt();
+                eq(TbBasicData::getQuarter, String.format("%s年%s", now.getYear(), dataMap.get(1)))
+                .eq(TbBasicData::getDeptAreaCode, areaCode).oneOpt();
         tbBasicData = tbBasicDataOpt.orElseGet(TbBasicData::new);
-        tbBasicData.setQuarter(String.format("%s年%s", now.getYear(), quarterMap.get(1)));
+        tbBasicData.setQuarter(String.format("%s年%s", now.getYear(), dataMap.get(1)));
         tbBasicData.setTransferPaymentScale(dataMap.get(2));
         tbBasicData.setCurrentGdp(dataMap.get(3));
-        tbBasicData.setDeptAreaCode(dept.getAreaCode());
+        tbBasicData.setDeptAreaCode(areaCode);
         tbBasicData.setRemark(dataMap.get(remarkIndex));
         tbBasicData.setStatus(ReportingStatusEnum.MISSING_DATA);
         tbBasicDataService.saveOrUpdate(tbBasicData);
         tbBasicDataFieldService.remove(Wrappers.<TbBasicDataField>lambdaQuery().eq(TbBasicDataField::getBasicDataId, tbBasicData.getId()));
         List<TbBasicDataField> fields = new ArrayList<>();
+        //添加固定字段 转移支付规模、当期GDP
+        TbBasicDataField transferPaymentScale = new TbBasicDataField();
+        transferPaymentScale.setBasicDataId(tbBasicData.getId());
+        transferPaymentScale.setFieldId(-1L);
+        transferPaymentScale.setFieldValue(tbBasicData.getTransferPaymentScale());
+        fields.add(transferPaymentScale);
+
+        TbBasicDataField currentGdp = new TbBasicDataField();
+        currentGdp.setBasicDataId(tbBasicData.getId());
+        currentGdp.setFieldId(-2L);
+        currentGdp.setFieldValue(tbBasicData.getCurrentGdp());
+        fields.add(currentGdp);
         //遍历动态字段map
         for (Map.Entry<Integer, String> integerStringEntry : dynamicFieldsMap.entrySet()) {
             Optional<TbField> tbField = tbFieldService.lambdaQuery().eq(TbField::getFieldName, integerStringEntry.getValue())
@@ -129,17 +140,43 @@
                 fields.add(tbBasicDataField);
             }
         }
-        //异步执行批量保存
-        CompletableFuture.runAsync(() -> tbBasicDataFieldService.saveBatch(fields));
+        tbBasicDataFieldService.saveBatch(fields);
         tbBasicData.setStatus(ReportingStatusEnum.FILLED);
         tbBasicDataService.updateById(tbBasicData);
-        log.info(String.format("%s导入基础数据成功!", quarterMap.get(0)));
-        CompletableFuture.runAsync(() -> calculateScore(tbBasicData));
+        log.info(String.format("%s导入基础数据成功!", dataMap.get(0)));
+        return tbBasicData;
     }
-
+    private static String validateFields(Map.Entry<Integer, String> integerStringEntry, Map<Integer, String> dataMap, TbField field) {
+        String value = dataMap.get(integerStringEntry.getKey());
+        if (FieldTypeEnum.NUMBER.equals(field.getFieldType())) {
+            Integer numMin = field.getNumMin();
+            Integer numMax = field.getNumMax();
+            if (Objects.nonNull(numMin) && Objects.nonNull(numMax)) {
+                if (numMin > Integer.parseInt(value) || numMax < Integer.parseInt(value)) {
+                    throw new ServiceException(String.format("字段%s的内容不在%d~%d范围内", field.getFieldName(),numMin,numMax));
+                }
+            }
+        }
+        if (FieldInputTypeEnum.MANUAL_INPUT.equals(field.getTextInputType()) && FieldTypeEnum.TEXT.equals(field.getFieldType())) {
+            Integer textMinNum = field.getTextMinNum();
+            Integer textMaxNum = field.getTextMaxNum();
+            if (Objects.nonNull(textMinNum) && Objects.nonNull(textMaxNum)) {
+                if (textMinNum > value.length() || textMaxNum < value.length()) {
+                    throw new ServiceException(String.format("字段%s的内容长度超出%d~%d的范围", field.getFieldName(),textMinNum,textMaxNum));
+                }
+            }
+        }
+        if (FieldTypeEnum.PERCENTAGE.equals(field.getFieldType())) {
+            if (0 > Double.parseDouble(value) || 100 < Double.parseDouble(value)) {
+                throw new ServiceException(String.format("字段%s的内容不在0~100范围内", field.getFieldName()));
+            }
+        }
+        return value;
+    }
     private void calculateScore(TbBasicData tbBasicData) {
         //计算得分
-        List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().eq(TbBasicDataConfig::getStatus, ShowStatusEnum.SHOW).list();
+        List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery()
+                .eq(TbBasicDataConfig::getStatus, ShowStatusEnum.SHOW).list();
         if (CollectionUtils.isEmpty(list)) {
             throw new ServiceException("计算得分失败,平台未配置得分计算规则");
         }
@@ -159,10 +196,7 @@
                             .eq(TbBasicDataField::getBasicDataId, tbBasicData.getId())
                             .eq(TbBasicDataField::getFieldId, stringIntegerEntry.getValue())
                             .oneOpt();
-                    if (tbBasicDataField.isPresent()) {
-                        valueMap.put(stringIntegerEntry.getKey(), tbBasicDataField.get().getFieldValue());
-                    }
-
+                    tbBasicDataField.ifPresent(basicDataField -> valueMap.put(stringIntegerEntry.getKey(), basicDataField.getFieldValue()));
                 }
                 double score = CalculateUtil.calculate(numberCalculateFormula, valueMap);
                 TbScore tbScore = new TbScore();
@@ -211,33 +245,5 @@
                 }
             }
         }
-    }
-
-    private static String validateFields(Map.Entry<Integer, String> integerStringEntry, Map<Integer, String> dataMap, TbField field) {
-        String value = dataMap.get(integerStringEntry.getKey());
-        if (FieldTypeEnum.NUMBER.getCode().equals(field.getFieldType())) {
-            Integer numMin = field.getNumMin();
-            Integer numMax = field.getNumMax();
-            if (Objects.nonNull(numMin) && Objects.nonNull(numMax)) {
-                if (numMin > Integer.parseInt(value) || numMax < Integer.parseInt(value)) {
-                    throw new ServiceException(String.format("字段%s的内容不在%d~%d范围内", field.getFieldName(),numMin,numMax));
-                }
-            }
-        }
-        if (FieldInputTypeEnum.MANUAL_INPUT.getCode().equals(field.getTextInputType()) && FieldTypeEnum.TEXT.getCode().equals(field.getFieldType())) {
-            Integer textMinNum = field.getTextMinNum();
-            Integer textMaxNum = field.getTextMaxNum();
-            if (Objects.nonNull(textMinNum) && Objects.nonNull(textMaxNum)) {
-                if (textMinNum > value.length() || textMaxNum < value.length()) {
-                    throw new ServiceException(String.format("字段%s的内容长度超出%d~%d的范围", field.getFieldName(),textMinNum,textMaxNum));
-                }
-            }
-        }
-        if (FieldTypeEnum.PERCENTAGE.getCode().equals(field.getFieldType())) {
-            if (0 > Double.parseDouble(value) || 100 < Double.parseDouble(value)) {
-                throw new ServiceException(String.format("字段%s的内容不在0~100范围内", field.getFieldName()));
-            }
-        }
-        return value;
     }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
index a7bf907..edff75d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -1,13 +1,14 @@
 package com.ruoyi.system.mapper;
 
-import java.util.List;
-
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.system.query.SysUserQuery;
 import com.ruoyi.system.vo.SysUserVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
-import com.ruoyi.common.core.domain.entity.SysUser;
+
+import java.util.List;
 
 /**
  * 用户表 数据层
@@ -15,7 +16,7 @@
  * @author ruoyi
  */
 @Mapper
-public interface SysUserMapper
+public interface SysUserMapper extends BaseMapper<SysUser>
 {
     /**
      * 根据条件分页查询用户列表
@@ -118,10 +119,10 @@
     /**
      * 校验手机号码是否唯一
      *
-     * @param phonenumber 手机号码
+     * @param phoneNumber 手机号码
      * @return 结果
      */
-    public SysUser checkPhoneUnique(String phonenumber);
+    public SysUser checkPhoneUnique(String phoneNumber);
 
     /**
      * 校验email是否唯一
@@ -138,7 +139,7 @@
      */
     List<SysUser> selectUserByIds(@Param("userIds") List<Long> userIds);
 
-    List<SysUser> selectList();
+    List<SysUser> queryList();
 
     Integer selectCount(@Param("status") Integer status);
 
@@ -161,7 +162,7 @@
     List<SysUser> selectUserByUserNameList(@Param("names")List<String> names);
 //    UserInfoVo userInfo(@Param("id") Long userId);
 
-    SysUser selectByPhone(@Param("phonenumber") String phonenumber);
+    SysUser selectByPhone(@Param("phoneNumber") String phoneNumber);
 
 //    UserInfoVo getUserInfoBy(@Param("singleNum")String singleNum);
 
@@ -175,5 +176,9 @@
 
     void updatePassword(@Param("id") Long id,@Param("s") String s);
 
-    long selectIdByPhone(@Param("phonenumber") String phonenumber);
+    long selectIdByPhone(@Param("phoneNumber") String phoneNumber);
+
+    SysUser selectDeptUserByUserName(@Param("userName") String userName);
+
+    SysUser selectPlatUserByUserName(@Param("userName") String userName);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/DeptQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/DeptQuery.java
index 6faae3c..ce4f0bc 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/query/DeptQuery.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/DeptQuery.java
@@ -21,7 +21,7 @@
     private String areaName;
 
     @ApiModelProperty(value = "登录账号")
-    private String account;
+    private String userName;
 
     @ApiModelProperty(value = "联系电话")
     private String phone;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/ScoreQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/ScoreQuery.java
index 622cc9a..d85f297 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/query/ScoreQuery.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/ScoreQuery.java
@@ -24,5 +24,5 @@
     private FieldTypeEnum type;
 
     @ApiModelProperty(value = "基础数据Id",hidden = true)
-    private Integer basicDataId;
+    private Long basicDataId;
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/SysUserQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/SysUserQuery.java
index 8609862..8b44716 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/query/SysUserQuery.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/SysUserQuery.java
@@ -16,7 +16,7 @@
     private Integer roleId;
 
     @ApiModelProperty(value = "手机号")
-    private String phonenumber;
+    private String phoneNumber;
 
     @ApiModelProperty(value = "状态  0=正常 1=停用")
     private String status;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
index 4dd0046..ef1fcc7 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
@@ -1,18 +1,19 @@
 package com.ruoyi.system.service;
 
-import java.util.List;
-
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.system.query.SysUserQuery;
 import com.ruoyi.system.vo.SysUserVO;
+
+import java.util.List;
 
 /**
  * 用户 业务层
  * 
  * @author ruoyi
  */
-public interface ISysUserService
+public interface ISysUserService extends IService<SysUser>
 {
     /**
      * 根据条件分页查询用户列表
@@ -208,7 +209,7 @@
      */
     public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);
 
-    List<SysUser> selectList();
+    List<SysUser> queryList();
 
     Integer selectCount(Integer status);
 
@@ -231,7 +232,7 @@
 
 //    UserInfoVo userInfo(Long userId);
 
-    SysUser selectByPhone(String phonenumber);
+    SysUser selectByPhone(String phoneNumber);
     /**
      * 通过名字集合查询用户
      * @param names
@@ -260,5 +261,10 @@
 
     void updatePassword(Long id, String s);
 
-    long selectIdByPhone(String phonenumber);
+    long selectIdByPhone(String phoneNumber);
+
+    SysUser selectDeptUserByUserName(String userName);
+
+    SysUser selectPlatUserByUserName(String username);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbDeptService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbDeptService.java
index b3f34f9..bb6877c 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbDeptService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbDeptService.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.basic.PageDTO;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.system.domain.TbDept;
 import com.ruoyi.system.dto.update.DeptFocusDTO;
 import com.ruoyi.system.query.DeptQuery;
@@ -23,4 +24,8 @@
     void importExcel(MultipartFile file) throws Exception;
 
     void focus(DeptFocusDTO dto);
+
+    R<Void> reportingMessage();
+
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldCategoryService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldCategoryService.java
index 5392562..aa5285e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldCategoryService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldCategoryService.java
@@ -30,11 +30,11 @@
 
     void edit(FieldCategoryUpdateDTO dto);
 
-    void deleteChildren(Integer id);
+    void deleteChildren(Long id);
 
-    void delete(Integer id);
+    void delete(Long id);
 
-    List<FieldCategoryVO> queryFieldCategories(Integer id);
+    List<FieldCategoryVO> queryFieldCategories(Long id);
 
-    FieldCategoryDetailVO getDetailsById(Integer id);
+    FieldCategoryDetailVO getDetailsById(Long id);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldService.java
index 760a109..b64309a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldService.java
@@ -25,7 +25,7 @@
 
     PageDTO<FieldVO> queryPage(FieldQuery query);
 
-    String influencedData(Integer id);
+    String influencedData(Long id);
 
     void update(FieldUpdateDTO dto);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 7e34a04..161ec58 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -1,21 +1,8 @@
 package com.ruoyi.system.service.impl;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-import javax.validation.Validator;
-
-import com.ruoyi.common.basic.PageInfo;
-import com.ruoyi.system.query.SysUserQuery;
-import com.ruoyi.system.vo.SysUserVO;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.annotation.DataScope;
+import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
@@ -27,13 +14,23 @@
 import com.ruoyi.system.domain.SysPost;
 import com.ruoyi.system.domain.SysUserPost;
 import com.ruoyi.system.domain.SysUserRole;
-import com.ruoyi.system.mapper.SysPostMapper;
-import com.ruoyi.system.mapper.SysRoleMapper;
-import com.ruoyi.system.mapper.SysUserMapper;
-import com.ruoyi.system.mapper.SysUserPostMapper;
-import com.ruoyi.system.mapper.SysUserRoleMapper;
+import com.ruoyi.system.mapper.*;
+import com.ruoyi.system.query.SysUserQuery;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.system.vo.SysUserVO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import javax.validation.Validator;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * 用户 业务层处理
@@ -41,7 +38,7 @@
  * @author ruoyi
  */
 @Service
-public class SysUserServiceImpl implements ISysUserService
+public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser>  implements ISysUserService
 {
     private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
 
@@ -191,7 +188,7 @@
     public boolean checkPhoneUnique(SysUser user)
     {
         Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
-        SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber());
+        SysUser info = userMapper.checkPhoneUnique(user.getPhoneNumber());
         if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
         {
             return UserConstants.NOT_UNIQUE;
@@ -575,8 +572,8 @@
     }
 
     @Override
-    public List<SysUser> selectList() {
-        return userMapper.selectList();
+    public List<SysUser> queryList() {
+        return userMapper.queryList();
     }
 
     @Override
@@ -638,8 +635,8 @@
     }
 
     @Override
-    public long selectIdByPhone(String phonenumber) {
-        return userMapper.selectIdByPhone(phonenumber);
+    public long selectIdByPhone(String phoneNumber) {
+        return userMapper.selectIdByPhone(phoneNumber);
     }
 
 //    @Override
@@ -648,7 +645,18 @@
 //    }
 
     @Override
-    public SysUser selectByPhone(String phonenumber) {
-        return userMapper.selectByPhone(phonenumber);
+    public SysUser selectByPhone(String phoneNumber) {
+        return userMapper.selectByPhone(phoneNumber);
     }
+
+    @Override
+    public SysUser selectDeptUserByUserName(String userName) {
+        return userMapper.selectDeptUserByUserName(userName);
+    }
+
+    @Override
+    public SysUser selectPlatUserByUserName(String userName) {
+        return userMapper.selectPlatUserByUserName(userName);
+    }
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java
index d755803..77e4182 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java
@@ -1,23 +1,25 @@
 package com.ruoyi.system.service.impl;
 
 import com.alibaba.excel.EasyExcel;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
 import com.ruoyi.common.basic.PageDTO;
 import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.enums.ReportingStatusEnum;
-import com.ruoyi.common.enums.ShowStatusEnum;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.enums.*;
 import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.BeanUtils;
-import com.ruoyi.common.utils.CollUtils;
-import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.common.utils.NumberDisplaceChineseUtil;
+import com.ruoyi.common.utils.*;
 import com.ruoyi.system.domain.*;
 import com.ruoyi.system.dto.BasicDataDTO;
+import com.ruoyi.system.handler.CustomerHandler;
+import com.ruoyi.system.handler.SelectedSheetWriteHandler;
 import com.ruoyi.system.listener.BasicDataListener;
 import com.ruoyi.system.mapper.TbBasicDataMapper;
+import com.ruoyi.system.mapper.TbDeptMapper;
 import com.ruoyi.system.query.ScoreQuery;
 import com.ruoyi.system.service.*;
 import com.ruoyi.system.vo.BasicDataReportingVO;
@@ -51,18 +53,19 @@
 @RequiredArgsConstructor
 public class TbBasicDataServiceImpl extends ServiceImpl<TbBasicDataMapper, TbBasicData> implements TbBasicDataService {
 
-    private final TbDeptService tbDeptService;
+    private final TbDeptMapper tbDeptMapper;
     private final HttpServletResponse response;
     private final TbFieldService tbFieldService;
     private final TbBasicDataFieldService tbBasicDataFieldService;
     private final TbBasicDataConfigService tbBasicDataConfigService;
     private final TbBasicDataConfigDetailService tbBasicDataConfigDetailService;
-    private final TbScoreService scoreService;
+    private final TbScoreService tbScoreService;
+
     @Override
     public R<BasicDataReportingVO> getBasicFields(String deptAreaCode) throws Exception {
         BasicDataReportingVO vo = new BasicDataReportingVO();
         //校验区划代码
-        TbDept dept = tbDeptService.getOne(Wrappers.<TbDept>lambdaQuery().eq(TbDept::getAreaCode, deptAreaCode));
+        TbDept dept = tbDeptMapper.selectOne(Wrappers.<TbDept>lambdaQuery().eq(TbDept::getAreaCode, deptAreaCode));
         if (Objects.isNull(dept)) {
             throw new ServiceException(String.format("区划代码%s不存在", deptAreaCode));
         }
@@ -106,7 +109,7 @@
             List<TbBasicDataField> basicDataFields = tbBasicDataFieldService.lambdaQuery()
                     .eq(TbBasicDataField::getBasicDataId, basicData.getId()).list();
             if (CollUtils.isNotEmpty(basicDataFields)) {
-                Map<Integer, TbBasicDataField> fieldMap = basicDataFields.stream()
+                Map<Long, TbBasicDataField> fieldMap = basicDataFields.stream()
                         .collect(Collectors.toMap(TbBasicDataField::getFieldId, Function.identity()));
                 vo.getFields().forEach(item -> {
                     TbBasicDataField tbBasicDataField = fieldMap.get(item.getId());
@@ -123,21 +126,47 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void saveBasicData(BasicDataDTO dto) {
-        //TODO
-        //LoginUser loginUser = SecurityUtils.getLoginUser();
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        String areaCode = loginUser.getUser().getAreaCode();
         //数据校验
         if (Objects.isNull(dto) || CollUtils.isEmpty(dto.getFields())) {
             return;
         }
-
         TbBasicData tbBasicData = BeanUtils.copyBean(dto, TbBasicData.class);
+        tbBasicData.setDeptAreaCode(areaCode);
+        tbBasicData.setStatus(ReportingStatusEnum.MISSING_DATA);
         this.saveOrUpdate(tbBasicData);
         //保存基础数据动态字段数据
         List<TbBasicDataField> tbBasicDataFields = BeanUtils.copyList(dto.getFields(), TbBasicDataField.class);
         tbBasicDataFields.forEach(item -> item.setBasicDataId(tbBasicData.getId()));
+        //查询需要填写的动态字段
+        List<TbField> fieldList = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list();
+        //添加固定字段 转移支付规模、当期GDP
+        TbBasicDataField transferPaymentScale = new TbBasicDataField();
+        transferPaymentScale.setBasicDataId(tbBasicData.getId());
+        transferPaymentScale.setFieldId(-1L);
+        transferPaymentScale.setFieldValue(tbBasicData.getTransferPaymentScale());
+        tbBasicDataFields.add(transferPaymentScale);
+        TbBasicDataField currentGdp = new TbBasicDataField();
+        transferPaymentScale.setBasicDataId(tbBasicData.getId());
+        transferPaymentScale.setFieldId(-2L);
+        transferPaymentScale.setFieldValue(tbBasicData.getCurrentGdp());
+        tbBasicDataFields.add(currentGdp);
         //将该基础数据的动态字段数据全部删除
-        tbBasicDataFieldService.remove(null);
+        tbBasicDataFieldService.remove(Wrappers.<TbBasicDataField>lambdaQuery().eq(TbBasicDataField::getBasicDataId, tbBasicData.getId()));
         tbBasicDataFieldService.saveBatch(tbBasicDataFields);
+        //需要填写的动态字段
+        Set<Long> fieldIds = fieldList.stream().map(TbField::getId).collect(Collectors.toSet());
+        //用户填写的动态字段
+        Set<Long> deptFieldIds = tbBasicDataFields.stream().map(TbBasicDataField::getFieldId).collect(Collectors.toSet());
+        boolean flag = deptFieldIds.containsAll(fieldIds) && (StringUtils.isNotEmpty(dto.getTransferPaymentScale())&& StringUtils.isNotEmpty(dto.getCurrentGdp()));
+        if (flag) {
+            tbBasicData.setStatus(ReportingStatusEnum.FILLED);
+            this.updateById(tbBasicData);
+        }
+        if (ReportingStatusEnum.FILLED.equals(tbBasicData.getStatus())) {
+            calculateScore(tbBasicData);
+        }
     }
 
     @Override
@@ -149,16 +178,47 @@
         response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xlsx");
         //查询需要填写的动态字段
         List<TbField> list = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list();
+        List<List<String>> head = head(list);
+        List<TbField> collect = list.stream()
+                .filter(item -> FieldTypeEnum.TEXT.equals(item.getFieldType()))
+                .filter(item -> FieldInputTypeEnum.FIXED_CONTENT.equals(item.getTextInputType()))
+                .collect(Collectors.toList());
+        Map<Integer, String[]> selectedMap = new HashMap<>();
+        if (CollUtils.isNotEmpty(collect)) {
+            selectedMap = new HashMap<>();
+            for (TbField tbField : collect) {
+                int outerListIndex = getOuterListIndex(head, tbField.getFieldName());
+                String[] selectStr = tbField.getTextContent().split(",");
+                selectedMap.put(outerListIndex, selectStr);
+            }
+        }
         // 这里需要设置不关闭流
-        EasyExcel.write(response.getOutputStream()).head(head(list))
-                .autoCloseStream(Boolean.FALSE).sheet("模板")
+        EasyExcel.write(response.getOutputStream()).head(head)
+                .autoCloseStream(Boolean.TRUE).sheet("模板")
+                .registerWriteHandler(new SelectedSheetWriteHandler(selectedMap))
+                .registerWriteHandler(new CustomerHandler())
+                .registerWriteHandler(EasyExcelUtil.getStyleStrategy())
                 .doWrite(dataList(list));
     }
 
+    /**
+     * 根据字段名获取该字段下标
+     * @param list 表头
+     * @param value 字段名
+     * @return 下标
+     */
+    public int getOuterListIndex(List<List<String>> list, String value) {
+        for (int i = 0; i < list.size(); i++) {
+            if (list.get(i).contains(value)) {
+                return i;
+            }
+        }
+        return -1; // 返回-1表示未找到
+    }
     private List<List<Object>> dataList(List<TbField> list) throws Exception {
-        //TODO
-        //LoginUser loginUser = SecurityUtils.getLoginUser();
-        TbDept dept = tbDeptService.getById(44);
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        String areaName = loginUser.getUser().getAreaName();
+
         //当前所在季度
         int quarterOfYear = DateUtils.getQuarterOfYear(new Date());
         String quarterOfYearStr = NumberDisplaceChineseUtil.numberToChinese(quarterOfYear);
@@ -169,7 +229,7 @@
             columnNo.add(String.valueOf(i));
         }
         excellist.add(columnNo);
-        excellist.add(Lists.newArrayList(dept.getAreaName(), String.format("%s季度",quarterOfYearStr)));
+        excellist.add(Lists.newArrayList(areaName, String.format("%s季度",quarterOfYearStr)));
         return excellist;
     }
 
@@ -181,31 +241,103 @@
         headTitles.add(Lists.newArrayList("转移支付规模"));
         headTitles.add(Lists.newArrayList("当期GDP"));
         list.forEach(item ->{
-            headTitles.add(Lists.newArrayList(item.getLevelOneCategory(), item.getLevelTwoCategory(), item.getLevelThreeCategory(), item.getFieldName()));
+            String levelOneCategory = item.getLevelOneCategory();
+            String levelTwoCategory = item.getLevelTwoCategory();
+            String levelThreeCategory = item.getLevelThreeCategory();
+            String fieldName = item.getFieldName();
+            headTitles.add(Lists.newArrayList(levelOneCategory,StringUtils.isBlank(levelTwoCategory) ? fieldName : levelTwoCategory, StringUtils.isBlank(levelThreeCategory) ? fieldName : levelThreeCategory, fieldName));
         });
         headTitles.add(Lists.newArrayList("备注"));
         return headTitles;
     }
-
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void importBasicData(MultipartFile file) throws Exception {
-        //TODO
-        //LoginUser loginUser = SecurityUtils.getLoginUser();
-        TbDept dept = tbDeptService.getById(44);
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        String areaCode = loginUser.getUser().getAreaCode();
         //查询需要填写的动态字段
         List<TbField> fieldList = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list();
         EasyExcel.read(file.getInputStream(), new BasicDataListener(this,fieldList,
-                tbFieldService,dept,tbBasicDataFieldService,tbBasicDataConfigService,
-                tbBasicDataConfigDetailService,scoreService)).sheet().doRead();
+                tbFieldService,areaCode,tbBasicDataFieldService,tbBasicDataConfigService,
+                tbBasicDataConfigDetailService,tbScoreService)).sheet().doRead();
     }
-
+    private void calculateScore(TbBasicData tbBasicData) {
+        //计算得分
+        List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().eq(TbBasicDataConfig::getStatus, ShowStatusEnum.SHOW).list();
+        if (CollectionUtils.isEmpty(list)) {
+            throw new ServiceException("计算得分失败,平台未配置得分计算规则");
+        }
+        List<TbBasicDataConfig> numCalculates = list.stream()
+                .filter(item -> CalculateTypeEnum.NUMBER.equals(item.getCalculateType()))
+                .collect(Collectors.toList());
+        List<TbBasicDataConfig> textAndPercentages = list.stream()
+                .filter(item -> !CalculateTypeEnum.NUMBER.equals(item.getCalculateType()))
+                .collect(Collectors.toList());
+        if (CollectionUtils.isNotEmpty(numCalculates)) {
+            numCalculates.forEach(item -> {
+                Map<String, Object> valueMap = new HashMap<>();
+                String numberCalculateFormula = item.getNumberCalculateFormula();
+                Map<String, Integer> fieldsAndValue = CalculateUtil.getFieldsAndValue(numberCalculateFormula);
+                for (Map.Entry<String, Integer> stringIntegerEntry : fieldsAndValue.entrySet()) {
+                    Optional<TbBasicDataField> tbBasicDataField = tbBasicDataFieldService.lambdaQuery()
+                            .eq(TbBasicDataField::getBasicDataId, tbBasicData.getId())
+                            .eq(TbBasicDataField::getFieldId, stringIntegerEntry.getValue())
+                            .oneOpt();
+                    tbBasicDataField.ifPresent(basicDataField -> valueMap.put(stringIntegerEntry.getKey(), basicDataField.getFieldValue()));
+                }
+                double score = CalculateUtil.calculate(numberCalculateFormula, valueMap);
+                TbScore tbScore = new TbScore();
+                tbScore.setBasicDataId(tbBasicData.getId());
+                tbScore.setScore(score);
+                tbScore.setBasicDataConfigId(item.getId());
+                tbScoreService.save(tbScore);
+            });
+        }
+        if (CollectionUtils.isNotEmpty(textAndPercentages)) {
+            for (TbBasicDataConfig textAndPercentage : textAndPercentages) {
+                TbScore tbScore = new TbScore();
+                List<TbBasicDataConfigDetail> details = tbBasicDataConfigDetailService.lambdaQuery()
+                        .eq(TbBasicDataConfigDetail::getBasicDataConfigId, textAndPercentage.getId())
+                        .list();
+                Map<String, String> scoreMap = details.stream().collect(Collectors.toMap(TbBasicDataConfigDetail::getKey, TbBasicDataConfigDetail::getValue));
+                if (CollectionUtils.isNotEmpty(details)) {
+                    Optional<TbBasicDataField> tbBasicDataFieldOptional = tbBasicDataFieldService.lambdaQuery()
+                            .eq(TbBasicDataField::getBasicDataId, tbBasicData.getId())
+                            .eq(TbBasicDataField::getFieldId, textAndPercentage.getFieldIdStr())
+                            .oneOpt();
+                    if (tbBasicDataFieldOptional.isPresent()) {
+                        TbBasicDataField tbBasicDataField = tbBasicDataFieldOptional.get();
+                        if (CalculateTypeEnum.TEXT.equals(textAndPercentage.getCalculateType())) {
+                            String score = scoreMap.get(tbBasicDataField.getFieldValue());
+                            tbScore.setBasicDataId(tbBasicData.getId());
+                            tbScore.setScore(Double.parseDouble(score));
+                            tbScore.setBasicDataConfigId(textAndPercentage.getId());
+                            tbScoreService.save(tbScore);
+                        }
+                        if (CalculateTypeEnum.PERCENTAGE.equals(textAndPercentage.getCalculateType())) {
+                            for (Map.Entry<String, String> stringStringEntry : scoreMap.entrySet()) {
+                                String[] split = stringStringEntry.getKey().split("-");
+                                double v = Double.parseDouble(tbBasicDataField.getFieldValue());
+                                double min = Double.parseDouble(split[0]);
+                                double max = Double.parseDouble(split[1]);
+                                if (v >= min && v <= max) {
+                                    tbScore.setScore(Double.parseDouble(stringStringEntry.getValue()));
+                                }
+                            }
+                            tbScore.setBasicDataId(tbBasicData.getId());
+                            tbScore.setBasicDataConfigId(textAndPercentage.getId());
+                            tbScoreService.save(tbScore);
+                        }
+                    }
+                }
+            }
+        }
+    }
     @Override
     public PageDTO<ScoreVO> pageScore(ScoreQuery query) {
         Page<ScoreVO> page = new Page<>(query.getPageNum(), query.getPageSize());
-        //todo 获取当前登录部门
-        //校验区划代码
-        TbDept dept = tbDeptService.getById(44);
+        SysUser user = SecurityUtils.getLoginUser().getUser();
+        String areaCode = user.getAreaCode();
         Map<String, Date> quarterDate = DateUtils.getQuarterDate(new Date());
         //当前季度开始
         Date quarterStart = quarterDate.get("first");
@@ -213,14 +345,14 @@
         Date quarterEnd = quarterDate.get("last");
         //查询是否有当前季度的填报记录
         TbBasicData basicData = this.getOne(Wrappers.<TbBasicData>lambdaQuery()
-                .eq(TbBasicData::getDeptAreaCode, dept.getAreaCode())
+                .eq(TbBasicData::getDeptAreaCode, areaCode)
                 .between(TbBasicData::getCreateTime, quarterStart,quarterEnd));
         if (Objects.isNull(basicData)) {
             return PageDTO.empty(page);
         }
         query.setBasicDataId(basicData.getId());
         //查询对应的基础数据配置
-        List<ScoreVO> vos = scoreService.pageScore(query,page);
+        List<ScoreVO> vos = tbScoreService.pageScore(query,page);
         return PageDTO.of(page, vos);
     }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDeptServiceImpl.java
index 2927eba..0237113 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDeptServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDeptServiceImpl.java
@@ -6,17 +6,21 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.basic.PageDTO;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.enums.ReportingStatusEnum;
+import com.ruoyi.common.enums.UserTypeEnum;
 import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.BeanUtils;
-import com.ruoyi.common.utils.CollUtils;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.*;
+import com.ruoyi.system.domain.TbBasicData;
 import com.ruoyi.system.domain.TbDept;
 import com.ruoyi.system.dto.update.DeptFocusDTO;
 import com.ruoyi.system.handler.DeptVerifyHandler;
 import com.ruoyi.system.importExcel.DeptExcel;
 import com.ruoyi.system.mapper.TbDeptMapper;
 import com.ruoyi.system.query.DeptQuery;
+import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.system.service.TbBasicDataService;
 import com.ruoyi.system.service.TbDeptService;
 import com.ruoyi.system.vo.DeptVO;
 import lombok.RequiredArgsConstructor;
@@ -26,7 +30,11 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.InputStream;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.ZoneId;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -41,19 +49,24 @@
 public class TbDeptServiceImpl extends ServiceImpl<TbDeptMapper, TbDept> implements TbDeptService {
 
     private final DeptVerifyHandler deptVerifyHandler;
+    private final ISysUserService sysUserService;
+    private final TbBasicDataService tbBasicDataService;
 
     @Override
     public PageDTO<DeptVO> queryPage(DeptQuery query) {
-        Page<TbDept> page = new Page<>(query.getPageNum(), query.getPageSize());
-        Page<TbDept> tbDeptPage = this.lambdaQuery().like(StringUtils.isNotEmpty(query.getAreaName()), TbDept::getAreaName, query.getAreaName())
-                .like(StringUtils.isNotEmpty(query.getAccount()), TbDept::getAccount, query.getAccount())
-                .like(StringUtils.isNotEmpty(query.getPhone()), TbDept::getPhone, query.getPhone())
-                .orderByDesc(TbDept::getCreateTime)
+        Page<SysUser> page = new Page<>(query.getPageNum(), query.getPageSize());
+        Page<SysUser> userPage = sysUserService.lambdaQuery()
+                .eq(SysUser::getUserType, UserTypeEnum.DEPARTMENT.getCode())
+                .like(StringUtils.isNotEmpty(query.getAreaName()), SysUser::getAreaName, query.getAreaName())
+                .like(StringUtils.isNotEmpty(query.getUserName()), SysUser::getUserName, query.getUserName())
+                .like(StringUtils.isNotEmpty(query.getPhone()), SysUser::getPhoneNumber, query.getPhone())
+                .orderByDesc(SysUser::getCreateTime)
                 .page(page);
-        if (CollUtils.isEmpty(tbDeptPage.getRecords())) {
+
+        if (CollUtils.isEmpty(userPage.getRecords())) {
             return PageDTO.empty(page);
         }
-        return PageDTO.of(tbDeptPage, DeptVO.class);
+        return PageDTO.of(userPage, DeptVO.class);
     }
 
     @Override
@@ -105,13 +118,40 @@
 
     @Override
     public void focus(DeptFocusDTO dto) {
-        TbDept dept = this.getById(dto.getId());
-        if (Objects.isNull(dept)) {
-            throw new ServiceException("非法参数");
+        Optional<SysUser> sysUser = sysUserService.lambdaQuery().eq(SysUser::getUserId, dto.getUserId()).oneOpt();
+        if (sysUser.isPresent()) {
+            sysUserService.lambdaUpdate()
+                    .eq(SysUser::getUserId, dto.getUserId())
+                    .set(SysUser::getFocussed, dto.getFocussed())
+                    .update();
         }
-        this.lambdaUpdate()
-                .eq(TbDept::getId, dto.getId())
-                .set(TbDept::getFocussed, dto.getFocussed())
-                .update();
+    }
+
+    @Override
+    public R<Void> reportingMessage() {
+        Map<String, Date> quarterDate = DateUtils.getQuarterDate(new Date());
+        //当前季度开始
+        Date quarterStart = quarterDate.get("first");
+        //当前季度结束
+        Date quarterEnd = quarterDate.get("last");
+        //判断当前时间是否在季度初1-15号
+        Instant instant = quarterStart.toInstant();
+        LocalDate quarterStartLocalDate = instant.atZone(ZoneId.systemDefault()).toLocalDate();
+        LocalDate fifteenDaysLimit = quarterStartLocalDate.plusDays(15);
+        LocalDate now = LocalDate.now();
+        //如果当前时间不在规定范围内:季度初1-15号
+        if (now.isAfter(quarterStartLocalDate) || now.isBefore(fifteenDaysLimit)) {
+            //查询所有的部门
+            List<SysUser> list = sysUserService.lambdaQuery().eq(SysUser::getUserType, UserTypeEnum.DEPARTMENT.getCode()).list();
+            Set<String> deptAreaCodeList = list.stream().map(SysUser::getAreaCode).collect(Collectors.toSet());
+            //查询当前季度填报了数据的部门
+            List<TbBasicData> filledBasicData = tbBasicDataService.lambdaQuery().between(TbBasicData::getCreateTime, quarterStartLocalDate, fifteenDaysLimit)
+                    .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED).list();
+            Set<String> filledDeptCodes = filledBasicData.stream().map(TbBasicData::getDeptAreaCode).collect(Collectors.toSet());
+            if (!filledDeptCodes.containsAll(deptAreaCodeList)) {
+                return R.fail("有部门未上传季度数据");
+            }
+        }
+        return R.ok();
     }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldCategoryServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldCategoryServiceImpl.java
index f4a26a8..2f6d1f9 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldCategoryServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldCategoryServiceImpl.java
@@ -86,7 +86,7 @@
         updateCategoryAndChildren(dto.getId(), dto.getStatus());
     }
 
-    private void updateCategoryAndChildren(Integer id, ShowStatusEnum status) {
+    private void updateCategoryAndChildren(Long id, ShowStatusEnum status) {
         TbFieldCategory category = this.validateParam(id);
         this.lambdaUpdate()
                 .eq(TbFieldCategory::getId, id)
@@ -94,21 +94,21 @@
                 .update();
         List<TbFieldCategory> children = this.lambdaQuery().eq(TbFieldCategory::getParentId, category.getId()).list();
         if (CollUtils.isNotEmpty(children)) {
-            List<Integer> childIds = children.stream().map(TbFieldCategory::getId).collect(Collectors.toList());
+            List<Long> childIds = children.stream().map(TbFieldCategory::getId).collect(Collectors.toList());
             childIds.forEach(childId -> updateCategoryAndChildren(childId, status));
         }
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void deleteChildren(Integer id) {
+    public void deleteChildren(Long id) {
         //认定为二级分类
         TbFieldCategory category = this.getById(id);
         if (Objects.nonNull(category)) {
             //查询是否有三级分类
             List<TbFieldCategory> threeCategoryList = this.lambdaQuery().eq(TbFieldCategory::getParentId, id).list();
             if (CollectionUtils.isNotEmpty(threeCategoryList)) {
-                List<Integer> ids = threeCategoryList.stream().map(TbFieldCategory::getId).collect(Collectors.toList());
+                List<Long> ids = threeCategoryList.stream().map(TbFieldCategory::getId).collect(Collectors.toList());
                 //删除该二级分类下面的三级分类
                 this.removeByIds(ids);
             }
@@ -119,17 +119,17 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void delete(Integer id) {
+    public void delete(Long id) {
         //一级分类
         validateParam(id);
         //查询是否有二级分类
         List<TbFieldCategory> threeCategoryList = this.lambdaQuery().eq(TbFieldCategory::getParentId, id).list();
         if (CollectionUtils.isNotEmpty(threeCategoryList)) {
-            List<Integer> ids = threeCategoryList.stream().map(TbFieldCategory::getId).collect(Collectors.toList());
+            List<Long> ids = threeCategoryList.stream().map(TbFieldCategory::getId).collect(Collectors.toList());
             //查询三级分类
             List<TbFieldCategory> list = this.lambdaQuery().in(TbFieldCategory::getParentId, ids).list();
             if (CollectionUtils.isNotEmpty(list)) {
-                List<Integer> ids1 = list.stream().map(TbFieldCategory::getId).collect(Collectors.toList());
+                List<Long> ids1 = list.stream().map(TbFieldCategory::getId).collect(Collectors.toList());
                 //删除三级分类
                 this.removeByIds(ids1);
             }
@@ -140,7 +140,7 @@
         this.removeById(id);
     }
 
-    private TbFieldCategory validateParam(Integer id) {
+    private TbFieldCategory validateParam(Long id) {
         TbFieldCategory category = this.getById(id);
         if (Objects.isNull(category)) {
             throw new ServiceException("非法参数");
@@ -177,7 +177,7 @@
     }
 
     @Override
-    public List<FieldCategoryVO> queryFieldCategories(Integer id) {
+    public List<FieldCategoryVO> queryFieldCategories(Long id) {
         List<TbFieldCategory> list = this.lambdaQuery()
                 .select(TbFieldCategory::getId,TbFieldCategory::getFieldCategoryName)
                 .eq(TbFieldCategory::getParentId, id)
@@ -187,7 +187,7 @@
     }
 
     @Override
-    public FieldCategoryDetailVO getDetailsById(Integer id) {
+    public FieldCategoryDetailVO getDetailsById(Long id) {
         TbFieldCategory oneCategory = this.getById(id);
         if (Objects.isNull(oneCategory)) {
             return new FieldCategoryDetailVO();
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldServiceImpl.java
index 9c64edf..feab17d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldServiceImpl.java
@@ -51,12 +51,12 @@
     @Override
     public void add(FieldDTO dto) {
         //参数校验
-        Integer fieldType = dto.getFieldType();
+        FieldTypeEnum fieldType = dto.getFieldType();
         //1:数字 2:文本 3:百分比
-        if (FieldTypeEnum.TEXT.getCode().equals(fieldType)) {
+        if (FieldTypeEnum.TEXT.equals(fieldType)) {
             if (StringUtils.isNull(dto.getTextInputType())) {
                 throw new ServiceException("输入类型不能为空");
-            } else if (FieldInputTypeEnum.FIXED_CONTENT.getCode().equals(dto.getTextInputType()) && StringUtils.isBlank(dto.getTextContent())) {
+            } else if (FieldInputTypeEnum.FIXED_CONTENT.equals(dto.getTextInputType()) && StringUtils.isBlank(dto.getTextContent())) {
                 throw new ServiceException("内容设置不能为空");
             }
         }
@@ -90,7 +90,7 @@
         log.info("======子线程执行handleDataConfig{}",Thread.currentThread().getName() );
         List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().eq(TbBasicDataConfig::getStatus, ShowStatusEnum.SHOW.getCode()).list();
         if (CollUtils.isNotEmpty(list)) {
-            List<Integer> ids = list.stream().map(config -> {
+            List<Long> ids = list.stream().map(config -> {
                 String fieldIdStr = config.getFieldIdStr();
                 String[] split = fieldIdStr.split(",");
                 //字符串数组转为List
@@ -122,7 +122,7 @@
     }
 
     @Override
-    public String influencedData(Integer id) {
+    public String influencedData(Long id) {
         List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().eq(TbBasicDataConfig::getStatus, ShowStatusEnum.SHOW).list();
         if (CollUtils.isEmpty(list)) {
             return "";
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/DeptVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/DeptVO.java
index 36ceee7..f897a53 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/DeptVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/DeptVO.java
@@ -5,8 +5,6 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.time.LocalDateTime;
-
 /**
  * @author mitao
  * @date 2024/3/13
@@ -14,8 +12,9 @@
 @Data
 @ApiModel(value="部门VO")
 public class DeptVO {
+
     @ApiModelProperty(value = "部门id")
-    private Integer id;
+    private Integer userId;
 
     @ApiModelProperty(value = "部门地区")
     private String areaName;
@@ -36,29 +35,12 @@
     private String personInCharge;
 
     @ApiModelProperty(value = "登录账号")
-    private String account;
+    private String userName;
 
     @ApiModelProperty(value = "联系电话")
-    private String phone;
-
-    @ApiModelProperty(value = "登录密码")
-    private String password;
+    private String phoneNumber;
 
     @ApiModelProperty(value = "重点关注(0:否 1:是)")
-    private Boolean focussed;
+    private DisabledEnum focussed;
 
-    @ApiModelProperty(value = "删除标志(0代表存在 1代表删除)")
-    private String delFlag;
-
-    @ApiModelProperty(value = "创建者")
-    private String createBy;
-
-    @ApiModelProperty(value = "创建时间")
-    private LocalDateTime createTime;
-
-    @ApiModelProperty(value = "更新者")
-    private String updateBy;
-
-    @ApiModelProperty(value = "更新时间")
-    private LocalDateTime updateTime;
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldCategoryDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldCategoryDetailVO.java
index b71fbdf..2acfb9f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldCategoryDetailVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldCategoryDetailVO.java
@@ -15,10 +15,10 @@
 @ApiModel(value="字段分类详情视图对象")
 public class FieldCategoryDetailVO {
     @ApiModelProperty(value = "分类id")
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "父级id")
-    private Integer parentId;
+    private Long parentId;
 
     @ApiModelProperty(value = "分类名称")
     private String fieldCategoryName;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldCategoryVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldCategoryVO.java
index 15a4abd..9e04e0e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldCategoryVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldCategoryVO.java
@@ -13,7 +13,7 @@
 @ApiModel(value="字段分类视图对象")
 public class FieldCategoryVO {
     @ApiModelProperty(value = "分类id")
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "状态(0=展示 1=隐藏)")
     private ShowStatusEnum status;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldReportingVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldReportingVO.java
index 608cf9b..e8fdc6c 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldReportingVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldReportingVO.java
@@ -15,7 +15,7 @@
     private static final long serialVersionUID = -7412686975187928384L;
 
     @ApiModelProperty(value = "字段id")
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "字段名")
     private String fieldName;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldVO.java
index 033a1a3..9672e7f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldVO.java
@@ -15,7 +15,7 @@
 public class FieldVO {
 
     @ApiModelProperty(value = "字段id")
-    private Integer id;
+    private Long id;
 
     @ApiModelProperty(value = "字段名")
     private String fieldName;
@@ -24,13 +24,13 @@
     private FieldTypeEnum fieldType;
 
     @ApiModelProperty(value = "一级分类id")
-    private Integer levelOneCategoryId;
+    private Long levelOneCategoryId;
 
     @ApiModelProperty(value = "二级分类id")
-    private Integer levelTwoCategoryId;
+    private Long levelTwoCategoryId;
 
     @ApiModelProperty(value = "三级分类id")
-    private Integer levelThreeCategoryId;
+    private Long levelThreeCategoryId;
 
     @ApiModelProperty(value = "一级分类")
     private String levelOneCategory;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/UserInfoVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/UserInfoVo.java
index a0113a1..5a09a09 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/UserInfoVo.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/UserInfoVo.java
@@ -33,7 +33,7 @@
 
     /** 手机号码 */
     @ApiModelProperty(value = "手机号码")
-    private String phonenumber;
+    private String phoneNumber;
 
     /** 用户性别 */
     @ApiModelProperty(value = "用户性别 0=男,1=女,2=未知")
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml
index faaee57..c967d10 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml
@@ -24,20 +24,20 @@
 		<result property="costTime"       column="cost_time"      />
 		<result property="companyName"       column="companyName"      />
 		<result property="roleName"       column="roleName"      />
-		<result property="phonenumber"       column="phonenumber"      />
+		<result property="phoneNumber"       column="phone_number"      />
 		<result property="userId"       column="userId"      />
 		<result property="nickName"       column="nickName"      />
 	</resultMap>
 
 	<sql id="selectOperLogVo">
         select oper_id, title, business_type, `method`, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param,
-               json_result, status, error_msg, oper_time, cost_time,companyName,roleName,phonenumber,userId,nickName
+               json_result, status, error_msg, oper_time, cost_time,companyName,roleName,phoneNumber,userId,nickName
         from sys_oper_log
     </sql>
     
 	<insert id="insertOperlog" parameterType="SysOperLog">
-		insert into sys_oper_log(title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, cost_time,companyName,roleName,phonenumber,userId,nickName, oper_time)
-        values (#{title}, #{businessType}, #{method}, #{requestMethod}, #{operatorType}, #{operName}, #{deptName}, #{operUrl}, #{operIp}, #{operLocation}, #{operParam}, #{jsonResult}, #{status}, #{errorMsg}, #{costTime},#{companyName},#{roleName},#{phonenumber},#{userId},#{nickName}, sysdate())
+		insert into sys_oper_log(title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, cost_time,companyName,roleName,phoneNumber,userId,nickName, oper_time)
+        values (#{title}, #{businessType}, #{method}, #{requestMethod}, #{operatorType}, #{operName}, #{deptName}, #{operUrl}, #{operIp}, #{operLocation}, #{operParam}, #{jsonResult}, #{status}, #{errorMsg}, #{costTime},#{companyName},#{roleName},#{phoneNumber},#{userId},#{nickName}, sysdate())
 	</insert>
 	
 	<select id="selectOperLogList" parameterType="SysOperLog" resultMap="SysOperLogResult">
@@ -89,7 +89,7 @@
 		select sol.oper_id AS operId, sol.title AS title, sol.business_type AS businessType, sol.`method` AS method, sol.request_method AS requestMethod,
 			   sol.operator_type AS operatorType,sol.oper_name AS operName,sol.dept_name AS deptName, sol.oper_url AS operUrl, sol.oper_ip AS operIp,
 			   sol.oper_location AS operLocation, sol.oper_param AS operLocation,sol.json_result AS jsonResult, sol.status AS status,sol.error_msg AS errorMsg,
-			   sol.oper_time AS operTime, sol.cost_time AS costTime,sol.companyName AS companyName,sol.roleName AS roleName,sol.phonenumber AS phonenumber,
+			   sol.oper_time AS operTime, sol.cost_time AS costTime,sol.companyName AS companyName,sol.roleName AS roleName,sol.phoneNumber AS phoneNumber,
 			   sol.userId AS userId,sol.nickName AS nickName
 		from sys_oper_log sol
 		<where>
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 7bb34d4..30ce199 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -10,7 +10,7 @@
         <result property="userName"     column="user_name"    />
         <result property="nickName"     column="nick_name"    />
         <result property="email"        column="email"        />
-        <result property="phonenumber"  column="phonenumber"  />
+        <result property="phoneNumber"  column="phone_number"  />
         <result property="sex"          column="sex"          />
         <result property="avatar"       column="avatar"       />
         <result property="password"     column="password"     />
@@ -24,6 +24,13 @@
         <result property="updateTime"   column="update_time"  />
         <result property="remark"       column="remark"       />
         <result property="ifBlack"       column="ifBlack"       />
+		<result property="areaName"     column="area_name" />
+		<result property="areaAlias"     column="area_alias" />
+		<result property="areaCode"     column="area_code" />
+		<result property="areaLevel"     column="area_level" />
+		<result property="countyFlag"     column="county_flag" />
+		<result property="personInCharge"     column="person_in_charge" />
+		<result property="focussed"     column="focussed" />
         <association property="dept"    javaType="SysDept"         resultMap="deptResult" />
         <collection  property="roles"   javaType="java.util.List"  resultMap="RoleResult" />
     </resultMap>
@@ -48,17 +55,23 @@
     </resultMap>
 	
 	<sql id="selectUserVo">
-        select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, 
+        select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phone_number, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
         d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
-        r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
+        r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status,u.area_name,u.area_alias,u.area_code,
+			   u.area_level,u.county_flag,u.person_in_charge,u.focussed
         from sys_user u
 		    left join sys_dept d on u.dept_id = d.dept_id
 		    left join sys_user_role ur on u.user_id = ur.user_id
 		    left join sys_role r on r.role_id = ur.role_id
     </sql>
-    
+	<sql id="selectDeptUserVo">
+		select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phone_number, u.password, u.sex, u.status,
+		       u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.area_name,u.area_alias,u.area_code,
+		       u.area_level,u.county_flag,u.person_in_charge,u.focussed
+		from sys_user u
+	</sql>
     <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
-		select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date,
+		select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phone_number, u.sex, u.status, u.del_flag, u.login_ip, u.login_date,
 		       u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
 		left join sys_dept d on u.dept_id = d.dept_id
 		where u.del_flag = '0'
@@ -71,8 +84,8 @@
 		<if test="status != null and status != ''">
 			AND u.status = #{status}
 		</if>
-		<if test="phonenumber != null and phonenumber != ''">
-			AND u.phonenumber like concat('%', #{phonenumber}, '%')
+		<if test="phoneNumber != null and phoneNumber != ''">
+			AND u.phone_number like concat('%', #{phoneNumber}, '%')
 		</if>
 		<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
 			AND date_format(u.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
@@ -88,7 +101,7 @@
 	</select>
 	
 	<select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult">
-	    select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
+	    select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phone_number, u.status, u.create_time
 	    from sys_user u
 			 left join sys_dept d on u.dept_id = d.dept_id
 			 left join sys_user_role ur on u.user_id = ur.user_id
@@ -97,15 +110,15 @@
 	    <if test="userName != null and userName != ''">
 			AND u.user_name like concat('%', #{userName}, '%')
 		</if>
-		<if test="phonenumber != null and phonenumber != ''">
-			AND u.phonenumber like concat('%', #{phonenumber}, '%')
+		<if test="phoneNumber != null and phoneNumber != ''">
+			AND u.phone_number like concat('%', #{phoneNumber}, '%')
 		</if>
 		<!-- 数据范围过滤 -->
 		${params.dataScope}
 	</select>
 	
 	<select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult">
-	    select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
+	    select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phone_number, u.status, u.create_time
 	    from sys_user u
 			 left join sys_dept d on u.dept_id = d.dept_id
 			 left join sys_user_role ur on u.user_id = ur.user_id
@@ -115,8 +128,8 @@
 	    <if test="userName != null and userName != ''">
 			AND u.user_name like concat('%', #{userName}, '%')
 		</if>
-		<if test="phonenumber != null and phonenumber != ''">
-			AND u.phonenumber like concat('%', #{phonenumber}, '%')
+		<if test="phoneNumber != null and phoneNumber != ''">
+			AND u.phone_number like concat('%', #{phoneNumber}, '%')
 		</if>
 		<!-- 数据范围过滤 -->
 		${params.dataScope}
@@ -129,8 +142,8 @@
 	
 	<select id="selectUserById" parameterType="Long" resultType="com.ruoyi.common.core.domain.entity.SysUser">
 		select u.user_id AS userId, u.dept_id AS deptId, u.user_name AS userName, u.nick_name AS nickName, u.email AS email, u.avatar AS avatar,
-			   u.phonenumber AS phonenumber, u.sex AS sex, u.status AS status, u.del_flag AS delFlag, u.login_ip AS loginIp,
-			   u.login_date AS loginDate, u.create_by AS createBy, u.create_time AS createTime, u.remark AS remark,u.ifBlack AS ifBlack, u.districtId AS districtId,
+			   u.phone_number AS phoneNumber, u.sex AS sex, u.status AS status, u.del_flag AS delFlag, u.login_ip AS loginIp,
+			   u.login_date AS loginDate, u.create_by AS createBy, u.create_time AS createTime, u.remark AS remark,/*u.ifBlack AS ifBlack,u.districtId AS districtId,*/
 			   ur.role_id AS roleId,sr.role_name AS roleName,u.deptName as deptName
 		from sys_user u
 		left join sys_user_role ur on u.user_id = ur.user_id
@@ -144,23 +157,23 @@
 	</select>
 	
 	<select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult">
-		select user_id, phonenumber from sys_user where phonenumber = #{phonenumber} and del_flag = '0' limit 1
+		select user_id, phoneNumber from sys_user where phone_number = #{phoneNumber} and del_flag = '0' limit 1
 	</select>
 	
 	<select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
 		select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1
 	</select>
     <select id="selectUserByIds" resultType="com.ruoyi.common.core.domain.entity.SysUser">
-		select user_id AS userId, dept_id AS deptId, user_name AS userName, nick_name AS nickName, email AS email, avatar AS avatar, phonenumber AS phonenumber
+		select user_id AS userId, dept_id AS deptId, user_name AS userName, nick_name AS nickName, email AS email, avatar AS avatar, phone_number AS phoneNumber
 		from sys_user where user_id in
 		<foreach collection="userIds" separator="," item="userId" open="(" close=")">
 			#{userId}
 		</foreach>
 	</select>
-    <select id="selectList" resultType="com.ruoyi.common.core.domain.entity.SysUser">
+    <select id="queryList" resultType="com.ruoyi.common.core.domain.entity.SysUser">
 		select u.user_id AS userId, u.dept_id AS deptId, u.user_name AS userName, u.nick_name AS nickName, u.email AS email, u.avatar AS avatar,
-			   u.phonenumber AS phonenumber, u.sex AS sex, u.status AS status, u.del_flag AS delFlag, u.login_ip AS loginIp,
-			   u.login_date AS loginDate, u.create_by AS createBy, u.create_time AS createTime, u.remark AS remark,u.ifBlack AS ifBlack, u.districtId AS districtId
+			   u.phone_number AS phoneNumber, u.sex AS sex, u.status AS status, u.del_flag AS delFlag, u.login_ip AS loginIp,
+			   u.login_date AS loginDate, u.create_by AS createBy, u.create_time AS createTime, u.remark AS remark
 		from sys_user u
 		WHERE u.del_flag = 0
 	</select>
@@ -175,18 +188,18 @@
 	</select>
 	<select id="selectListByNamePhone" resultType="com.ruoyi.common.core.domain.entity.SysUser">
 		select u.user_id AS userId, u.dept_id AS deptId, u.user_name AS userName, u.nick_name AS nickName, u.email AS email, u.avatar AS avatar,
-		u.phonenumber AS phonenumber, u.sex AS sex, u.status AS status, u.del_flag AS delFlag, u.login_ip AS loginIp,
-		u.login_date AS loginDate, u.create_by AS createBy, u.create_time AS createTime, u.remark AS remark,u.ifBlack AS ifBlack, u.districtId AS districtId
+		u.phone_number AS phoneNumber, u.sex AS sex, u.status AS status, u.del_flag AS delFlag, u.login_ip AS loginIp,
+		u.login_date AS loginDate, u.create_by AS createBy, u.create_time AS createTime, u.remark AS remark,/*u.ifBlack AS ifBlack,u.districtId AS districtId*/
 		from sys_user u
 		WHERE u.del_flag = 0
 		<if test="name != null and name != ''">
 			AND (u.nick_name LIKE concat('%',#{name},'%')
-			OR u.phonenumber LIKE concat('%',#{name},'%'))
+			OR u.phone_number LIKE concat('%',#{name},'%'))
 		</if>
 	</select>
 	<select id="selectUserByUserNameList" resultType="com.ruoyi.common.core.domain.entity.SysUser">
 		select u.user_id AS userId, u.dept_id AS deptId, u.user_name AS userName, u.nick_name AS nickName, u.email AS email, u.avatar AS avatar,
-			   u.phonenumber AS phonenumber
+			   u.phone_number AS phoneNumber
 		from sys_user u
 		WHERE u.del_flag = 0
 		<if test="names != null and names.size()>0">
@@ -204,9 +217,9 @@
 	</select>
 	<select id="selectByPhone" resultType="com.ruoyi.common.core.domain.entity.SysUser">
 		select u.user_id AS userId, u.dept_id AS deptId, u.user_name AS userName, u.nick_name AS nickName, u.email AS email, u.avatar AS avatar,
-			   u.phonenumber AS phonenumber, u.sex AS sex, u.status AS status, u.del_flag AS delFlag, u.login_ip AS loginIp,
+			   u.phone_number AS phoneNumber, u.sex AS sex, u.status AS status, u.del_flag AS delFlag, u.login_ip AS loginIp,
 			   u.login_date AS loginDate, u.create_by AS createBy, u.create_time AS createTime, u.remark AS remark
-		from sys_user u where u.phonenumber = #{phonenumber} and u.status = 0 and u.del_flag = 0
+		from sys_user u where u.phone_number = #{phoneNumber} and u.status = 0 and u.del_flag = 0
 	</select>
     <select id="getUserInfoBy" resultType="com.ruoyi.system.vo.UserInfoVo">
 		select t1.*,t2.companyName,t2.companyType from sys_user t1
@@ -221,8 +234,8 @@
 	</select>
     <select id="pageList" resultType="com.ruoyi.system.vo.SysUserVO">
 		select u.user_id AS userId, u.dept_id AS deptId, u.user_name AS userName, u.nick_name AS nickName, u.email AS email, u.avatar AS avatar,
-			   u.phonenumber AS phonenumber, u.sex AS sex, u.status AS status, u.del_flag AS delFlag, u.login_ip AS loginIp,
-			   u.login_date AS loginDate, u.create_by AS createBy, u.create_time AS createTime, u.remark AS remark,u.ifBlack AS ifBlack, u.districtId AS districtId,
+			   u.phone_number AS phoneNumber, u.sex AS sex, u.status AS status, u.del_flag AS delFlag, u.login_ip AS loginIp,
+			   u.login_date AS loginDate, u.create_by AS createBy, u.create_time AS createTime, u.remark AS remark,/*u.ifBlack AS ifBlack, u.districtId AS districtId,*/
 			   r.role_id AS roleId, r.role_name AS roleName, r.role_key AS roleKey, r.role_sort AS roleSort, r.data_scope AS dataScope, r.status as role_status,u.deptName as deptName
 		from sys_user u
 		left join sys_user_role ur on u.user_id = ur.user_id
@@ -234,8 +247,8 @@
 		<if test="query.roleId != null">
 			AND r.role_id = #{query.roleId}
 		</if>
-		<if test="query.phonenumber != null and query.phonenumber != ''">
-			AND u.phonenumber LIKE concat('%',#{query.phonenumber},'%')
+		<if test="query.phoneNumber != null and query.phoneNumber != ''">
+			AND u.phone_number LIKE concat('%',#{query.phoneNumber},'%')
 		</if>
 		<if test="query.status != null and query.status != ''">
 			AND u.status = #{query.status}
@@ -243,7 +256,17 @@
 		ORDER BY u.create_time DESC
 	</select>
 	<select id="selectIdByPhone" resultType="java.lang.Long">
-		select user_id from sys_user where phonenumber = #{phonenumber} and status = 0 and del_flag = 0
+		select user_id from sys_user where phone_number = #{phoneNumber} and status = 0 and del_flag = 0
+	</select>
+	<select id="selectDeptUserByUserName" resultType="com.ruoyi.common.core.domain.entity.SysUser"
+			parameterType="java.lang.String">
+		<include refid="selectUserVo"/>
+		where u.user_name = #{userName} and u.del_flag = '0' and u.user_type = '2'
+	</select>
+	<select id="selectPlatUserByUserName" resultType="com.ruoyi.common.core.domain.entity.SysUser"
+			parameterType="java.lang.String">
+		<include refid="selectUserVo"/>
+		where u.user_name = #{userName} and u.del_flag = '0' and u.user_type = '1'
 	</select>
 
 	<insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
@@ -255,14 +278,14 @@
  			<if test="nickName != null and nickName != ''">nick_name,</if>
  			<if test="email != null and email != ''">email,</if>
  			<if test="avatar != null and avatar != ''">avatar,</if>
- 			<if test="phonenumber != null and phonenumber != ''">phonenumber,</if>
+ 			<if test="phoneNumber != null and phoneNumber != ''">phone_number,</if>
  			<if test="sex != null and sex != ''">sex,</if>
  			<if test="password != null and password != ''">password,</if>
  			<if test="status != null and status != ''">status,</if>
  			<if test="createBy != null and createBy != ''">create_by,</if>
  			<if test="remark != null and remark != ''">remark,</if>
- 			<if test="ifBlack != null">ifBlack,</if>
- 			<if test="districtId != null">districtId,</if>
+<!-- 			<if test="ifBlack != null">ifBlack,</if>-->
+<!-- 			<if test="districtId != null">districtId,</if>-->
  			create_time
  		)values(
  			<if test="userId != null and userId != ''">#{userId},</if>
@@ -273,14 +296,14 @@
 		<if test="nickName != null and nickName != ''">#{nickName},</if>
  			<if test="email != null and email != ''">#{email},</if>
  			<if test="avatar != null and avatar != ''">#{avatar},</if>
- 			<if test="phonenumber != null and phonenumber != ''">#{phonenumber},</if>
+ 			<if test="phoneNumber != null and phoneNumber != ''">#{phone_number},</if>
 		<if test="sex != null and sex != ''">#{sex},</if>
  			<if test="password != null and password != ''">#{password},</if>
  			<if test="status != null and status != ''">#{status},</if>
  			<if test="createBy != null and createBy != ''">#{createBy},</if>
  			<if test="remark != null and remark != ''">#{remark},</if>
-			<if test="ifBlack != null">#{ifBlack},</if>
-			<if test="districtId != null">#{districtId},</if>
+<!--			<if test="ifBlack != null">#{ifBlack},</if>-->
+<!--			<if test="districtId != null">#{districtId},</if>-->
  			sysdate()
  		)
 	</insert>
@@ -293,7 +316,7 @@
  			<if test="nickName != null and nickName != ''">nick_name = #{nickName},</if>
  			<if test="deptName != null and deptName != ''">deptName = #{deptName},</if>
  			<if test="email != null ">email = #{email},</if>
- 			<if test="phonenumber != null ">phonenumber = #{phonenumber},</if>
+ 			<if test="phoneNumber != null ">phone_number = #{phoneNumber},</if>
  			<if test="sex != null and sex != ''">sex = #{sex},</if>
  			<if test="avatar != null and avatar != ''">avatar = #{avatar},</if>
  			<if test="password != null and password != ''">password = #{password},</if>
@@ -302,7 +325,6 @@
  			<if test="loginDate != null">login_date = #{loginDate},</if>
  			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
  			<if test="remark != null">remark = #{remark},</if>
-			<if test="ifBlack != null">ifBlack = #{ifBlack},</if>
  			update_time = sysdate()
  		</set>
  		where user_id = #{userId}
diff --git a/ruoyi-system/src/main/resources/mapper/system/TbScoreMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TbScoreMapper.xml
index bd90752..da9b730 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TbScoreMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TbScoreMapper.xml
@@ -37,6 +37,7 @@
             <if test="query.typeName !=null and query.typeName!=''">
                 AND tbdc.calculate_type = #{query.type}
             </if>
+
     </select>
 
 </mapper>
diff --git a/sql/ry_20230706.sql b/sql/ry_20230706.sql
index 17eec01..bb7bb1d 100644
--- a/sql/ry_20230706.sql
+++ b/sql/ry_20230706.sql
@@ -46,7 +46,7 @@
   nick_name         varchar(30)     not null                   comment '用户昵称',
   user_type         varchar(2)      default '00'               comment '用户类型(00系统用户)',
   email             varchar(50)     default ''                 comment '用户邮箱',
-  phonenumber       varchar(11)     default ''                 comment '手机号码',
+  phone_number       varchar(11)     default ''                 comment '手机号码',
   sex               char(1)         default '0'                comment '用户性别(0男 1女 2未知)',
   avatar            varchar(100)    default ''                 comment '头像地址',
   password          varchar(100)    default ''                 comment '密码',

--
Gitblit v1.7.1