jingyuanchao před 2 roky
rodič
revize
277d99b630

+ 32 - 6
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java

@@ -293,12 +293,12 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
     public int updateCoreEduTrainingTask(CoreEduTrainingTaskEditDto request) {
         CoreEduTrainingTask coreEduTrainingTask = coreEduTrainingTaskMapper.selectById(request.getId());
         boolean isAdd = false;
-        if (coreEduTrainingTask==null){
+        if (coreEduTrainingTask == null) {
             isAdd = true;
             SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() ->
                             orgService.selectOrgById(SecurityUtils.getLoginUser().getSysUser().getOrgId(), SecurityConstants.INNER),
                     ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
-            coreEduTrainingTask=new CoreEduTrainingTask();
+            coreEduTrainingTask = new CoreEduTrainingTask();
             coreEduTrainingTask.setId(IdWorker.getId());
             coreEduTrainingTask.setOrgId(sysOrg.getId());
             coreEduTrainingTask.setOrgName(sysOrg.getShortName());
@@ -344,7 +344,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         coreEduTrainingTask.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getId().toString());
         coreEduTrainingTask.setUpdateTime(DateUtils.getNowDate());
 
-        if (isAdd){
+        if (isAdd) {
             return coreEduTrainingTaskMapper.insert(coreEduTrainingTask);
         }
         return coreEduTrainingTaskMapper.updateById(coreEduTrainingTask);
@@ -486,9 +486,9 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
                 trainingTask.setStartDate(DateUtils.getPreciseTime(dateRange.getStartTime()));
                 trainingTask.setEndDate(DateUtils.getPreciseTime(dateRange.getEndTime()));
                 trainingTask.setContent(null);
-                if (plan.getExecTimes()>1){
-                    trainingTask.setTitle(plan.getPlanName()+"第"+i+"次培训");
-                }else {
+                if (plan.getExecTimes() > 1) {
+                    trainingTask.setTitle(plan.getPlanName() + "第" + i + "次培训");
+                } else {
                     trainingTask.setTitle(plan.getPlanName());
                 }
 
@@ -819,13 +819,39 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
     @Override
     public List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto) {
         List<PanelListVo> list = coreEduTrainingTaskMapper.selectCurUserTaskList(panelListDto);
+        if (ObjectUtil.isEmpty(list)) {
+            return new ArrayList<>();
+        }
         list.removeIf(item -> DateUtil.compare(new Date(), item.getEndTime()) > 0);
         list.forEach(item -> {
             item.setType(PanelTypeEnums.EDU_TRAINING.getCode());
         });
+        //处理签名数据
+        dealEduTrainingSign(list);
         return list;
     }
 
+    private void dealEduTrainingSign(List<PanelListVo> list) {
+        //sql中查询了待签名的数据,但是没对数据范围做控制,需要排除不是自己的签名任务,
+        // 并且多个参与人员的情况,当前用户已经签署过了,也不需要显示该条数据
+        List<Long> needRemoveList = new ArrayList<>();
+        for (PanelListVo vo : list) {
+            if (ObjectUtil.notEqual(EduTrainingDoStatus.WAIT_SIGN.getCode(), vo.getStatus())) {
+                continue;
+            }
+            int value = coreEduTrainingTaskToUserMapper.selectCount(new LambdaQueryWrapper<CoreEduTrainingTaskToUser>()
+                    .eq(CoreEduTrainingTaskToUser::getEduTrainingTaskId, vo.getId())
+                    .eq(CoreEduTrainingTaskToUser::getUserId, SecurityUtils.getUserId())
+                    .eq(CoreEduTrainingTaskToUser::getType, 1)
+                    .eq(CoreEduTrainingTaskToUser::getSign, 0))
+                    .intValue();
+            if (value == 0) {
+                needRemoveList.add(vo.getId());
+            }
+        }
+        list.removeIf(x -> needRemoveList.contains(x.getId()));
+    }
+
     @Override
     public void taskChangeForTimeWorkChange(WorkTimeChangeEvent event) {
         String date = LocalDate.now().format(DateTimeFormatter.ofPattern(Constants.DAILY_FORMAT));