Quellcode durchsuchen

Merge remote-tracking branch 'origin/master'

Admin vor 2 Jahren
Ursprung
Commit
79ec0c48e7

+ 4 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -1541,7 +1541,7 @@ public class WeiXinCorpController {
                                 newCompany.setPackageProvider(0);//供应商模块
                                 break;
                             //建筑版
-                            case "spd04f1b0582a0fe19":
+                            case "sp29bdb884f4a78392":
                                 newCompany.setPackageProject(1);//项目协作平台
                                 newCompany.setPackageOa(0);//OA平台;请假,出差等
                                 newCompany.setPackageExpense(1);//费用报销
@@ -1550,7 +1550,7 @@ public class WeiXinCorpController {
                                 newCompany.setPackageProvider(0);//供应商模块
                                 break;
                             //旗舰版
-                            case "specf7090ca7757870":
+                            case "sp852fec2d1198957a":
                                 newCompany.setPackageProject(1);//项目协作平台
                                 newCompany.setPackageOa(1);//OA平台;请假,出差等
                                 newCompany.setPackageExpense(1);//费用报销
@@ -3438,7 +3438,7 @@ public class WeiXinCorpController {
                     newCompany.setPackageProvider(0);//供应商模块
                     break;
                 //建筑版
-                case "spd04f1b0582a0fe19":
+                case "sp29bdb884f4a78392":
                     newCompany.setPackageProject(1);//项目协作平台
                     newCompany.setPackageOa(0);//OA平台;请假,出差等
                     newCompany.setPackageExpense(1);//费用报销
@@ -3447,7 +3447,7 @@ public class WeiXinCorpController {
                     newCompany.setPackageProvider(0);//供应商模块
                     break;
                 //旗舰版
-                case "specf7090ca7757870":
+                case "sp852fec2d1198957a":
                     newCompany.setPackageProject(1);//项目协作平台
                     newCompany.setPackageOa(1);//OA平台;请假,出差等
                     newCompany.setPackageExpense(1);//费用报销

+ 105 - 68
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -539,6 +539,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 }
             }
         }
+        boolean inchargerChanged = false;
+        String oldInchargerId = null;
         if (id == null) {
             //新增项目
             if (name == null) {
@@ -684,6 +686,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 httpRespMsg.setError(MessageUtils.message("project.submitFailByNoRepeat"));
             } else {
                 Project project = projectMapper.selectById(id);
+                if (inchargerId != null && !inchargerId.equals(project.getInchargerId())) {
+                    inchargerChanged = true;
+                    oldInchargerId = project.getInchargerId();
+                }
                 Project p = new Project();
                 p.setProjectName(name).setId(id).setCompanyId(companyId).setProjectCode(code).setInchargerId(inchargerId)
                         .setLevel(level)
@@ -931,59 +937,73 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }
                 }
             } else {
-                //提取变化的部分
-                List<ProjectAuditor> oldAuditorList = projectAuditorMapper.selectList(new QueryWrapper<ProjectAuditor>().eq("project_id", id));
-                List<ProjectAuditor> newList = new ArrayList<>();
-                String firstAuditorId = null;
-                if (auditorIds.size() > 0) {
-                    firstAuditorId = auditorIds.get(0);
-                    List<User> userList = userMapper.selectList(new QueryWrapper<User>().in("id", auditorIds));
-                    System.out.println("有auditor===");
-                    List<User> newUserList = userList.stream()
-                                .filter(u->!oldAuditorList.stream().anyMatch(old->old.getAuditorId().equals(u.getId())))
-                                .collect(Collectors.toList());
-                    if (newUserList.size() > 0) {
-                        for (User u : newUserList) {
-                            ProjectAuditor a = new ProjectAuditor();
-                            a.setProjectId(id);
-                            a.setAuditorId(u.getId());
-                            a.setAuditorName(u.getName());
-                            newList.add(a);
-                        }
-                        projectAuditorService.saveBatch(newList);
-                    }
-                    //检查有没有需要删除的
-                    List<ProjectAuditor> deleteList = oldAuditorList.stream()
-                            .filter(old->!userList.stream().anyMatch(u->u.getId().equals(old.getAuditorId())))
-                            .collect(Collectors.toList());
-
-                    if (deleteList.size() > 0) {
-                        projectAuditorService.removeByIds(deleteList.stream().map(ProjectAuditor::getId).collect(Collectors.toList()));
-                    }
-                    if (newList.size() == 0 && deleteList.size() == oldAuditorList.size()) {
-                        //全部被删除了的情况,保留项目负责人
-                        if (!StringUtils.isEmpty(inchargerId)) {
-                            ProjectAuditor auditor = new ProjectAuditor();
-                            auditor.setProjectId(id);
-                            auditor.setAuditorId(inchargerId);
-                            auditor.setAuditorName(userMapper.selectById(inchargerId).getName());
-                            projectAuditorMapper.insert(auditor);
-                        }
-                    }
-                    //检查日报,如果有删除的审核人的正在审核的日报,要更新审核人为当前的第一个人
-                    Report updateItem = new Report();
-                    if (deleteList.size() > 0 && firstAuditorId != null) {
-                        updateItem.setProjectAuditorId(firstAuditorId);
-                        List<String> collect = deleteList.stream().map(ProjectAuditor::getAuditorId).collect(Collectors.toList());
+                //针对reportAuditType=2(先任务分组负责人审核再项目经理审核的情况),如果项目经理变更,需要把老项目经理负责的日报变成新项目经理负责
+                if (timeType.getReportAuditType() == 2) {
+                    if (inchargerChanged && oldInchargerId != null) {
+                        Report updateItem = new Report();
+                        updateItem.setProjectAuditorId(inchargerId);
                         reportMapper.update(updateItem, new QueryWrapper<Report>()
                                 .eq("company_id", companyId)
-                                .in("project_auditor_id", collect)
+                                .eq("project_auditor_id", oldInchargerId)
                                 .eq("state", 0)
+                                .eq("group_audit_state", 1)//任务分组已审核,当前是项目经理审核
                                 .eq("project_id", id));
                     }
                 } else {
-                    //清空
-                    projectAuditorMapper.delete(new QueryWrapper<ProjectAuditor>().eq("project_id", id));
+                    //其他审核情况,提取变化的部分
+                    List<ProjectAuditor> oldAuditorList = projectAuditorMapper.selectList(new QueryWrapper<ProjectAuditor>().eq("project_id", id));
+                    List<ProjectAuditor> newList = new ArrayList<>();
+                    String firstAuditorId = null;
+                    if (auditorIds.size() > 0) {
+                        firstAuditorId = auditorIds.get(0);
+                        List<User> userList = userMapper.selectList(new QueryWrapper<User>().in("id", auditorIds));
+                        System.out.println("有auditor===");
+                        List<User> newUserList = userList.stream()
+                                .filter(u->!oldAuditorList.stream().anyMatch(old->old.getAuditorId().equals(u.getId())))
+                                .collect(Collectors.toList());
+                        if (newUserList.size() > 0) {
+                            for (User u : newUserList) {
+                                ProjectAuditor a = new ProjectAuditor();
+                                a.setProjectId(id);
+                                a.setAuditorId(u.getId());
+                                a.setAuditorName(u.getName());
+                                newList.add(a);
+                            }
+                            projectAuditorService.saveBatch(newList);
+                        }
+                        //检查有没有需要删除的
+                        List<ProjectAuditor> deleteList = oldAuditorList.stream()
+                                .filter(old->!userList.stream().anyMatch(u->u.getId().equals(old.getAuditorId())))
+                                .collect(Collectors.toList());
+
+                        if (deleteList.size() > 0) {
+                            projectAuditorService.removeByIds(deleteList.stream().map(ProjectAuditor::getId).collect(Collectors.toList()));
+                        }
+                        if (newList.size() == 0 && deleteList.size() == oldAuditorList.size()) {
+                            //全部被删除了的情况,保留项目负责人
+                            if (!StringUtils.isEmpty(inchargerId)) {
+                                ProjectAuditor auditor = new ProjectAuditor();
+                                auditor.setProjectId(id);
+                                auditor.setAuditorId(inchargerId);
+                                auditor.setAuditorName(userMapper.selectById(inchargerId).getName());
+                                projectAuditorMapper.insert(auditor);
+                            }
+                        }
+                        //检查日报,如果有删除的审核人的正在审核的日报,要更新审核人为当前的第一个人
+                        Report updateItem = new Report();
+                        if (deleteList.size() > 0 && firstAuditorId != null) {
+                            updateItem.setProjectAuditorId(firstAuditorId);
+                            List<String> collect = deleteList.stream().map(ProjectAuditor::getAuditorId).collect(Collectors.toList());
+                            reportMapper.update(updateItem, new QueryWrapper<Report>()
+                                    .eq("company_id", companyId)
+                                    .in("project_auditor_id", collect)
+                                    .eq("state", 0)
+                                    .eq("project_id", id));
+                        }
+                    } else {
+                        //清空
+                        projectAuditorMapper.delete(new QueryWrapper<ProjectAuditor>().eq("project_id", id));
+                    }
                 }
             }
         }
@@ -7989,6 +8009,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     public HttpRespMsg batchExchangeIncharger(String projectIds, String inchargerId, HttpServletRequest request) {
         HttpRespMsg httpRespMsg=new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("token"));
+        TimeType timeType = timeTypeMapper.selectById(user.getCompanyId());
         String[] split = projectIds.split(",");
         List<String> stringlist = Arrays.asList(split);
         List<Integer> list=new ArrayList<>();
@@ -7998,28 +8019,44 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", list));
         List<Participation> participationList = participationMapper.selectList(new QueryWrapper<Participation>().in("project_id", list));
         for (Project project : projectList) {
-            project.setInchargerId(inchargerId);
-            if(projectMapper.updateById(project)<=0){
-                //httpRespMsg.setError("操作失败");
-                httpRespMsg.setError(MessageUtils.message("other.operationFail"));
-                return httpRespMsg;
-            }
-            boolean b = participationList.stream().anyMatch(pl -> pl.getProjectId().equals(project.getId()) && pl.getUserId().equals(inchargerId));
-            //项目经理不在参与人当中时 要添加
-            if(!b){
-                Participation participation=new Participation();
-                participation.setProjectId(project.getId());
-                participation.setUserId(inchargerId);
-                participationMapper.insert(participation);
+            String oldInchargerId = project.getInchargerId();
+            if (!inchargerId.equals(oldInchargerId)) {
+                project.setInchargerId(inchargerId);
+                if(projectMapper.updateById(project)<=0){
+                    //httpRespMsg.setError("操作失败");
+                    httpRespMsg.setError(MessageUtils.message("other.operationFail"));
+                    return httpRespMsg;
+                }
+                boolean b = participationList.stream().anyMatch(pl -> pl.getProjectId().equals(project.getId()) && pl.getUserId().equals(inchargerId));
+                //项目经理不在参与人当中时 要添加
+                if(!b){
+                    Participation participation=new Participation();
+                    participation.setProjectId(project.getId());
+                    participation.setUserId(inchargerId);
+                    participationMapper.insert(participation);
+                }
+                OperationRecord operationRecord=new OperationRecord();
+                operationRecord.setOperatorName(user.getName());
+                operationRecord.setProjectName(project.getProjectName());
+                operationRecord.setCompanyId(project.getCompanyId());
+                operationRecord.setOperationTime(LocalDateTime.now());
+                operationRecord.setContent("批量操作:[设置项目负责人为:"+inchargerId+"]");
+                operationRecord.setModuleName("项目管理");
+                operationRecordService.save(operationRecord);
+                //针对reportAuditType=2(先任务分组负责人审核再项目经理审核的情况),如果项目经理变更,需要把老项目经理负责的日报变成新项目经理负责
+                if (timeType.getReportAuditType() == 2) {
+                    if (oldInchargerId != null) {
+                        Report updateItem = new Report();
+                        updateItem.setProjectAuditorId(inchargerId);
+                        reportMapper.update(updateItem, new QueryWrapper<Report>()
+                                .eq("company_id", timeType.getCompanyId())
+                                .eq("project_auditor_id", oldInchargerId)
+                                .eq("state", 0)
+                                .eq("group_audit_state", 1)//任务分组已审核,当前是项目经理审核
+                                .eq("project_id", project.getId()));
+                    }
+                }
             }
-            OperationRecord operationRecord=new OperationRecord();
-            operationRecord.setOperatorName(user.getName());
-            operationRecord.setProjectName(project.getProjectName());
-            operationRecord.setCompanyId(project.getCompanyId());
-            operationRecord.setOperationTime(LocalDateTime.now());
-            operationRecord.setContent("批量操作:[设置项目负责人为:"+inchargerId+"]");
-            operationRecord.setModuleName("项目管理");
-            operationRecordService.save(operationRecord);
         }
         return httpRespMsg;
     }

+ 30 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -1484,7 +1484,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             User auditTargetUser = userMapper.selectById(creatorId);
             if (timeType.getReportAuditType() == 2) {
                 //先按分组审核,再进行项目经理审核
-                List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, project_id, project_audit_state").in("id", ids));
+                List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, project_id, project_audit_state, project_auditor_id").in("id", ids));
                 List<Integer> assProjectIds = reportList.stream().map(Report::getProjectId).collect(Collectors.toList());
                 List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id, incharger_id").in("id", assProjectIds));
                 Optional<Project> first = projectList.stream().filter(p -> StringUtils.isEmpty(p.getInchargerId())).findFirst();
@@ -1501,10 +1501,20 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     if (r.getGroupAuditState() == 0) {
                         r.setGroupAuditState(1);
                         r.setProjectAuditTime(LocalDateTime.now());
+
                         //分组审核完,该项目的pm审核了
                         Project project1 = projectList.stream().filter(project -> project.getId().equals(r.getProjectId())).findFirst().get();
-                        r.setProjectAuditorId(project1.getInchargerId());
-                        r.setProjectAuditorName(userMapper.selectById(project1.getInchargerId()).getName());
+
+                        //如果分组负责人和项目经理是同一个人,那么就不需要项目经理审核了
+                        if (r.getProjectAuditorId().equals(project1.getInchargerId())) {
+                            r.setProjectAuditState(1);
+                            r.setProjectAuditTime(LocalDateTime.now());
+                            r.setState(1);
+                        } else {
+                            //不是同一个人,那么就需要项目经理审核
+                            r.setProjectAuditorId(project1.getInchargerId());
+                            r.setProjectAuditorName(userMapper.selectById(project1.getInchargerId()).getName());
+                        }
                     } else if (r.getProjectAuditState() == 0) {
                         r.setProjectAuditState(1);
                         r.setProjectAuditTime(LocalDateTime.now());
@@ -2556,7 +2566,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             if (timeType.getReportAuditType() == 2) {
                 allUsers = userMapper.selectList(new QueryWrapper<User>().select("id, name, department_id").eq("company_id", company.getId()));
                 //先分组负责人审核,再项目负责人审核
-                List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, project_id, project_audit_state, creator_id, create_date, company_id").in("id", ids));
+                List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state, group_audit_state, project_id, project_audit_state, project_auditor_id, creator_id, create_date, company_id").in("id", ids));
                 allReports = reportList;
                 List<Integer> assProjectIds = reportList.stream().map(Report::getProjectId).collect(Collectors.toList());
                 List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id, incharger_id").in("id", assProjectIds));
@@ -2574,10 +2584,23 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     if (r.getGroupAuditState() == 0) {
                         r.setGroupAuditState(1);
                         r.setProjectAuditTime(LocalDateTime.now());
-                        //分组审核完,该项目的pm审核了
+
                         Project project1 = projectList.stream().filter(project -> project.getId().equals(r.getProjectId())).findFirst().get();
-                        r.setProjectAuditorId(project1.getInchargerId());
-                        r.setProjectAuditorName(userMapper.selectById(project1.getInchargerId()).getName());
+                        Optional<User> pmFirst = allUsers.stream().filter(a -> a.getId().equals(project1.getInchargerId())).findFirst();
+                        if (!pmFirst.isPresent()) {
+                            httpRespMsg.setError(MessageUtils.message("project.masterError",project1.getProjectName()));
+                            return httpRespMsg;
+                        }
+                        //如果分组负责人和项目经理是同一个人,那么就不需要项目经理审核了
+                        if (r.getProjectAuditorId().equals(project1.getInchargerId())) {
+                            r.setProjectAuditState(1);
+                            r.setProjectAuditTime(LocalDateTime.now());
+                            r.setState(1);
+                        } else {
+                            //分组审核完,该项目的pm审核了
+                            r.setProjectAuditorId(project1.getInchargerId());
+                            r.setProjectAuditorName(pmFirst.get().getName());
+                        }
                     } else if (r.getProjectAuditState() == 0) {
                         r.setProjectAuditState(1);
                         r.setProjectAuditTime(LocalDateTime.now());

+ 1 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -2748,15 +2748,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         String requestUrl = GET_TOKEN_URL.replace("APPID", appId).replace("SECRET", appSecret)
                 .replace("CODE", code);
         // 存储获取到的授权字段信息
-        JSONObject result = new JSONObject();
         Map<String, String> dataMap = new HashMap<>();
         ResponseEntity<String> responseEntity = this.restTemplate.exchange(requestUrl,
                 HttpMethod.GET, null, String.class);
         List<User> userList = new ArrayList<>();
         if (responseEntity.getStatusCode() == HttpStatus.OK) {
             String resp = responseEntity.getBody();
-            log.debug("返回信息==" + resp);
-            System.out.println("返回信息==" + resp);
             dataMap.put("resp", resp);
             JSONObject OpenidJSONO = JSONObject.parseObject(resp);
             if (OpenidJSONO.containsKey("access_token")) {
@@ -2765,7 +2762,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 userList = userMapper.selectList(new QueryWrapper<User>().eq("wx_openid", openid));
             }
         }
-        Integer companyId = null;
+        Integer companyId = 0;
         if (userList.size() > 0) {
             //该用户已存在
             User curUser = userList.get(0);

Datei-Diff unterdrückt, da er zu groß ist
+ 602 - 1799
fhKeeper/formulahousekeeper/ops-platform/octopus.log


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

@@ -395,10 +395,9 @@
             </template>
             <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" @click="batchIncharger()">{{ $t('projectmanagersinbatches') }}</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> -->
             </template>
-                
             
             <el-pagination
                 @size-change="handleSizeChange"

+ 3 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -8,7 +8,6 @@
                             <el-date-picker size="small" v-model="date" :editable="false" format="yyyy-MM" value-format="yyyy-MM"
                             style="width:190px;"
                             @change="changeMonthOut" :clearable="false" type="month" :placeholder="$t('Selectmonth')" :picker-options="getPickerOptions"></el-date-picker>
-                            <el-button v-if="user.timeType.pushReportData == 1 && permissions.reportPush" style="margin-left:10px;" icon="iconfont firerock-icontuisong" size="mini" @click="pushWorkTime"></el-button>
                             <el-button style="margin-left:10px;" icon="iconfont firerock-icongongshitongji" size="mini"  @click="showWorkTime"></el-button>
                         </div>
                     <div slot="header" class="clearfix" id="clearfix" style="padding-left: 255px;">
@@ -141,6 +140,9 @@
                                     <el-link type="primary" style="margin-right:10px;" :underline="false" @click="showExportDialog" v-if="permissions.reportExport">{{$t('textLink.exportWork')}}</el-link>
                                     <!--部门负责人给个导出工时的功能 -->
                                     <el-link type="primary" v-if="user.manageDeptId != 0" style="margin-right:10px;" :underline="false" @click="showExportTimeDialog">{{$t('textLink.exportingTimeStatistics')}}</el-link>
+                                    <el-link type="primary" v-if="user.timeType.pushReportData == 1 && permissions.reportPush" :underline="false" @click="pushWorkTime">推送工时</el-link>
+                                    <!-- <el-button v-if="user.timeType.pushReportData == 1 && permissions.reportPush" style="margin-left:10px;" icon="iconfont firerock-icontuisong" size="mini" @click="pushWorkTime"></el-button> -->
+
                                 </span>
                             </div>
                             <div :style="'height:'+(tableHeight-50)+'px;overflow:scroll;padding-top:10px;'">

+ 2 - 1
fhKeeper/formulahousekeeper/timesheet_h5/src/views/cost/cost.vue

@@ -128,7 +128,8 @@ export default {
             this.listLoading = true
             this.$axios.post(url, {
                 startDate: this.costDate[0],
-                endDate: this.costDate[1]
+                endDate: this.costDate[1],
+                type: 0
             }).then(res => {
                 if(res.code == "ok") {
                     this.listLoading = false