Browse Source

王子文 2022年4月18日 16点16分
1) 修复 BUG:培训矩阵修改指定人失败问题
2) 修复 BUG:培训计划修改指定人失败问题
3) 新增 API:专项培训 - 培训计划 - 根据导师ID查询学员列表

wangggziwen 3 years ago
parent
commit
796beec996

+ 4 - 0
master/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@@ -124,6 +124,10 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .antMatchers("/ehs/approvedanger/processImg/**").anonymous()
                 .antMatchers("/sems/historyYlrq/exportPDFForYear").anonymous()
                 .antMatchers("/sems/historyYlgd/exportPDFForYear").anonymous()
+                // 王子文 2022年4月15日 添加 用于 Postman API 测试
+                .antMatchers("/aspen/dashboarddayelec/list").anonymous()
+                // 王子文 2022年4月18日 添加 用于 Postman API 测试
+                .antMatchers("/spec/plan/getSuccessorListByMentorId").permitAll()
                 // 除上面外的所有请求全部需要鉴权认证
                 .anyRequest().authenticated()
                 .and()

+ 27 - 0
master/src/main/java/com/ruoyi/project/training/spec/controller/TStPlanController.java

@@ -1,6 +1,12 @@
 package com.ruoyi.project.training.spec.controller;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+
+import com.ruoyi.project.training.spec.domain.TStSuccessor;
+import com.ruoyi.project.training.spec.service.ITStSuccessorService;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -33,6 +39,27 @@ public class TStPlanController extends BaseController
     @Autowired
     private ITStPlanService tStPlanService;
 
+    @Autowired
+    private ITStSuccessorService tStSuccessorService;
+
+    /**
+     * 根据导师ID查询学员列表
+     * @autor 王子文
+     * @date 2022年4月18日
+     * @param tStSuccessor 继任者清单对象
+     * @return 学员列表
+     */
+//    @PreAuthorize("@ss.hasPermi('spec:plan:list')")
+    @GetMapping("/getSuccessorListByMentorId")
+    public AjaxResult getSuccessorListByMentorId(TStSuccessor tStSuccessor) {
+        List<TStSuccessor> tStSuccessors = tStSuccessorService.selectTStSuccessorListByMentorId(tStSuccessor);
+        Map<String, String> successorMap = new HashMap<>();
+        for (TStSuccessor successor : tStSuccessors) {
+            successorMap.put(successor.getStaffId(), successor.getStaffName());
+        }
+        return AjaxResult.success(successorMap);
+    }
+
     /**
      * 查询培训计划列表
      */

+ 10 - 0
master/src/main/java/com/ruoyi/project/training/spec/mapper/TStSuccessorMapper.java

@@ -12,6 +12,16 @@ import com.ruoyi.project.training.spec.domain.TStSuccessor;
  */
 public interface TStSuccessorMapper
 {
+    /**
+     * 根据导师STAFF_ID 查询继任者清单列表
+     *
+     * @author 王子文
+     * @date 2022年4月18日
+     * @param tStSuccessor 继任者清单对象
+     * @return 继任者清单
+     */
+    public List<TStSuccessor> selectTStSuccessorListByMentorId(TStSuccessor tStSuccessor);
+
     /**
      * 查询继任者清单
      *

+ 10 - 0
master/src/main/java/com/ruoyi/project/training/spec/service/ITStSuccessorService.java

@@ -11,6 +11,16 @@ import com.ruoyi.project.training.spec.domain.TStSuccessor;
  */
 public interface ITStSuccessorService
 {
+    /**
+     * 根据导师STAFF_ID 查询继任者清单列表
+     *
+     * @author 王子文
+     * @date 2022年4月18日
+     * @param tStSuccessor 继任者清单对象
+     * @return 继任者清单
+     */
+    public List<TStSuccessor> selectTStSuccessorListByMentorId(TStSuccessor tStSuccessor);
+
     /**
      * 查询继任者清单
      *

+ 14 - 0
master/src/main/java/com/ruoyi/project/training/spec/service/impl/TStSuccessorServiceImpl.java

@@ -19,6 +19,20 @@ public class TStSuccessorServiceImpl implements ITStSuccessorService
     @Autowired
     private TStSuccessorMapper tStSuccessorMapper;
 
+     /**
+     * 根据导师STAFF_ID 查询继任者清单列表
+     *
+     * @author 王子文
+     * @date 2022年4月18日
+     * @param tStSuccessor 继任者清单对象
+     * @return 继任者清单
+     */
+    @Override
+    public List<TStSuccessor> selectTStSuccessorListByMentorId(TStSuccessor tStSuccessor)
+    {
+        return tStSuccessorMapper.selectTStSuccessorListByMentorId(tStSuccessor);
+    }
+
     /**
      * 查询继任者清单
      *

+ 50 - 3
master/src/main/resources/mybatis/aspen/TDashboarddayelecMapper.xml

@@ -49,8 +49,52 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectTDashboarddayelecVo">
-        select d.id, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.gtg1_lv, d.gtg1_wr, d.gtg2_lv, d.gtg2_wr, d.gtg3_lv, d.gtg3_wr, d.stg1_lv, d.stg1_wr, d.mwh_lv, d.mwh_wr, d.hhp, d.hp, d.lp, d.mp, d.total_consumption, d.hhp_num, d.hhp_temp, d.hp_num, d.hp_temp, d.lp_num, d.lp_temp, d.mp_num, d.mp_temp, d.shihua, d.shiyou, d.shunshiliang, d.ypg, d.daodianliang, d.eve_lec, d.fenggucha, d.byc_elec, d.boc_elec, d.data_date, d.date_day ,s.dept_name from t_dashboarddayelec d
-      left join sys_dept s on s.dept_id = d.dept_id
+        <!-- 王子文 2022年4月15日 修改 -->
+        <!-- select d.id, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.gtg1_lv, d.gtg1_wr, d.gtg2_lv, d.gtg2_wr, d.gtg3_lv, d.gtg3_wr, d.stg1_lv, d.stg1_wr, d.mwh_lv, d.mwh_wr, d.hhp, d.hp, d.lp, d.mp, d.total_consumption, d.hhp_num, d.hhp_temp, d.hp_num, d.hp_temp, d.lp_num, d.lp_temp, d.mp_num, d.mp_temp, d.shihua, d.shiyou, d.shunshiliang, d.ypg, d.daodianliang, d.eve_lec, d.fenggucha, d.byc_elec, d.boc_elec, d.data_date, d.date_day ,s.dept_name from t_dashboarddayelec d left join sys_dept s on s.dept_id = d.dept_id -->
+        select
+            id,
+            del_flag,
+            creater_code,
+            createdate,
+            updater_code,
+            updatedate,
+            gtg1_lv,
+            gtg1_wr,
+            gtg2_lv,
+            gtg2_wr,
+            gtg3_lv,
+            gtg3_wr,
+            stg1_lv,
+            stg1_wr,
+            mwh_lv,
+            mwh_wr,
+            hhp,
+            hp,
+            lp,
+            mp,
+            total_consumption,
+            hhp_num,
+            hhp_temp,
+            hp_num,
+            hp_temp,
+            lp_num,
+            lp_temp,
+            mp_num,
+            mp_temp,
+            shihua,
+            shiyou,
+            shunshiliang,
+            ypg,
+            daodianliang,
+            eve_lec,
+            fenggucha,
+            byc_elec,
+            boc_elec,
+            data_date,
+            date_day
+        from
+            t_dashboarddayelec
+        <!-- 王子文 2022年4月15日 修改 -->
     </sql>
 
     <select id="selectTDashboarddayelecList" parameterType="TDashboarddayelec" resultMap="TDashboarddayelecResult">
@@ -94,7 +138,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="bocElec != null  and bocElec != ''"> and boc_elec = #{bocElec}</if>
             <if test="dataDate != null "> and data_date = #{dataDate}</if>
             <if test="dateDay != null  and dateDay != ''"> and date_day = #{dateDay}</if>
-            and d.del_flag = 0
+            <!-- 王子文 2022年4月15日 修改 -->
+            <!-- and d.del_flag = 0  -->
+            and del_flag = 0
+            <!-- 王子文 2022年4月15日 修改 -->
         </where>
         <!-- 数据范围过滤 -->
         ${params.dataScope}

+ 16 - 4
master/src/main/resources/mybatis/training/spec/TStSuccessorMapper.xml

@@ -21,12 +21,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectTStSuccessorVo">
-        select d.id, d.staff_id,t.name as staffName,m.name as mentorStaffName, d.remarks, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.actualpost, d.mentor_staff_id, d.state ,s.dept_name from t_st_successor d
-      left join sys_dept s on s.dept_id = d.dept_id
-      left join t_staffmgr t on t.staffid = d.staff_id
-      left join t_staffmgr m on m.staffid = d.mentor_staff_id
+          select d.id, d.staff_id,t.name as staffName,m.name as mentorStaffName, d.remarks, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.actualpost, d.mentor_staff_id, d.state ,s.dept_name from t_st_successor d
+          left join sys_dept s on s.dept_id = d.dept_id
+          left join t_staffmgr t on t.staffid = d.staff_id
+          left join t_staffmgr m on m.staffid = d.mentor_staff_id
     </sql>
 
+    <!--王子文 2022年4月18日-->
+    <!--根据导师STAFF_ID 查询继任者清单列表-->
+    <select id="selectTStSuccessorListByMentorId" parameterType="TStSuccessor" resultMap="TStSuccessorResult">
+        <include refid="selectTStSuccessorVo"/>
+        <where>
+            <if test="mentorStaffId != null  and mentorStaffId != ''"> and mentor_staff_id = #{mentorStaffId}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+
     <select id="selectTStSuccessorList" parameterType="TStSuccessor" resultMap="TStSuccessorResult">
         <include refid="selectTStSuccessorVo"/>
         <where>

+ 9 - 0
ui/src/api/training/spec/plan.js

@@ -1,5 +1,14 @@
 import request from '@/utils/request'
 
+// 根据导师ID查询学员列表
+export function getSuccessorListByMentorId(query) {
+  return request({
+    url: '/spec/plan/getSuccessorListByMentorId',
+    method: 'get',
+    params: query
+  })
+}
+
 // 查询培训计划列表
 export function listPlan(query) {
   return request({

+ 15 - 7
ui/src/views/training/matrix/index.vue

@@ -181,10 +181,10 @@
             ></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item :label="$t('是否存在') +$t('空格') + $t('指定人')" prop="haveDesignated">
+        <el-form-item :label="$t('是否存在') +$t('空格') + $t('指定人')" prop="haveDesignated">
           <el-checkbox v-model="haveDesignated"></el-checkbox>
         </el-form-item>
-        <el-form-item :label="$t('指定人员岗位')" prop="designatedPosition" v-if="haveDesignated === true">
+        <el-form-item :label="$t('指定人员岗位')" prop="designatedPositions" v-if="haveDesignated === true">
           <el-select v-model="designatedPositions" multiple :placeholder="$t('请选择') + $t('指定岗位')">
             <el-option
               v-for="dict in designatedPositionOptions"
@@ -306,7 +306,7 @@ export default {
       //指定人员id多选
       designatedStaffs: [],
       //是否存在岗位多选
-      haveDesignated: '',
+      haveDesignated: false,
       //人员表联查
       stffmgrOptions: undefined,
       //人员表查询参数
@@ -537,15 +537,16 @@ export default {
             })
           })
         });
+
         //指定人员下拉框内容
         if (this.form.designatedPosition != null) {
           this.haveDesignated = true;
           this.designatedPositions = this.form.designatedPosition.split(',');
-        }else {
+        } else {
           this.haveDesignated = false;
           this.designatedPositions = [];
         }
-
+        
         //MOC下拉框内容
         if (response.data.involvedMoc === 'true') {
           this.form.involvedMoc = true
@@ -585,8 +586,15 @@ export default {
               designatedId = value;
             }
           })
-          this.form.designatedPosition = designatedId;
-
+          // 王子文 2022年4月18日 10点50分 修改
+          // 如果 复选框被选中 将指定人信息存入数据传输对象
+          if (this.haveDesignated === true) {
+            this.form.designatedPosition = designatedId;
+          } else {
+            this.form.designatedPosition = null;
+          }
+          // this.form.designatedPosition = designatedId;
+          
           var designatedOther = null;
           this.otherPositions.forEach(function (value,key,arr) {
             if (key != 0) {

+ 9 - 2
ui/src/views/training/regular/index.vue

@@ -322,7 +322,7 @@
         //授课人多选
         lecturers: [],
         //是否存在岗位多选
-        haveDesignated: '',
+        haveDesignated: false,
         //人员表联查
         stffmgrOptions: undefined,
         //人员表查询参数
@@ -719,7 +719,14 @@
                 designatedId = value;
               }
             })
-            this.form.designatedPosition = designatedId;
+            // 王子文 2022年4月18日 13点31分 修改
+            // 如果 复选框被选中 将指定人信息存入数据传输对象
+            if (this.haveDesignated === true) {
+              this.form.designatedPosition = designatedId;
+            } else {
+              this.form.designatedPosition = null;
+            }
+            // this.form.designatedPosition = designatedId;
 
             var designatedOther = null;
             this.otherPositions.forEach(function (value,key,arr) {

+ 28 - 4
ui/src/views/training/spec/plan/index.vue

@@ -150,9 +150,16 @@
     <!-- 添加或修改培训计划对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="培训员工编号" prop="staffId">
-          <el-input v-model="form.staffId" placeholder="请输入培训员工编号" />
-        </el-form-item>
+        <!-- <el-form-item label="培训员工" prop="staffId">
+          <el-select v-model="form.successorOptions" placeholder="请选择学员">
+            <el-option
+              v-for="successor in successorOptions"
+              :key="successor.value"
+              :label="successor.label"
+              :value="successor.value"
+            ></el-option>
+          </el-select>
+        </el-form-item> -->
         <el-form-item label="培训内容" prop="plantName">
           <el-input v-model="form.plantName" placeholder="请输入培训内容" />
         </el-form-item>
@@ -234,7 +241,7 @@
 </template>
 
 <script>
-import { listPlan, getPlan, delPlan, addPlan, updatePlan, exportPlan, importTemplate} from "@/api/training/spec/plan";
+import { listPlan, getPlan, delPlan, addPlan, updatePlan, exportPlan, importTemplate, getSuccessorListByMentorId} from "@/api/training/spec/plan";
 import { treeselect } from "@/api/system/dept";
 import { getToken } from "@/utils/auth";
 import Treeselect from "@riophae/vue-treeselect";
@@ -270,6 +277,12 @@ export default {
       open: false,
       // 学习状态字典
       studyStateOptions: [],
+      // 学员列表
+      successorOptions: [],
+      // 包含导师ID的查询对象
+      queryObject: {
+        mentorStaffId: "00427"
+      },
         // 用户导入参数
         upload: {
             // 是否显示弹出层(用户导入)
@@ -319,8 +332,19 @@ export default {
     this.getDicts("st_study_state").then(response => {
       this.studyStateOptions = response.data;
     });
+    this.getSuccessorOptions();
   },
   methods: {
+    /** 查询学员下拉列表 */
+    getSuccessorOptions() {
+      getSuccessorListByMentorId(this.queryObject).then(response => {
+        let successorList = response.data;
+        for (successor in successorList) {
+          console.log(successor);
+        }
+        // this.successorOptions = response.data;
+      });
+    },
     /** 查询培训计划列表 */
     getList() {
       this.loading = true;