Преглед на файлове

停用时检查项目复审人

QuYueTing преди 2 месеца
родител
ревизия
2aa190eeda

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -1606,5 +1606,10 @@ public class ProjectController {
     public HttpRespMsg batchSetProjectTaskExecutor(@RequestParam String projectIds,@RequestParam String userIds){
         return projectService.batchSetProjectTaskExecutor(projectIds,userIds);
     }
+
+    @RequestMapping("/transferProjectReviwer")
+    public HttpRespMsg transferProjectReviwer(String userId, String targetAuditorId){
+        return projectService.transferProjectReviwer(userId,targetAuditorId);
+    }
 }
 

+ 17 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserController.java

@@ -111,11 +111,13 @@ public class UserController {
 
     @Resource
     private ParticipationMapper participationMapper;
-
+    @Resource
+    private ProjectMapper projectMapper;
     public static HashMap<String, Integer> corpddJobCenter = new HashMap();
     //用于控制线程锁
     public static HashMap<String, CorpwxJobResult> corpwxJobCenter = new HashMap();
 
+
     /**
      * 登录网页端
      * username 用户名
@@ -751,6 +753,19 @@ public class UserController {
     public HttpRespMsg deactiveUser(User user, @RequestParam(required = false, defaultValue = "true") Boolean isPermanent) {
         HttpRespMsg msg = new HttpRespMsg();
         Integer companyId = userService.getById(request.getHeader("token")).getCompanyId();
+        TimeType timeType = timeTypeMapper.selectById(companyId);
+        if (isPermanent && timeType.getReportAuditType() == 8) {
+            //项目经理先审核,复核人后审核,校验复核人
+            LambdaQueryWrapper<Project> projectLambdaQueryWrapper = new LambdaQueryWrapper<Project>();
+            projectLambdaQueryWrapper.eq(Project::getReviwerId, user.getId());
+            int cnt = projectMapper.selectCount(projectLambdaQueryWrapper);
+            if (cnt > 0) {
+                msg.setCode("project");
+                msg.setMsg("当前用户担任项目复核人,需要转移给其他人才能停用");
+                return msg;
+            }
+        }
+
         //需要检查待他审核的日报
         LambdaQueryWrapper<Report> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(Report::getState,0);
@@ -758,7 +773,7 @@ public class UserController {
         queryWrapper.and(wrapper->wrapper.and(wr->wr.eq(Report::getAuditDeptManagerid,user.getId()).eq(Report::getIsDeptAudit,1)).or(wr1->wr1.eq(Report::getProjectAuditorId,user.getId()).eq(Report::getIsDeptAudit,0)));
         Integer count = reportMapper.selectCount(queryWrapper);
         if(count>0){
-            msg.setError("当前员工有待审核日报,请确认处理方式?");
+            msg.setError("当前员工有担任审核人的日报,请确认处理方式?");
             return msg;
         }
         user.setIsActive(0);

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java

@@ -321,4 +321,6 @@ public interface ProjectService extends IService<Project> {
     HttpRespMsg getProjectTaskPlanAndRealCost(Integer pageIndex, Integer pageSize, Integer projectId,  HttpServletRequest request, Integer taskType);
 
     HttpRespMsg exportProjectTaskPlanAndRealCost(Integer projectId, HttpServletRequest request, Integer taskType);
+
+    HttpRespMsg transferProjectReviwer(String userId, String targetAuditorId);
 }

+ 9 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -1224,6 +1224,15 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return httpRespMsg;
     }
 
+    @Override
+    public HttpRespMsg transferProjectReviwer(String userId, String targetAuditorId) {
+        HttpRespMsg msg = new HttpRespMsg();
+        Project p = new Project();
+        p.setReviwerId(targetAuditorId);
+        projectMapper.update(p, new QueryWrapper<Project>().eq("reviwer_id", userId));
+        return msg;
+    }
+
     public HttpRespMsg getProjectEstimatedWork(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         //通过公司id获取该公司所有的项目列表

+ 53 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

@@ -691,6 +691,25 @@
                 <el-button type="primary" @click="confirmInactiveWay" >{{ $t('btn.submit') }}</el-button>
             </span>
         </el-dialog>
+        <el-dialog title="离职信息转移" :visible.sync="projectReviewerSelectDialog" width="500px" >
+            <p>*该用户在项目中担任复审人,请选择其他人接手</p>
+            <el-form :model="userInActiveForm" label-width="120px">
+                <!-- 主要负责人 -->
+                <el-form-item label="选择新的复审人">
+                    <el-select v-model="userInActiveForm.targetAuditorId" filterable v-if="user.userNameNeedTranslate != '1'" clearable  :placeholder="$t('defaultText.pleaseChoose')" style="width: 200px">
+                        <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id">
+                          <span style="float: left">{{ item.name }}</span>
+                          <span style="float: right; color: #8492a6; font-size: 13px">{{ item.jobNumber }}</span>
+                        </el-option>
+                    </el-select>
+                    <selectCat :size="'medium'" :filterable="true" :clearable="true" :widthStr="'360'" v-if="user.userNameNeedTranslate == '1'" :subject="users" :subjectId="userInActiveForm.targetAuditorId" :distinction="'30'" @selectCal="selectCal"></selectCat>
+                </el-form-item>
+            </el-form>
+            <span slot="footer" class="dialog-footer">
+                <el-button @click="projectReviewerSelectDialog = false">{{ $t('btn.cancel') }}</el-button>
+                <el-button type="primary" @click="confirmTransferReviwer" >{{ $t('btn.submit') }}</el-button>
+            </span>
+        </el-dialog>
         <!-- 管理专业证书 -->
         <el-dialog :title="$t('professionalCertificate inManagement')" :visible.sync="managementDiolog" width="500px" :before-close="handleClose">
             <div>
@@ -991,6 +1010,7 @@ export default {
     return {
       isPermanent: true,
       reportAuditorSelectDialog: false,
+      projectReviewerSelectDialog: false,
       userInActiveForm:{way:0,targetAuditorId:null},
       isExporting: false,
       isSyncContact: false,
@@ -2317,7 +2337,11 @@ export default {
               type: "success",
             });
             this.getUser();
-          } else {
+          } else if (res.code == 'project') {
+              //项目复核人需要转移为其他人 
+              this.userInActiveForm.userId = this.deactiveUser.id;
+              this.projectReviewerSelectDialog = true;
+          }else {
             //新的模式
             this.userInActiveForm.userId = this.deactiveUser.id;
             this.reportAuditorSelectDialog = true;
@@ -2331,7 +2355,34 @@ export default {
         }
       );
     },
-
+    confirmTransferReviwer() {
+      var url = '/project/transferProjectReviwer'
+      this.http.post(
+          url,
+          this.userInActiveForm,
+          (res) => {
+            if (res.code == "ok") {
+              this.$message({
+                message: '复核人已转移,请继续停用',
+                type: "success",
+              });
+              this.projectReviewerSelectDialog = false;
+            } else {
+              this.$message({
+                message: res.msg,
+                type: "error",
+              });
+            }
+          },
+          (error) => {
+            this.listLoading = false;
+            this.$message({
+              message: error,
+              type: "error",
+            });
+          }
+        );
+    },
     confirmInactiveWay() {
       this.userInActiveForm.isPermanent = this.isPermanent;
       var url = this.userInActiveForm.way?'/report/transferReportAuditor':'/report/denyByCheckId'