优化测试
This commit is contained in:
parent
247968b9a8
commit
11d04f4914
@ -1,13 +1,20 @@
|
||||
package com.lz.modules.flow.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.lz.common.emun.ChartOptType;
|
||||
import com.lz.common.emun.CheckStaffType;
|
||||
import com.lz.common.emun.WorkMsgTypeEnum;
|
||||
import com.lz.common.utils.R;
|
||||
import com.lz.common.utils.StringUtil;
|
||||
import com.lz.modules.app.entity.DepartmentsStaffRelateEntity;
|
||||
import com.lz.modules.app.entity.StaffEntity;
|
||||
import com.lz.modules.app.entity.StaffSimpleInfo;
|
||||
import com.lz.modules.app.enums.FlowApprovalRoleTypeEnums;
|
||||
import com.lz.modules.app.enums.FlowRecordStatusEnums;
|
||||
import com.lz.modules.app.enums.RoleEnums;
|
||||
import com.lz.modules.app.service.DepartmentsService;
|
||||
import com.lz.modules.app.service.DepartmentsStaffRelateService;
|
||||
import com.lz.modules.app.service.StaffService;
|
||||
import com.lz.modules.flow.dao.EvaluationStartStaffMapper;
|
||||
import com.lz.modules.flow.dao.FlowStartMapper;
|
||||
@ -21,6 +28,7 @@ import com.lz.modules.sys.entity.app.ResultRecord;
|
||||
import com.lz.modules.sys.service.app.ResultDetailService;
|
||||
import com.lz.modules.sys.service.app.ResultRecordService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.collections.map.HashedMap;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -29,6 +37,9 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -88,6 +99,20 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
|
||||
@Autowired
|
||||
private DingtalkBusiness dingtalkBusiness;
|
||||
|
||||
@Autowired
|
||||
private FlowRecordService flowRecordService;
|
||||
|
||||
@Autowired
|
||||
private DepartmentsStaffRelateService departmentsStaffRelateService;
|
||||
|
||||
@Autowired
|
||||
private StaffRoleService staffRoleService;
|
||||
|
||||
@Autowired
|
||||
private DepartmentsService departmentsService;
|
||||
@Autowired
|
||||
private StaffRoleDepartmentService staffRoleDepartmentService;
|
||||
|
||||
|
||||
|
||||
|
||||
@ -710,8 +735,73 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
|
||||
resultRecord.setFlowStaffIdRole(roleJSON);
|
||||
|
||||
resultRecordService.insertResultRecord(resultRecord);
|
||||
//staffInfo.setRecordId(resultRecord.getId());
|
||||
staffInfo.setRecordId(resultRecord.getId());
|
||||
//下面生成实际的考核流程
|
||||
List<Flow> flows = flowService.selectByFlowId(resultRecord.getEvaluationId(),resultRecord.getStartId());
|
||||
List<Long> flowIds = new ArrayList<>();
|
||||
for(Flow flow:flows){
|
||||
flowIds.add(flow.getId());
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
for (FlowApprovalRole flowApprovalRole : flowApprovalRoles) {
|
||||
FlowRecord flowRecord = new FlowRecord();
|
||||
flowRecord.setRecordId(resultRecord.getId());
|
||||
StaffEntity approvalStaff = new StaffEntity();
|
||||
if (FlowApprovalRoleTypeEnums.ME.getType().equals(flowApprovalRole.getType())) {
|
||||
approvalStaff = staffService.selectStaffById(resultRecord.getStaffId());
|
||||
} else if (FlowApprovalRoleTypeEnums.STAFF.getType().equals(flowApprovalRole.getType())) {
|
||||
approvalStaff = staffService.selectStaffById(flowApprovalRole.getApprovalId());
|
||||
} else if (FlowApprovalRoleTypeEnums.ONE_SUPPER.getType().equals(flowApprovalRole.getType())) {
|
||||
approvalStaff = getDepartmentStaff(resultRecord.getStaffId(), 1);
|
||||
} else if (FlowApprovalRoleTypeEnums.TWO_SUPPER.getType().equals(flowApprovalRole.getType())) {
|
||||
approvalStaff = getDepartmentStaff(resultRecord.getStaffId(), 2);
|
||||
} else if (FlowApprovalRoleTypeEnums.THREE_SUPPER.getType().equals(flowApprovalRole.getType())) {
|
||||
approvalStaff = getDepartmentStaff(resultRecord.getStaffId(), 3);
|
||||
} else if (FlowApprovalRoleTypeEnums.FOUR_SUPPER.getType().equals(flowApprovalRole.getType())) {
|
||||
approvalStaff = getDepartmentStaff(resultRecord.getStaffId(), 4);
|
||||
} else if (FlowApprovalRoleTypeEnums.FOUR_SUPPER.getType().equals(flowApprovalRole.getType())) {
|
||||
approvalStaff = getDepartmentStaff(resultRecord.getStaffId(), 5);
|
||||
}
|
||||
if(approvalStaff !=null && StringUtil.isNotBlank(approvalStaff.getName())){
|
||||
insertFlowRecord(flowRecord,approvalStaff,flows,flowApprovalRole,resultRecord,i,null);
|
||||
}else{
|
||||
List<StaffRole> staffRoles= staffRoleService.selectAllStaffRoleByDepartmentLevel(Arrays.asList(new String[]{RoleEnums.MASTER_PM.getName(),RoleEnums.CHILD_PM.getName()}));
|
||||
for(StaffRole staffRole:staffRoles){
|
||||
approvalStaff = staffService.selectStaffById(staffRole.getStaffId());
|
||||
if(staffRole.getDepartmentId() ==0){ //如果是管理所有部门
|
||||
insertFlowRecord(flowRecord,approvalStaff,flows,flowApprovalRole,resultRecord,i,1);
|
||||
}else{
|
||||
DepartmentsStaffRelateEntity relateEntity = departmentsStaffRelateService.selectLastDepartmentByStaffId(resultRecord.getStaffId());
|
||||
Map<String, String> map = departmentsService.selectUserAllDepartmentIds(relateEntity.getDepartmentId());
|
||||
List<StaffRoleDepartment> staffRoleDepartments = staffRoleDepartmentService.selectStaffRoleDepartmentByStaffRoleId(staffRole.getId());
|
||||
boolean flag = false;
|
||||
for(StaffRoleDepartment staffRoleDepartment: staffRoleDepartments){
|
||||
String departmentName = map.get(staffRoleDepartment.getDepartmentId());
|
||||
if(StringUtil.isNotBlank(departmentName)){
|
||||
flag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(flag){ //如果管理员是管理特定部门
|
||||
insertFlowRecord(flowRecord,approvalStaff,flows,flowApprovalRole,resultRecord,i,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
resultRecordService.updateResultRecordById(resultRecord);
|
||||
|
||||
/*ExecutorService executor = Executors.newFixedThreadPool(10);
|
||||
List<ResultRecord> resultRecords = Lists.newArrayList();
|
||||
CompletableFuture<List<ResultRecord>> listCompletableFuture = CompletableFuture.supplyAsync(() -> resultRecordService.list(), executor);
|
||||
try {
|
||||
resultRecords = listCompletableFuture.get();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}*/
|
||||
|
||||
//resultRecordService.initFlowRecord(resultRecord.getId());
|
||||
//下面生成ResultDetail对象
|
||||
for (ResultModelDto modelDto:resultModelDtos
|
||||
@ -747,6 +837,57 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void insertFlowRecord(FlowRecord flowRecord,StaffEntity approvalStaff,List<Flow> flows,FlowApprovalRole flowApprovalRole ,ResultRecord resultRecord,int i,Integer stepType ){
|
||||
flowRecord.setApprovalStaffName(approvalStaff.getName());
|
||||
flowRecord.setApprovalStaffId(approvalStaff.getId());
|
||||
flowRecord.setFlowName(getFlow(flows, flowApprovalRole.getFlowId()).getOptDesc());
|
||||
flowRecord.setRecordStaffId(resultRecord.getStaffId());
|
||||
flowRecord.setFlowId(flowApprovalRole.getFlowId());
|
||||
FlowChart flowChart = flowService.selectFlowChartByChartId(flowApprovalRole.getFlowId());
|
||||
flowRecord.setProcessId(flowChart.getProcessId());
|
||||
flowRecord.setFlowProcess(flowChart.getFlowProcess());
|
||||
String staffRole = StaffRoles.getStaffRole(approvalStaff.getId(), StringUtil.strToLongs(flowApprovalRole.getRoleId()));
|
||||
if (i == 0) {
|
||||
flowRecord.setStatus(FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus());
|
||||
resultRecord.setFlowStaffIdRole(staffRole);
|
||||
resultRecord.setFlowProcess(flowChart.getFlowProcess());
|
||||
} else {
|
||||
flowRecord.setStatus(FlowRecordStatusEnums.UN_TO_STATUS.getStatus());
|
||||
if(new Integer(4).equals(flowChart.getFlowProcess())){
|
||||
EvaluationStartStaff evaluationStartStaff = evaluationStartStaffService.selectEvaluationStartById(resultRecord.getEvaluationId(),resultRecord.getStartId());
|
||||
if(evaluationStartStaff !=null && new Integer(1).equals(evaluationStartStaff.getScore())){
|
||||
flowRecord.setStatus(FlowRecordStatusEnums.SKIP_STATUS.getStatus());
|
||||
}else{
|
||||
log.info("evaluationStartStaff is null evaluationId :" + resultRecord.getEvaluationId() + ", startId : " + resultRecord.getStartId());
|
||||
}
|
||||
}
|
||||
}
|
||||
flowRecord.setFlowStaffIdRole(staffRole);
|
||||
flowRecord.setFlowIndex(flowApprovalRole.getStepIndex());
|
||||
flowRecord.setType(stepType !=null ? stepType :flowApprovalRole.getStepType()); //步骤类型0:依次,1:或签(同时通知,一人通过或拒绝即可),2会签(同时通知,所有人同意才可)
|
||||
flowRecordService.insertFlowRecord(flowRecord);
|
||||
|
||||
}
|
||||
|
||||
public Flow getFlow(List<Flow> flows,Long flowId){
|
||||
for(Flow flow : flows){
|
||||
if(flow.getId().equals(flowId)){
|
||||
return flow;
|
||||
}
|
||||
}
|
||||
return new Flow();
|
||||
}
|
||||
|
||||
public StaffEntity getDepartmentStaff(Long staffId, int level) {
|
||||
DepartManagers departManagers = staffService.findLeader( staffId, level);
|
||||
List<StaffEntity> staffEntities = departManagers.getManagers();
|
||||
if(CollectionUtils.isNotEmpty(staffEntities)){
|
||||
return staffEntities.get(0);
|
||||
}
|
||||
return new StaffEntity();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public R getModelById(Long id, int type){
|
||||
/*EvaluationGroup evaluationGroup = evaluationGroupService.selectEvaluationGroupById(id);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user