tjf 2 місяців тому
батько
коміт
f68199e22c

+ 4 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/Constants.java

@@ -172,6 +172,10 @@ public interface Constants {
      * 员工培训手册阅读人员的阅读时间 redis key
      */
      String READ_TRAIN_TIME = "read_train_time:";
+    /**
+     * 个人阅读进度 key=manual_progress_user:manualId#userID value = 进度
+     */
+    String MANUAL_PROGRESS_USER = "manual_progress_user:";
 
     //-------------------员工需要认证的数量的key-----------------
     //key=staff_manage_authentication:{userId}

+ 11 - 0
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/controller/staffTrain/StaffTrainManualController.java

@@ -102,6 +102,17 @@ public class StaffTrainManualController extends BaseController {
         return toAjax(staffTrainManualService.updateByBo(bo));
     }
 
+    /**
+     * 修改员工培训手册个人进度
+     */
+    @SaCheckPermission("wuYe:manual:putProgress")
+    @Log(title = "员工培训手册", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PostMapping("/putProgress")
+    public R<Void> putProgress(@Validated(EditGroup.class) @RequestBody StaffTrainManualBo bo) {
+        return toAjax(staffTrainManualService.putProgress(bo));
+    }
+
     /**
      * 删除员工培训手册
      *

+ 5 - 0
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/IStaffTrainManualService.java

@@ -59,6 +59,11 @@ public interface IStaffTrainManualService {
      */
     Boolean updateByBo(StaffTrainManualBo bo);
 
+    /**
+     * 修改员工培训手册个人进度
+     */
+    Boolean putProgress(StaffTrainManualBo bo);
+
     /**
      * 校验并批量删除员工培训手册信息
      *

+ 4 - 1
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/BlackManageServiceImpl.java

@@ -115,8 +115,11 @@ public class BlackManageServiceImpl implements IBlackManageService {
         BlackManage update = MapstructUtils.convert(bo, BlackManage.class);
         validEntityBeforeSave(update);
         List<BlackManage> blackManages = baseMapper.selectList(new LambdaQueryWrapper<BlackManage>().eq(BlackManage::getBlackType, ONE).eq(BlackManage::getIsDel, Y));
+        Long blackManageId = update.getBlackManageId();
         if (!blackManages.isEmpty() && blackManages.size() > 1) {
-            return R.fail("当前类型已存在,请勿重复修改");
+            if (!blackManageId.equals(blackManages.get(0).getBlackManageId())) {
+                return R.fail("当前类型已存在,请勿重复修改");
+            }
         }
          baseMapper.updateById(update);
 

+ 1 - 0
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/StaffManageServiceImpl.java

@@ -249,6 +249,7 @@ public class StaffManageServiceImpl implements IStaffManageService {
                     userType = userType+ "," + PC_USER.getUserType();
                 }
                 sysUser.setUserType(userType);
+                sysUser.setIsAuthentication(THR);
                 //去查询居住人员里面是否有认证通过的
                 List<ResidentInfoVo> infoByUserId = residentInfoMapper.getInfoByUserId(userId);
                 if (infoByUserId != null && !infoByUserId.isEmpty()) {

+ 35 - 10
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/StaffTrainManualServiceImpl.java

@@ -24,8 +24,7 @@ import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 
-import static org.dromara.common.core.constant.Constants.READ_TRAIN;
-import static org.dromara.common.core.constant.Constants.READ_TRAIN_TIME;
+import static org.dromara.common.core.constant.Constants.*;
 import static org.dromara.common.satoken.utils.LoginHelper.getLoginUser;
 import static org.dromara.common.satoken.utils.LoginHelper.getUserId;
 
@@ -48,7 +47,7 @@ public class StaffTrainManualServiceImpl implements IStaffTrainManualService {
      * @return 员工培训手册
      */
     @Override
-    public StaffTrainManualVo queryById(Long manualId){
+    public StaffTrainManualVo queryById(Long manualId) {
         //获取该培训手册对象阅读人员的value值
         List<String> valueList = RedisUtils.getCacheList(READ_TRAIN + manualId);
         //获取当前登录人的员工信息
@@ -71,12 +70,12 @@ public class StaffTrainManualServiceImpl implements IStaffTrainManualService {
                 //新增阅读时间
                 //key = read_train_time:manualId:userId
                 RedisUtils.setCacheObject(READ_TRAIN_TIME + manualId + ":" + userId, DateUtils.getTime());
-            }else {
+            } else {
                 //更新阅读时间
                 //key = read_train_time:manualId:userId
                 RedisUtils.setCacheObject(READ_TRAIN_TIME + manualId + ":" + userId, DateUtils.getTime());
             }
-        }else {
+        } else {
             //新增第一个阅读人员
             List<String> stringList = new ArrayList<>();
             stringList.add(value);
@@ -86,7 +85,7 @@ public class StaffTrainManualServiceImpl implements IStaffTrainManualService {
         }
         StaffTrainManual staffTrainManual = baseMapper.selectById(manualId);
         Long viewCount = staffTrainManual.getViewCount();
-        staffTrainManual.setViewCount(viewCount+1);
+        staffTrainManual.setViewCount(viewCount + 1);
         baseMapper.updateById(staffTrainManual);
         return MapstructUtils.convert(staffTrainManual, StaffTrainManualVo.class);
     }
@@ -102,6 +101,19 @@ public class StaffTrainManualServiceImpl implements IStaffTrainManualService {
     public TableDataInfo<StaffTrainManualVo> queryPageList(StaffTrainManualBo bo, PageQuery pageQuery) {
         LambdaQueryWrapper<StaffTrainManual> lqw = buildQueryWrapper(bo);
         Page<StaffTrainManualVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        List<StaffTrainManualVo> records = result.getRecords();
+        Long userId = getUserId();
+        if (records != null) {
+            for (StaffTrainManualVo record : records) {
+                record.setProgress("0");
+                Long manualId = record.getManualId();
+                String key = MANUAL_PROGRESS_USER + manualId + "#" + userId;
+                Object  progress= RedisUtils.getCacheObject(key);
+                if (progress != null) {
+                    record.setProgress(progress.toString());
+                }
+            }
+        }
         return TableDataInfo.build(result);
     }
 
@@ -166,10 +178,23 @@ public class StaffTrainManualServiceImpl implements IStaffTrainManualService {
         return baseMapper.updateById(update) > 0;
     }
 
+    /**
+     * 修改员工培训手册个人进度
+     */
+    @Override
+    public Boolean putProgress(StaffTrainManualBo bo) {
+        Long manualId = bo.getManualId();
+        String progress = bo.getProgress();
+        Long userId = getUserId();
+        String key = MANUAL_PROGRESS_USER + manualId + "#" + userId;
+        RedisUtils.setCacheObject(key, progress);
+        return true;
+    }
+
     /**
      * 保存前的数据校验
      */
-    private void validEntityBeforeSave(StaffTrainManual entity){
+    private void validEntityBeforeSave(StaffTrainManual entity) {
         //TODO 做一些数据校验,如唯一约束
     }
 
@@ -182,7 +207,7 @@ public class StaffTrainManualServiceImpl implements IStaffTrainManualService {
      */
     @Override
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
-        if(isValid){
+        if (isValid) {
             //TODO 做一些业务上的校验,判断是否需要校验
         }
         return baseMapper.deleteByIds(ids) > 0;
@@ -205,7 +230,7 @@ public class StaffTrainManualServiceImpl implements IStaffTrainManualService {
             for (String value : valueList) {
                 String[] split = value.split(":");
                 //key = read_train:manualId:userId
-                String readTime = RedisUtils.getCacheObject(READ_TRAIN_TIME  + manualId + ":" + split[0]);
+                String readTime = RedisUtils.getCacheObject(READ_TRAIN_TIME + manualId + ":" + split[0]);
                 Map<String, String> map = new HashMap<>(2);
                 if (StringUtils.isBlank(author) && searchTime == null) {
                     map.put("name", split[1]);
@@ -259,7 +284,7 @@ public class StaffTrainManualServiceImpl implements IStaffTrainManualService {
                             resultList.add(map);
                         }
                     }
-                }else {
+                } else {
                     map.put("name", split[1]);
                     map.put("time", readTime);
                     resultList.add(map);

+ 1 - 3
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/StaffTrainTimeServiceImpl.java

@@ -100,9 +100,7 @@ public class StaffTrainTimeServiceImpl implements IStaffTrainTimeService {
         if (staffTrainTime != null) {
             int staffTime = staffTrainTime.getStaffTime();
             //更新阅读时长
-            staffTrainTime.setStaffTime(staffTime + staffTrainTime.getStaffTime());
-            Long trainTimeId = staffTrainTime.getTrainTimeId();
-            staffTrainTime.setTrainTimeId(trainTimeId);
+            staffTrainTime.setStaffTime(staffTime + add.getStaffTime());
             flag = baseMapper.updateById(staffTrainTime) > 0;
             return flag;
         }