From 6b652d0e9269156936a1d6425829e104b7e680b5 Mon Sep 17 00:00:00 2001
From: heheng <475597332@qq.com>
Date: 星期五, 14 十一月 2025 13:21:48 +0800
Subject: [PATCH] 功能修改

---
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java |   99 ++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 85 insertions(+), 14 deletions(-)

diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java
index 00db515..d006990 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java
@@ -3,6 +3,7 @@
 import cn.hutool.core.codec.Base64;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gkhy.exam.common.annotation.DataScope;
 import com.gkhy.exam.common.api.CommonPage;
@@ -16,8 +17,13 @@
 import com.gkhy.exam.common.utils.RedisUtils;
 import com.gkhy.exam.common.utils.SecurityUtils;
 import com.gkhy.exam.common.utils.StringUtils;
+import com.gkhy.exam.system.domain.EmployeeRecord;
 import com.gkhy.exam.system.domain.ExStudent;
 import com.gkhy.exam.system.domain.SysUserRole;
+import com.gkhy.exam.system.domain.req.EmployeeRecordReq;
+import com.gkhy.exam.system.domain.vo.EmployeeRecordVO;
+import com.gkhy.exam.system.domain.vo.SpSysUser;
+import com.gkhy.exam.system.mapper.EmployeeRecordMapper;
 import com.gkhy.exam.system.mapper.SysUserMapper;
 import com.gkhy.exam.system.mapper.SysUserRoleMapper;
 import com.gkhy.exam.system.service.ExStudentService;
@@ -28,6 +34,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.validation.Validator;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -56,6 +63,10 @@
     @Autowired
     private ExStudentService exStudentService;
 
+    @Autowired
+    private EmployeeRecordMapper employeeRecordMapper;
+
+
     @Override
     public CommonPage<SysUser> selectUserList(SysUser user) {
         SysUser currentUser = SecurityUtils.getLoginUser().getUser();
@@ -69,6 +80,23 @@
             }
             PageUtils.startPage();
             users = baseMapper.userList(user);
+        }
+        return CommonPage.restPage(users);
+    }
+
+    @Override
+    public CommonPage selectSpUserList(SysUser user) {
+        SysUser currentUser = SecurityUtils.getLoginUser().getUser();
+        List<SpSysUser> users = new ArrayList<>();
+        if (!currentUser.getUserType().equals(UserTypeEnum.WORKSHOP_USER.getCode())) {
+            if (!currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())) {
+                user.setCompanyId(currentUser.getCompanyId());
+                Map<String, Object> paramsMap = new HashMap<>();
+//                paramsMap.put("userType",currentUser.getUserType());
+                user.setParams(paramsMap);
+            }
+            PageUtils.startPage();
+            users = baseMapper.userSpList(user);
         }
         return CommonPage.restPage(users);
     }
@@ -123,6 +151,10 @@
 
     @Override
     public SysUser selectUserById(Long userId) {
+
+
+
+
         return baseMapper.getUserById(userId);
     }
 
@@ -133,20 +165,17 @@
             throw new ApiException("管理员用户不能被删除");
         }
         delCacheByUsername(user.getUsername());
-        return baseMapper.deleteUserById(userId);
+        int i = baseMapper.deleteUserById(userId);
+        if (i > 0){
+            delEmployeeRecord(userId);
+        }
+        return i;
     }
 
     @Override
     @Transactional(rollbackFor = RuntimeException.class)
     public int addUser(SysUser user) {
-        ExStudent exStudent = new ExStudent();
-        exStudent.setCompanyId(user.getCompanyId());
-        exStudent.setName(user.getName());
-        exStudent.setPassword(user.getPassword());
-        exStudent.setDeptId(user.getDeptId());
-        exStudent.setDuty(user.getDuty());
-        exStudent.setSex(user.getSex());
-        exStudent.setPhone(user.getPhone());
+
 
         checkRequestData(user);
         checkUserAllowed(user);
@@ -156,14 +185,44 @@
 
         batchSaveRole(user.getRoles(), user.getId(), false);
 
+        ExStudent exStudent = new ExStudent();
+        exStudent.setCompanyId(user.getCompanyId());
+        exStudent.setName(user.getName());
+        exStudent.setPassword(user.getPassword());
+        exStudent.setDeptId(user.getDeptId());
+        exStudent.setDuty(user.getDuty());
+        exStudent.setSex(user.getSex());
+        exStudent.setPhone(user.getPhone());
         exStudent.setUserId(user.getId());
         exStudentService.insertStudent(exStudent);
+
+        Integer internal = user.getInternal();
+        if (internal == 0){
+            EmployeeRecord employeeRecord = new EmployeeRecord();
+            employeeRecord.setCompanyId(user.getCompanyId());
+            employeeRecord.setUserId(user.getId());
+            employeeRecord.setCreateBy(SecurityUtils.getUsername());
+            employeeRecord.setCreateTime(LocalDateTime.now());
+            saveEmployeeRecord(employeeRecord);
+        }
 
         if (row < 1) {
             throw new ApiException("新增用户失败");
         }
         return row;
     }
+
+    private void saveEmployeeRecord( EmployeeRecord employeeRecord){
+        employeeRecordMapper.insert( employeeRecord);
+    }
+
+    private void delEmployeeRecord(Long userId){
+        LambdaUpdateWrapper<EmployeeRecord> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.eq(EmployeeRecord::getUserId,userId).set(EmployeeRecord::getDelFlag,1)
+                .set(EmployeeRecord::getUpdateBy,SecurityUtils.getUsername()).set(EmployeeRecord::getUpdateTime,LocalDateTime.now());
+        employeeRecordMapper.update(new EmployeeRecord() ,updateWrapper);
+    }
+
 
     public void batchSaveRole(List<SysRole> roleIds, Long userId, boolean isUpdate) {
 
@@ -191,12 +250,24 @@
 
     @Override
     public int updateUser(SysUser user) {
+        SysUser sysUser = selectUserById(user.getId());
         checkRequestData(user);
         checkUserAllowed(user);
         user.setUpdateBy(SecurityUtils.getUsername());
         user.setPassword(null);
         int row = baseMapper.updateById(user);
         batchSaveRole(user.getRoles(), user.getId(), true);
+
+        if (sysUser.getInternal() == 0 && sysUser.getInternal() == 1){
+            delEmployeeRecord(user.getId());
+        }else if (sysUser.getInternal() == 1 && user.getInternal() == 0){
+            EmployeeRecord employeeRecord = new EmployeeRecord();
+            employeeRecord.setCompanyId(user.getCompanyId());
+            employeeRecord.setUserId(user.getId());
+            employeeRecord.setCreateBy(SecurityUtils.getUsername());
+            employeeRecord.setCreateTime(LocalDateTime.now());
+            saveEmployeeRecord(employeeRecord);
+        }
 
         if (row < 1) {
             throw new ApiException("更新用户信息失败");
@@ -266,9 +337,9 @@
 
     @Override
     public Map<String, Object> getUserData(Long companyId) {
-        List<SysUser> sysUsers = baseMapper.selectList(new LambdaQueryWrapper<>(
-                SysUser.class
-        ).eq(SysUser::getCompanyId, companyId).eq(SysUser::getDelFlag, UserConstant.ENABLE));
+        EmployeeRecordReq req = new EmployeeRecordReq();
+        req.setCompanyId(companyId);
+        List<EmployeeRecordVO> sysUsers = employeeRecordMapper.selectEmployeeRecordList(req);
         int totalUser = sysUsers.size();
 
         Map<String, Object> map = new HashMap<>();
@@ -276,7 +347,7 @@
         map.put("totalUser", totalUser);
         //专业
         map.put("post", sysUsers.stream()
-                .map(SysUser::getPost)
+                .map(EmployeeRecordVO::getPost)
                 .filter(Objects::nonNull)
                 .distinct()
                 .collect(Collectors.joining(",")));
@@ -353,7 +424,7 @@
         map.put("jsRatio", String.format("%.2f", jsRatio));
         double averageAge = sysUsers.stream()
                 .filter(user -> user.getAge() != null)  // 过滤年龄为null的用户
-                .mapToInt(SysUser::getAge)              // 提取年龄值
+                .mapToInt(EmployeeRecordVO::getAge)              // 提取年龄值
                 .average()                              // 计算平均值
                 .orElse(0.0);
         map.put("avgAge", String.format("%.1f", averageAge));//平均年龄

--
Gitblit v1.9.2