Pārlūkot izejas kodu

直属审核人的日报审核
增加批量项目功能,只对超级管理员开放

seyason 2 gadi atpakaļ
vecāks
revīzija
370b1c238e

+ 37 - 78
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -907,71 +907,6 @@ public class ReportController {
             }
         }
 
-/*        if(company.getId()==862){
-            Collection<Integer> projectIds = reportList.stream().map(Report::getProjectId).distinct().collect(Collectors.toList());
-            List<Project> targetProjectList = projectList.stream().filter(pl -> projectIds.contains(pl.getId())).collect(Collectors.toList());
-            String creatorId = reportList.get(0).getCreatorId();
-            User reportUser = userMapper.selectById(creatorId);
-            DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
-            LocalDateTime time = LocalDateTime.now();
-            String format = time.format(df);
-            String tokenOfYiWei = getTokenOfYiWei();
-            String url = "http://183.194.0.98:3202/api/web-server/controlCenter/billApply";
-            HttpHeaders headers = new HttpHeaders();
-            headers.setContentType(MediaType.APPLICATION_JSON);
-            headers.add("token",tokenOfYiWei);
-            headers.add("Accept-Language","zh-CN");
-            JSONObject body=new JSONObject();
-            body.put("dataSource","工时管家");
-            body.put("type","EXPENSE");
-            body.put("applicant",reportUser.getName());
-            body.put("applyTime",format);
-            body.put("billNo","GS"+ reportUser.getId()+reportList.get(0).getCreateDate());
-            JSONArray expenseDetails=new JSONArray();
-            for (Report report : reportList) {
-                Optional<Project> first = targetProjectList.stream().filter(tl -> tl.getId().equals(report.getProjectId())).findFirst();
-                if(first.isPresent()){
-                    JSONObject expenseDetail =new JSONObject();
-                    expenseDetail.put("company","FONE");
-                    expenseDetail.put("department","DEFAULT");
-                    expenseDetail.put("project",first.get().getProjectCode());
-                    expenseDetail.put("expenseItem","DEFAULT");
-                    expenseDetail.put("amount",report.getWorkingTime());
-                    expenseDetails.add(expenseDetail);
-                }
-
-            }
-            body.put("expenseDetails",expenseDetails);
-            HttpEntity<String> requestEntity = new HttpEntity<String>(body.toJSONString(), headers);
-            ResponseEntity<String> responseEntity = this.restTemplate.exchange(url,
-                    HttpMethod.POST, requestEntity, String.class);
-            if (responseEntity.getStatusCode() == HttpStatus.OK) {
-                String resp = responseEntity.getBody();
-                JSONObject json = JSONObject.parseObject(resp);
-                if(json.getIntValue("status")==0){
-                    JSONArray data = json.getJSONArray("data");
-                    JSONObject jsonObject = data.getJSONObject(0);
-                    Integer availableBudgetAmount = jsonObject.getInteger("availableBudgetAmount");
-                    Integer occurredBudgetAmount = jsonObject.getInteger("occurredBudgetAmount");
-                    BigDecimal divide = new BigDecimal(occurredBudgetAmount).add(new BigDecimal(jsonObject.getInteger("amount"))).divide(new BigDecimal(availableBudgetAmount), 3, RoundingMode.HALF_UP);
-                    if(divide.doubleValue()>0.85){
-                        HttpRespMsg httpRespMsg=new HttpRespMsg();
-                        httpRespMsg.setError("当前预算占用已到85%");
-                    }
-                } else if(json.getIntValue("status")==14001){
-                    HttpRespMsg httpRespMsg=new HttpRespMsg();
-                    httpRespMsg.setError("当前项目预算不足,无法填报");
-                    return httpRespMsg;
-                }else if(json.getIntValue("status")==14002){
-                    HttpRespMsg httpRespMsg=new HttpRespMsg();
-                    httpRespMsg.setError("未找到预算控制单元:"+json.getString("message"));
-                    return httpRespMsg;
-                }
-            }
-        }*/
-
-
-
         //如果锁定工作时长上限的话,需要校验每日的合计工作时长
         if (comTimeType.getLockWorktime() == 1) {
             for (Report report : reportList) {
@@ -1067,22 +1002,46 @@ public class ReportController {
 
         if(comTimeType.getReportAuditType()==5){
             List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",user.getCompanyId()));
+            List<User> tempAuditorUserList = new ArrayList<>();
+            List<String> creatorIdList = reportList.stream().map(Report::getCreatorId).collect(Collectors.toList());
+            List<User> creatorList = userMapper.selectList(new QueryWrapper<User>().in("id", creatorIdList));
+            //查询creatorList的直属审核人
+            for (User creator : creatorList) {
+                if (!StringUtils.isEmpty(creator.getSuperiorId())) {
+                    User superior = userMapper.selectById(creator.getSuperiorId());
+                    if (!tempAuditorUserList.stream().anyMatch(item -> item.getId().equals(superior.getId()))) {
+                        tempAuditorUserList.add(superior);
+                    }
+                }
+            }
             for (Report report : reportList) {
                 report.setDepartmentAuditState(0);
-                Optional<Department> first = departmentList.stream().filter(dl -> dl.getDepartmentId().equals(report.getDeptId())).findFirst();
-                if(first.isPresent()){
-                    if(StringUtils.isEmpty(first.get().getManagerId())){
-                        HttpRespMsg httpRespMsg=new HttpRespMsg();
-                        httpRespMsg.setError("当前所在部门["+first.get().getDepartmentName()+"]不存在负责人,请联系管理员设置");
-                        return httpRespMsg;
-                    }
-                    report.setAuditDeptid(first.get().getDepartmentId());
-                    report.setProjectAuditorId(null);
+                //优先按照当前日报填写人的直属审核人审核
+                User reportOwner = creatorList.stream().filter(c->c.getId().equals(report.getCreatorId())).findFirst().get();
+                if (!StringUtils.isEmpty(reportOwner.getSuperiorId())) {
+                    User auditor = tempAuditorUserList.stream().filter(t -> t.getId().equals(reportOwner.getSuperiorId())).findFirst().get();
+                    report.setProjectAuditorId(auditor.getId());
+                    report.setProjectAuditorName(auditor.getName());
                     report.setProjectAuditState(0);
-                    report.setAuditDeptManagerid(first.get().getManagerId());
-                    report.setIsDeptAudit(1);
-                    if(report.getCreatorId().equals(first.get().getManagerId())){
-                        report.setState(0);
+                    if (report.getCreatorId().equals(auditor.getId())) {
+                        report.setState(1);
+                    }
+                } else {
+                    Optional<Department> first = departmentList.stream().filter(dl -> dl.getDepartmentId().equals(report.getDeptId())).findFirst();
+                    if(first.isPresent()){
+                        if(StringUtils.isEmpty(first.get().getManagerId())){
+                            HttpRespMsg httpRespMsg=new HttpRespMsg();
+                            httpRespMsg.setError("当前所在部门["+first.get().getDepartmentName()+"]不存在负责人,请联系管理员设置");
+                            return httpRespMsg;
+                        }
+                        report.setAuditDeptid(first.get().getDepartmentId());
+                        report.setProjectAuditorId(null);
+                        report.setProjectAuditState(0);
+                        report.setAuditDeptManagerid(first.get().getManagerId());
+                        report.setIsDeptAudit(1);
+                        if(report.getCreatorId().equals(first.get().getManagerId())){
+                            report.setState(1);
+                        }
                     }
                 }
             }

+ 1 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -7320,8 +7320,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         Integer integer = array.get(0);
         //校验项目归属
         Integer companyId = projectMapper.selectById(integer).getCompanyId();
-        if (companyId.intValue() != user.getCompanyId().intValue()) {
-            //httpRespMsg.setError("无权操作");
+        if (companyId.intValue() != user.getCompanyId().intValue() || !user.getRoleName().equals("超级管理员")) {
             httpRespMsg.setError(MessageUtils.message("access.operationError"));
         } else {
             for (Integer id : array) {

+ 23 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -1336,6 +1336,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 if(inductionDate!=null&&inductionDate!=""){
                     oldUser.setInductionDate(LocalDate.parse(inductionDate,dtf));
                 }
+                //检查直属审核人是否发生变化
+                boolean superiorChange = false;
+                String oldSuperiorId = oldUser.getSuperiorId();
+                if (!StringUtils.isEmpty(oldSuperiorId) && !StringUtils.isEmpty(superiorId) && !oldUser.getSuperiorId().equals(superiorId)) {
+                    superiorChange = true;
+                }
+
                 userMapper.updateById(oldUser
                         .setName(name)
                         .setPhone(phone)
@@ -1362,6 +1369,22 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                     UserSalary userSalary = UserSalary.copyFromUser(oldUser);
                     userSalaryMapper.insert(userSalary);
                 }
+                if (superiorChange) {
+                    //检查是否有审核中的日报
+                    if (timeTypeMapper.selectById(oldUser.getCompanyId()).getReportAuditType() == 5) {
+                        QueryWrapper<Report> queryWrapper = new QueryWrapper<>();
+                        queryWrapper.eq("company_id", oldUser.getCompanyId())
+                                .eq("creator_id", oldUser.getId())
+                                .eq("state", 0)
+                                .eq("project_auditor_id", oldSuperiorId);
+                        Integer count = reportMapper.selectCount(queryWrapper);
+                        if (count > 0) {
+                            //更新日报审核人为新的superiorId
+                            Report updateReport = new Report().setProjectAuditorId(superiorId).setProjectAuditorName(userMapper.selectById(superiorId).getName());
+                            reportMapper.update(updateReport, queryWrapper);
+                        }
+                    }
+                }
                 //更新人员专业证书表
                 List<UserCert> oldCertList = userCertMapper.selectList(new QueryWrapper<UserCert>().eq("user_id", targetId));
                 List<Integer> removeCertList = new ArrayList<>();

+ 4 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -396,7 +396,7 @@
             <template v-if="(showColumnWidth != '0' || permissions.projectManagement)">
                 <el-button size="small" type="primary" @click="addProPreson()">{{ $t('projectparticipantsinbatches') }}</el-button>
                 <el-button size="small" type="primary" v-if="permissions.projectManagement" @click="batchIncharger()">{{ $t('projectmanagersinbatches') }}</el-button>
-                <!-- <el-button size="small" type="primary" @click="batchDelete()">批量删除</el-button> -->
+                <el-button size="small" type="primary" v-if="user.roleName='超级管理员'" @click="batchDelete()" :loading="isDeleting">批量删除</el-button>
             </template>
             
             <el-pagination
@@ -1392,6 +1392,7 @@ a {
         },
         data() {
             return {
+                isDeleting: false,
                 forSubProjectlist:[],
                 copySubPListVisible: false,
                 projectManagerEdit: false,
@@ -2316,10 +2317,12 @@ a {
                     proArr.push(this.checkedProjectArr[i].id)
                     // proArr += this.checkedProjectArr[i].id + ','
                 }
+                this.isDeleting = true;
                 // proArr = proArr.substring(0,proArr.length - 1)
                 this.http.post('/project/batchDeleteProject',{
                     projectIdArray: JSON.stringify(proArr)
                 },res => {
+                    this.isDeleting = false;
                     if(res.code == 'ok'){
                         this.$message({
                             message: this.$t('message.successfullyDeleted'),