浏览代码

教育培训任务代码提交

jingyuanchao 2 年之前
父节点
当前提交
736ac9ba4d

+ 2 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/vo/CoreEduTrainingTaskPageVo.java

@@ -3,6 +3,7 @@ package com.xunmei.common.core.domain.edu.vo;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingTaskToRole;
+import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingTaskToUser;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -75,6 +76,7 @@ public class CoreEduTrainingTaskPageVo {
     private String taskRoleNameList;
 
     private List<CoreEduTrainingTaskToRole> taskRoleList;
+    private List<CoreEduTrainingTaskToUser> userList;
 
     @ApiModelProperty(value = "pdf下载地址")
     private String pdfUrl;

+ 19 - 18
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/controller/CoreEduTrainingPlanController.java

@@ -1,28 +1,23 @@
 package com.xunmei.core.edu.controller;
 
-import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingPlan;
+import com.xunmei.common.core.domain.IdName;
 import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanEditDto;
 import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanInsertDto;
 import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanPageDto;
-import com.xunmei.core.edu.service.ICoreEduTrainingPlanService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.xunmei.common.core.web.controller.BaseController;
+import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.log.annotation.Log;
 import com.xunmei.common.log.enums.BusinessType;
 import com.xunmei.common.security.annotation.RequiresPermissions;
-import com.xunmei.common.core.web.controller.BaseController;
-import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.core.edu.service.ICoreEduTrainingPlanService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import com.xunmei.common.core.web.page.TableDataInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 教育培训计划Controller
@@ -101,9 +96,6 @@ public class CoreEduTrainingPlanController extends BaseController {
         return success(coreEduTrainingPlanService.listPlanRole(orgId));
     }
 
-    /**
-     * 计划下发
-     */
     @ApiOperation(value = "计划下发")
     @RequiresPermissions("core:plan:publish")
     @GetMapping("/publish/{planId}")
@@ -111,4 +103,13 @@ public class CoreEduTrainingPlanController extends BaseController {
         coreEduTrainingPlanService.publishPlan(planId);
         return AjaxResult.success();
     }
+
+
+    @ApiOperation(value = "计划下拉框")
+    @RequiresPermissions("core:plan:list")
+    @GetMapping("/planList/{orgId}")
+    public AjaxResult planList(@PathVariable("orgId") Long orgId) {
+        List<IdName<Long, String>> planList = coreEduTrainingPlanService.planList(orgId);
+        return AjaxResult.success(planList);
+    }
 }

+ 0 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/controller/CoreEduTrainingTaskController.java

@@ -91,7 +91,6 @@ public class CoreEduTrainingTaskController extends BaseController {
 
     @ApiOperation(value = "教育培训签名")
     @RequiresPermissions("core:eduTask:sign")
-    @Log(title = "教育任务签名", businessType = BusinessType.DELETE)
     @PostMapping("sign")
     public AjaxResult sign(@RequestBody @Validated CoreEduTrainingTaskSignDto request) {
         return success(coreEduTrainingTaskService.selectCoreEduTrainingTaskSign(request));

+ 3 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/CoreEduTrainingPlanMapper.java

@@ -2,6 +2,7 @@ package com.xunmei.core.edu.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xunmei.common.core.domain.IdName;
 import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingPlan;
 import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanPageDto;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanDataVo;
@@ -71,4 +72,6 @@ public interface CoreEduTrainingPlanMapper extends BaseMapper<CoreEduTrainingPla
     List<CoreEduTrainingPlanRoleVo> selectPlanRole(@Param("orgId") Long orgId);
 
     CoreEduTrainingPlanDataVo getDetailPlanData(@Param("id") Long id);
+
+    List<IdName<Long, String>> planList(@Param("path") String path);
 }

+ 3 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/ICoreEduTrainingPlanService.java

@@ -1,6 +1,7 @@
 package com.xunmei.core.edu.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.IdName;
 import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingPlan;
 import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanEditDto;
 import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanInsertDto;
@@ -89,4 +90,6 @@ public interface ICoreEduTrainingPlanService extends IService<CoreEduTrainingPla
      * @return Page
      */
     List<SysOrg> getExecuteOrg(CoreEduTrainingPlan plan);
+
+    List<IdName<Long, String>> planList(Long orgId);
 }

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

@@ -3,7 +3,6 @@ package com.xunmei.core.edu.service.impl;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -12,6 +11,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.IdName;
 import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingPlan;
 import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingPlanToExecOrg;
 import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingPlanToRole;
@@ -47,7 +47,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.Assert;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -418,4 +417,9 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 
     }
 
+    @Override
+    public List<IdName<Long, String>> planList(Long orgId) {
+        SysOrg org = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        return coreEduTrainingPlanMapper.planList(org.getPath());
+    }
 }

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

@@ -131,6 +131,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         record.setNo(records.indexOf(record) + 1);
         record.setTypeText(EduTrainingType.getName(record.getType()));
         record.setStatusText(EduTrainingDoStatus.getName(record.getStatus()));
+
         List<CoreEduTrainingTaskToRole> coreEduTrainingTaskToRoles = listMap.get(record.getId());
         if (ObjectUtil.isEmpty(coreEduTrainingTaskToRoles)) {
             return;
@@ -144,6 +145,8 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         if (ObjectUtil.isNotEmpty(record.getPdfUrl())) {
             record.setPdfUrl(staticsPath + record.getPdfUrl());
         }
+        record.setUserList(userList);
+
     }
 
     @Override
@@ -162,6 +165,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
     public CoreEduTrainingTaskDetailVo selectCoreEduTrainingTaskById(Long id) {
         CoreEduTrainingTaskDetailVo detailVo = coreEduTrainingTaskMapper.selectEduTrainingTaskDetail(id);
         List<CoreEduTrainingTaskToUser> userList = taskToUserMapper.selectByMap(MapUtil.of("edu_training_task_id", id));
+        detailVo.setTypeText(EduTrainingType.getName(detailVo.getType()));
         if (ObjectUtil.isNotEmpty(detailVo.getFile())) {
             detailVo.setFileList(JSON.parseArray(detailVo.getFile(), String.class));
         }
@@ -217,6 +221,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         coreEduTrainingTask.setHostId(SecurityUtils.getUserId());
         List<CoreEduTrainingTaskToUser> taskUserList = request.getTaskUserList();
         if (ObjectUtil.isNotEmpty(taskUserList)) {
+            checkTheSameUser(taskUserList);
             for (CoreEduTrainingTaskToUser taskToUser : taskUserList) {
                 taskToUser.setEduTrainingTaskId(request.getId());
                 taskToUser.setSign(0);
@@ -240,6 +245,19 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         return coreEduTrainingTaskMapper.updateById(coreEduTrainingTask);
     }
 
+    private void checkTheSameUser(List<CoreEduTrainingTaskToUser> taskUserList) {
+        Map<Integer, List<CoreEduTrainingTaskToUser>> listMap = taskUserList.stream().collect(Collectors.groupingBy(CoreEduTrainingTaskToUser::getType));
+        List<CoreEduTrainingTaskToUser> userList = listMap.get(1);
+        List<CoreEduTrainingTaskToUser> loseUserList = listMap.get(2);
+        if (ObjectUtil.isAllNotEmpty(userList, loseUserList)) {
+            List<Long> collect1 = userList.stream().map(CoreEduTrainingTaskToUser::getUserId).collect(Collectors.toList());
+            List<Long> collect2 = loseUserList.stream().map(CoreEduTrainingTaskToUser::getUserId).collect(Collectors.toList());
+            if (!Collections.disjoint(collect1, collect2)) {
+                throw new SystemException("参与用户与缺席用户存在相同用户!");
+            }
+        }
+    }
+
     /**
      * 批量删除教育任务
      *

+ 9 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingPlanMapper.xml

@@ -445,4 +445,13 @@
         where p.deleted = 0
           and p.id = #{id}
     </select>
+
+    <select id="planList" resultType="com.xunmei.common.core.domain.IdName">
+        select id as id, plan_name as name
+        from core_edu_training_plan p
+        where p.deleted = 0
+          and p.plan_status = 0
+          and p.standard = 0
+          and p.belong_org_path like concat(#{path}, '%')
+    </select>
 </mapper>