提交修改

This commit is contained in:
quyixiao 2022-06-13 12:17:17 +08:00
parent 104f818e4a
commit 73619c25c1
2 changed files with 801 additions and 804 deletions

View File

@ -19,7 +19,6 @@ import com.lz.modules.sys.entity.app.ResultDetail;
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 com.mchange.lang.IntegerUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.map.HashedMap;
import org.springframework.beans.BeanUtils;
@ -33,13 +32,13 @@ import java.util.function.Function;
import java.util.stream.Collectors;
/**
* <p>
* 发起考核表 服务类
* </p>
*
* @author quyixiao
* @since 2020-10-13
*/
* <p>
* 发起考核表 服务类
* </p>
*
* @author quyixiao
* @since 2020-10-13
*/
@Service
@Slf4j
@ -89,55 +88,45 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
private DingtalkBusiness dingtalkBusiness;
@Override
public FlowStart selectFlowStartById(Long id){
public FlowStart selectFlowStartById(Long id) {
return flowStartMapper.selectFlowStartById(id);
}
@Override
public Long insertFlowStart(FlowStart flowStart){
public Long insertFlowStart(FlowStart flowStart) {
return flowStartMapper.insertFlowStart(flowStart);
}
@Override
public int updateFlowStartById(FlowStart flowStart){
public int updateFlowStartById(FlowStart flowStart) {
return flowStartMapper.updateFlowStartById(flowStart);
}
@Override
public int updateCoverFlowStartById(FlowStart flowStart){
public int updateCoverFlowStartById(FlowStart flowStart) {
return flowStartMapper.updateCoverFlowStartById(flowStart);
}
@Override
public int deleteFlowStartById(Long id){
public int deleteFlowStartById(Long id) {
return flowStartMapper.deleteFlowStartById(id);
}
@Override
public FlowStart selectFlowStartByName(String name){
public FlowStart selectFlowStartByName(String name) {
return flowStartMapper.selectFlowStartByName(name);
}
//发起指定用户的绩效中途添加的时候
public R startStaffs(StartGroups startGroupStaffIds){
public R startStaffs(StartGroups startGroupStaffIds) {
log.info("发起指定用户的绩效,中途添加的时候{}", startGroupStaffIds);
FlowStart flowStart = flowStartMapper.selectFlowStartById(startGroupStaffIds.getStartId());
if(flowStart == null){
if (flowStart == null) {
log.info("发起任务不存在");
return R.error("发起任务不存在");
}
@ -147,10 +136,10 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
Map<Long, List<FlowChartRole>> selfMustRole = new HashMap<>();
List<StaffSimpleInfo> noticeStaff = new ArrayList<>();
List<StartStartDto> resultRecords = new ArrayList<>();
for (GroupStaffs groupStaffs:startGroupStaffIds.getGroups()
for (GroupStaffs groupStaffs : startGroupStaffIds.getGroups()
) {
List<StaffSimpleInfo> staffSimpleInfos = staffService.selectStaffSimpleInfos(groupStaffs.getStaffIds());
if(staffSimpleInfos.size() == 0){
if (staffSimpleInfos.size() == 0) {
log.info("无有效考核人员");
R.error(groupStaffs.getEvaluationGroup().getName() + "——无有效考核人员");
}
@ -159,7 +148,7 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
evaluationGroupService.selectEvaluationGroupById(groupStaffs.getEvaluationGroup().getId());
//evaluationGroupService.selectEvaluationGroupByCopyId(groupStaffs.getEvaluationGroup().getId(),flowStart.getId());//20201218注释不适用历史数据使用最新模板数据
StartStartDto startDto = start(evaluationGroup, flowStart, staffManages, staffSimpleInfos, mustRole, selfMustRole, false);
switch (startDto.getStatus()){
switch (startDto.getStatus()) {
case 1:
return R.error(groupStaffs.getEvaluationGroup().getName() + "——没有设置考核模板");
@ -195,42 +184,42 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
ids.add("140");
ids.add("141");
ids.add("134");
Map<String, String> maps = ids.stream().collect(Collectors.toMap(e->e, e->e));
Map<String, String> maps = ids.stream().collect(Collectors.toMap(e -> e, e -> e));
System.out.println(maps);
}
@Override
public R saveStart(FlowStart flowStart){
public R saveStart(FlowStart flowStart) {
log.info("发起考核{}", flowStart);
//下面生成或者合并发起绩效
if(flowStart.getStartTime() == null){
if (flowStart.getStartTime() == null) {
log.info("未设置有效考核月份");
return R.error("未设置有效考核月份");
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月");
String startDate = sdf.format(flowStart.getStartTime());
if(flowStart.getCycleType().intValue() != 0){
if (flowStart.getCycleType().intValue() != 0) {
//月份
if(flowStart.getEndTime() == null){
if (flowStart.getEndTime() == null) {
log.info("未设置有效考核结束月份");
return R.error("未设置有效考核结束月份");
}
String endDate = sdf.format(flowStart.getEndTime());
flowStart.setName(startDate + "" + endDate + "绩效考核");
}else{
} else {
flowStart.setName(startDate + "绩效考核");
}
List<String> newIds = new ArrayList<>();
FlowStart flowStart1 = selectFlowStartByName(flowStart.getName());
if(flowStart1 == null){
if (flowStart1 == null) {
insertFlowStart(flowStart);
flowStart1 = flowStart;
}else{
} else {
//因为保存的时拷贝后的组所以这里查询原来的组
List<Long> lIds= Arrays.stream(flowStart1.getGroupIds().split(",")).map(new Function<String, Long>() {
List<Long> lIds = Arrays.stream(flowStart1.getGroupIds().split(",")).map(new Function<String, Long>() {
@Override
public Long apply(String s) {
newIds.add(s);
@ -239,7 +228,7 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
}).collect(Collectors.toList());
List<EvaluationGroup> evaluationGroups = evaluationGroupService.selectEvaluationGroupByCopyIds(lIds);
List<String> ids1= evaluationGroups.stream().map(new Function<EvaluationGroup, String>() {
List<String> ids1 = evaluationGroups.stream().map(new Function<EvaluationGroup, String>() {
@Override
public String apply(EvaluationGroup evaluationGroup) {
return evaluationGroup.getId().toString();
@ -248,32 +237,31 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
//查询拷贝后的
Map<String, String> maps = ids1.stream().collect(Collectors.toMap(e->e, e->e));
Map<String, String> maps = ids1.stream().collect(Collectors.toMap(e -> e, e -> e));
//求差集发起但是历史记录怎么搞
List<String> ids= Arrays.stream(flowStart.getGroupIds().split(",")).map(new Function<String, String>() {
List<String> ids = Arrays.stream(flowStart.getGroupIds().split(",")).map(new Function<String, String>() {
@Override
public String apply(String s) {
return s;
}
}).collect(Collectors.toList());
for(int i = 0; i < ids.size();){//过滤掉已经发起的
for (int i = 0; i < ids.size(); ) {//过滤掉已经发起的
String str = ids.get(i);
if(maps.containsKey(str)){
if (maps.containsKey(str)) {
ids.remove(str);
continue;
}
i++;
}
if(ids.size() == 0){
if (ids.size() == 0) {
/*return R.ok("发起成功,该任务已经发起过")
.put("data", flowStart1);*/
log.info("可能会使用历史数模板数据");
flowStart.setId(flowStart1.getId());
flowStart.setIsDelete(flowStart1.getIsDelete());
}else{
} else {
log.info("有新增组");
ids1.addAll(ids);
flowStart1.setGroupIds(ids1.stream().collect(Collectors.joining(",")));//把新的组信息加入把拷贝前的组信息保存下来
@ -305,24 +293,24 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
EvaluationGroup evaluationGroup = evaluationGroups.get(n);
//下面初始化员工考核流程
List<StaffSimpleInfo> staffIds = evaluationGroupService.selectAllStaffSimpleInfoByGroupId(evaluationGroup);
if(staffIds.size() == 0){
if (staffIds.size() == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚
log.info("无有效考核人员");
return R.error(evaluationGroup.getName() + "——无有效考核人员");
}
if(flowStart.getIsDelete() != null){//已经发起过的
if (flowStart.getIsDelete() != null) {//已经发起过的
//下面去掉已经发起的用户
List<Long> longs = evaluationStartStaffService.selectStaffIdsByStartAndStaffId(flowStart.getId(), staffIds);
if(longs.size() > 0){
if (longs.size() > 0) {
Map<Long, StaffSimpleInfo> map
= staffIds.stream().collect(Collectors.toMap(StaffSimpleInfo::getId, e->e));
for (Long key:longs
= staffIds.stream().collect(Collectors.toMap(StaffSimpleInfo::getId, e -> e));
for (Long key : longs
) {
map.remove(key);
}
staffIds = map.values().stream().collect(Collectors.toList());
if(staffIds.size() == 0){
if (staffIds.size() == 0) {
log.info("本次发起参与人员为0");
return R.error(evaluationGroup.getName() + "——本次发起参与人员为0");
}
@ -332,7 +320,7 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
StartStartDto startDto = start(evaluationGroup, flowStart, staffManages, staffIds, mustRole, selfMustRole, false);
switch (startDto.getStatus()){
switch (startDto.getStatus()) {
case 1:
return R.error(evaluationGroup.getName() + "——没有设置考核模板");
@ -358,14 +346,15 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
//dingtalkBusiness.sendWorkMSGWithAsyn(noticeStaff, WorkMsgTypeEnum.START_WORK.getType());
return R.ok("发起成功").put("data", flowStart);
}
//isInsert表示是否中途加人
private StartStartDto start(EvaluationGroup evaluationGroup, FlowStart flowStart,
Map<String, List<StaffEntity>> staffManages, List<StaffSimpleInfo> staffIds,
Map<Long, List<FlowChartRole>> mustRole, Map<Long, List<FlowChartRole>> selfMustRole, boolean isInsert){
Map<Long, List<FlowChartRole>> mustRole, Map<Long, List<FlowChartRole>> selfMustRole, boolean isInsert) {
log.info("开始发起考评组考核{}", evaluationGroup);
StartStartDto startStartDto = new StartStartDto();
List<ResultModelDto> resultModelDtos = resultModelService.selectResultDtoByGroupId(evaluationGroup.getId());
if(resultModelDtos.size() == 0){
if (resultModelDtos.size() == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚
log.info("没有设置考核模板");
startStartDto.setStatus(1);
@ -373,21 +362,21 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
}
List<FlowChart> flowCharts = flowChartService.selectFlowChartsByGroupId(evaluationGroup.getId());
if(flowCharts.size() == 0){
if (flowCharts.size() == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚
log.info("无有效绩效流程节点");
startStartDto.setStatus(2);
return startStartDto;
}
List<FlowChartDetailRecord> flowChartDetailRecords = new ArrayList<>();
for (FlowChart chart:flowCharts
for (FlowChart chart : flowCharts
) {//按照节点顺序获取正确的流程
List<FlowChartDetailRecord> flowChartDetailRecords1
= flowChartDetailRecordService.selectOpenFlowChartDetailRecordByGroupIdAndChartId(evaluationGroup.getId(), chart.getId());
flowChartDetailRecords.addAll(flowChartDetailRecords1);
}
if(flowChartDetailRecords.size() == 0){
if (flowChartDetailRecords.size() == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚
log.info("没有设置考核流程");
startStartDto.setStatus(3);
@ -399,7 +388,7 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
//获取绩效考核管理员
List<StaffEntity> staffManagers = staffService.selectStaffsByGroupId(evaluationGroup.getCopyId());
if(staffManagers == null || staffManagers.size() == 0){
if (staffManagers == null || staffManagers.size() == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚
log.info("没有设置绩效管理人员");
startStartDto.setStatus(4);
@ -410,7 +399,7 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
List<Flow> flows;
List<FlowApprovalRole> flowApprovalRoles;
//下面拷贝一份考评组信息发起后所使用的考评组id为复制后的id
if(!isInsert){
if (!isInsert) {
evaluationGroup.setCopyId(evaluationGroup.getId());
evaluationGroup.setId(null);
evaluationGroup.setGmtCreate(null);
@ -421,7 +410,7 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
//拷贝考评组的指标信息
List<ResultTagetLib> resultTagetLibs = new ArrayList<>();
for (ResultModelDto dto:resultModelDtos
for (ResultModelDto dto : resultModelDtos
) {
dto.setEvaluationGroupId(evaluationGroup.getId());//设置拷贝组的id
//下面拷贝一份考评组信息的维度信息
@ -432,7 +421,7 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
List<ResultTagetLibDto> libDtos = resultTagetLibService.selectResultTagetLibDtoByModelId(dto.getId());
dto.setTagetLibs(libDtos);
for (ResultTagetLibDto libDto: libDtos
for (ResultTagetLibDto libDto : libDtos
) {
//下面拷贝考评组里面的指标信息
ResultTagetLib resultTagetLib = new ResultTagetLib();
@ -443,33 +432,33 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
}
dto.setId(resultModel.getId());
}
if(resultTagetLibs.size() > 0){
if (resultTagetLibs.size() > 0) {
//插入备份的考评组指标信息
resultTagetLibService.saveBatch(resultTagetLibs);
}
//拷贝一份流程
for(FlowChartDetailRecord flowChartDetailRecord: flowChartDetailRecords){
for (FlowChartDetailRecord flowChartDetailRecord : flowChartDetailRecords) {
flowChartDetailRecord.setId(null);
flowChartDetailRecord.setGmtCreate(null);
flowChartDetailRecord.setGmtModified(null);
flowChartDetailRecord.setEvaluationGroupId(evaluationGroup.getId());
}
flowChartDetailRecordService.saveBatch(flowChartDetailRecords);
}else{
} else {
if(evaluationGroup == null){
if (evaluationGroup == null) {
log.info("无法找到拷贝组信息");
startStartDto.setStatus(5);
return startStartDto;
}
resultModelDtos = resultModelService.selectResultDtoByGroupId(evaluationGroup.getId());
if(resultModelDtos.size() == 0){
if (resultModelDtos.size() == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚
log.info("拷贝组的维度信息错误");
startStartDto.setStatus(1);
return startStartDto;
}
for (ResultModelDto modelDto:resultModelDtos
for (ResultModelDto modelDto : resultModelDtos
) {
List<ResultTagetLibDto> resultTagetLibDtos = resultTagetLibService.selectResultTagetLibDtoByModelId(modelDto.getId());
modelDto.setTagetLibs(resultTagetLibDtos);
@ -481,7 +470,7 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
List<EvaluationStartStaff> evaluationStartStaffs = new ArrayList<>();
List<ResultDetail> resultDetails = new ArrayList();
//下面初始化参与人员
for (StaffSimpleInfo staffInfo:staffIds
for (StaffSimpleInfo staffInfo : staffIds
) {
EvaluationStartStaff evaluationStartStaff = new EvaluationStartStaff();
@ -514,18 +503,17 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
resultRecordService.insertResultRecord(resultRecord);
//resultRecordService.initFlowRecord(resultRecord.getId());
//下面生成实际的考核流程
staffInfo.setResultRecord(resultRecord);
staffInfo.setFlowStart(flowStart);
for (ResultModelDto modelDto:resultModelDtos
for (ResultModelDto modelDto : resultModelDtos
) {
log.info("发起考核modelDto:{}, tagetLibsSize:{}", modelDto, modelDto.getTagetLibs().size());
if(modelDto.getTagetLibs() != null && modelDto.getTagetLibs().size() > 0){//模板里面有添加指标
for (ResultTagetLibDto libDto:
if (modelDto.getTagetLibs() != null && modelDto.getTagetLibs().size() > 0) {//模板里面有添加指标
for (ResultTagetLibDto libDto :
modelDto.getTagetLibs()) {
ResultDetail resultDetail = new ResultDetail();
@ -539,21 +527,21 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
resultDetail.setModelId(modelDto.getId());
resultDetails.add(resultDetail);
}
}else{
} else {
log.info("无考评组信息");
}
}
//如果有数据插入lz_result_detail表
log.info("发起考核,新增绩效详情个数{}", resultDetails.size());
if(resultDetails.size() > 0){
if (resultDetails.size() > 0) {
//
resultDetailService.saveBatch(resultDetails);
}
}
evaluationStartStaffService.saveBatch(evaluationStartStaffs);
startStartDto.setResultRecordList(resultRecords);
flows = flowService.selectByFlowId(evaluationGroup.getId(),flowStart.getId());
flows = flowService.selectByFlowId(evaluationGroup.getId(), flowStart.getId());
List<Long> flowIds = flows.stream().map(new Function<Flow, Long>() {
@Override
public Long apply(Flow flow) {
@ -561,7 +549,7 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
}
}).collect(Collectors.toList());
flowApprovalRoles =flowApprovalRoleService.selectFlowApprovalRoleList(flowIds);
flowApprovalRoles = flowApprovalRoleService.selectFlowApprovalRoleList(flowIds);
startStartDto.setFlows(flows);
startStartDto.setFlowApprovalRoles(flowApprovalRoles);
startStartDto.setStatus(0);
@ -572,7 +560,7 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
flows = new ArrayList<>();
flowApprovalRoles = new ArrayList<>();
int stepIndex = 0;
for (FlowChartDetailRecord flowChartDetailRecord:flowChartDetailRecords
for (FlowChartDetailRecord flowChartDetailRecord : flowChartDetailRecords
) {//初始化考评组对应的的flow
Flow flow = new Flow();
flow.setFlowId(evaluationGroup.getId());
@ -585,18 +573,18 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
FlowApprovalRole flowApprovalRole = null;
List<FlowChartRole> flowChartRoles = null;
//获取必备权限
if(mustRole.containsKey(flow.getChartId())){
if (mustRole.containsKey(flow.getChartId())) {
flowChartRoles = mustRole.get(flow.getChartId());
}else{
} else {
flowChartRoles =
flowChartRoleService.selectFlowChartRolesByChartIdAndType(flow.getChartId(), 1);
mustRole.put(flow.getChartId(), flowChartRoles);
}
if(flowChartDetailRecord.getOptType().intValue() == ChartOptType.APPOINT.getCode()){//指定人员的
if (flowChartDetailRecord.getOptType().intValue() == ChartOptType.APPOINT.getCode()) {//指定人员的
String roles = null;
if(flowChartRoles != null && flowChartRoles.size() > 0){//
if (flowChartRoles != null && flowChartRoles.size() > 0) {//
roles = flowChartRoles.stream().map(new Function<FlowChartRole, String>() {
@Override
public String apply(FlowChartRole flowChartRole) {
@ -607,7 +595,7 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
}
String[] optIds = flowChartDetailRecord.getOptIds().split(",");
for (String id:optIds
for (String id : optIds
) {//初始化考评组对应的的FlowApprovalRole
flowApprovalRole = new FlowApprovalRole();
@ -618,26 +606,26 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
flowApprovalRole.setType(flowChartDetailRecord.getOptType());
flowApprovalRoles.add(flowApprovalRole);
flowApprovalRole.setStepIndex(stepIndex);
if(roles != null){
if(flowApprovalRole.getRoleId() == null || flowApprovalRole.getRoleId().length() == 0){
if (roles != null) {
if (flowApprovalRole.getRoleId() == null || flowApprovalRole.getRoleId().length() == 0) {
flowApprovalRole.setRoleId(roles);
}else{
} else {
flowApprovalRole.setRoleId(flowApprovalRole.getRoleId() + "," + roles);
}
}
if(flowChartDetailRecord.getStepType().intValue() == 0){
if (flowChartDetailRecord.getStepType().intValue() == 0) {
//依次
stepIndex++;
}
}
if(flowApprovalRole != null){
if (flowApprovalRole != null) {
stepIndex = flowApprovalRole.getStepIndex() + 1;
}
}else{
if(flowChartDetailRecord.getOptType().intValue() == ChartOptType.SELF.getCode()) {//参与人员为自己的
} else {
if (flowChartDetailRecord.getOptType().intValue() == ChartOptType.SELF.getCode()) {//参与人员为自己的
//获取被考核人的必备权限
if (selfMustRole.containsKey(flow.getChartId())) {
flowChartRoles.addAll(selfMustRole.get(flow.getChartId()));
@ -656,16 +644,16 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
flowApprovalRoles.add(flowApprovalRole);
flowApprovalRole.setStepIndex(stepIndex);
if(flowChartRoles != null && flowChartRoles.size() > 0){//
if (flowChartRoles != null && flowChartRoles.size() > 0) {//
String roles = flowChartRoles.stream().map(new Function<FlowChartRole, String>() {
@Override
public String apply(FlowChartRole flowChartRole) {
return flowChartRole.getRoleId().toString();
}
}).collect(Collectors.joining(","));
if(flowApprovalRole.getRoleId() == null || flowApprovalRole.getRoleId().length() == 0){
if (flowApprovalRole.getRoleId() == null || flowApprovalRole.getRoleId().length() == 0) {
flowApprovalRole.setRoleId(roles);
}else{
} else {
flowApprovalRole.setRoleId(flowApprovalRole.getRoleId() + "," + roles);
}
}
@ -674,7 +662,7 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
}
}
//插入记录/flowChart/saveDetailProcs
if(flowApprovalRoles.size() > 0){
if (flowApprovalRoles.size() > 0) {
flowApprovalRoleService.saveBatch(flowApprovalRoles);
//初始化lz_result_details数据
@ -683,7 +671,7 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
List<EvaluationStartStaff> evaluationStartStaffs = new ArrayList<>();
//下面初始化参与人员
for (StaffSimpleInfo staffInfo:staffIds
for (StaffSimpleInfo staffInfo : staffIds
) {
EvaluationStartStaff evaluationStartStaff = new EvaluationStartStaff();
@ -708,59 +696,57 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
resultRecord.setFlowProcess(0);//设置为目标制定
//下面初始化flow_staff_id_role字段步骤为0的
String roleJSON = "[";
for (int i = 0; i < flowApprovalRoles.size() ;i++){
for (int i = 0; i < flowApprovalRoles.size(); i++) {
FlowApprovalRole approvalRole = flowApprovalRoles.get(i);
if(approvalRole.getStepIndex().intValue() == 0){//找到所有步骤为0的人员
if (approvalRole.getStepIndex().intValue() == 0) {//找到所有步骤为0的人员
Long staffId = approvalRole.getApprovalId();//默认为指定人员
if(approvalRole.getType().intValue() == ChartOptType.SELF.getCode()){
if (approvalRole.getType().intValue() == ChartOptType.SELF.getCode()) {
//制定人员为自己的
staffId = staffInfo.getId();
if(i == 0){//目前只设置一个多个不明确是否支持roleJSON是支持多个的
if (i == 0) {//目前只设置一个多个不明确是否支持roleJSON是支持多个的
//设置当前审批员工id current_approval_staff_id
resultRecord.setCurrentApprovalStaffId(staffInfo.getId());
//设置当前审批员工姓名 current_approval_staff_name
resultRecord.setCurrentApprovalStaffName(staffInfo.getName());
}
} else if(approvalRole.getType().intValue() > 0){//当设置为几级领导时
} else if (approvalRole.getType().intValue() > 0) {//当设置为几级领导时
///查找领导如果不存在那么设置管理人员
List<StaffEntity> staffLeader;
String key = staffInfo.getDepartmentId() + "_" + approvalRole.getType();
if(staffManages.containsKey(key)){
if (staffManages.containsKey(key)) {
staffLeader = staffManages.get(staffInfo.getDepartmentId());
}else{
} else {
DepartManagers departManagers =
staffService.findLeader(staffInfo.getId(), approvalRole.getType());
staffLeader = departManagers.getManagers();
staffManages.put(key, departManagers.getManagers());
}
if(staffLeader == null || staffLeader.size() == 0){
if (staffLeader == null || staffLeader.size() == 0) {
//没有领导通知到组设置的绩效管理人员
for (StaffEntity entity:staffManagers
for (StaffEntity entity : staffManagers
) {
roleJSON += ("{\"roleId\":0,\"staffId\":" + entity.getId() + "},");//这里写死了权限为0的即为找不到领导
}
if(i == 0){//目前只设置一个多个不明确是否支持roleJSON是支持多个的
if (i == 0) {//目前只设置一个多个不明确是否支持roleJSON是支持多个的
//设置当前审批员工id current_approval_staff_id
resultRecord.setCurrentApprovalStaffId(staffManagers.get(0).getId());
//设置当前审批员工姓名 current_approval_staff_name
resultRecord.setCurrentApprovalStaffName(staffManagers.get(0).getName());
}
}else{
for(int j = 0; j <staffLeader.size(); j++ ){
} else {
for (int j = 0; j < staffLeader.size(); j++) {
StaffEntity staff = staffLeader.get(j);
roleJSON += ("{\"roleId\":"+ approvalRole.getRoleId() +
roleJSON += ("{\"roleId\":" + approvalRole.getRoleId() +
",\"staffId\":" + staff.getId() + "},");
}
if(i == 0){//目前只设置一个多个不明确是否支持roleJSON是支持多个的
if (i == 0) {//目前只设置一个多个不明确是否支持roleJSON是支持多个的
//设置当前审批员工id current_approval_staff_id
resultRecord.setCurrentApprovalStaffId(staffLeader.get(0).getId());
//设置当前审批员工姓名 current_approval_staff_name
@ -770,8 +756,8 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
}
continue;
}else{
if(i == 0){//目前只设置一个多个不明确是否支持roleJSON是支持多个的
} else {
if (i == 0) {//目前只设置一个多个不明确是否支持roleJSON是支持多个的
//设置当前审批员工id current_approval_staff_id
resultRecord.setCurrentApprovalStaffId(approvalRole.getApprovalId());
//设置当前审批员工姓名 current_approval_staff_name
@ -780,7 +766,7 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
}
}
roleJSON += ("{\"roleId\":"+ approvalRole.getRoleId() +
roleJSON += ("{\"roleId\":" + approvalRole.getRoleId() +
",\"staffId\":" + staffId + "},");
continue;
}
@ -809,10 +795,10 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
//resultRecordService.initFlowRecord(resultRecord.getId());
//下面生成ResultDetail对象
for (ResultModelDto modelDto:resultModelDtos
for (ResultModelDto modelDto : resultModelDtos
) {
if(modelDto.getTagetLibs() != null && modelDto.getTagetLibs().size() > 0){//模板里面有添加指标
for (ResultTagetLibDto libDto:
if (modelDto.getTagetLibs() != null && modelDto.getTagetLibs().size() > 0) {//模板里面有添加指标
for (ResultTagetLibDto libDto :
modelDto.getTagetLibs()) {
ResultDetail resultDetail = new ResultDetail();
resultDetail.setRecordId(resultRecord.getId());
@ -832,12 +818,12 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
startStartDto.setFlowApprovalRoles(flowApprovalRoles);
startStartDto.setFlows(flows);
//如果有数据插入lz_result_detail表
if(resultDetails.size() > 0){
if (resultDetails.size() > 0) {
//
resultDetailService.saveBatch(resultDetails);
}
evaluationStartStaffService.saveBatch(evaluationStartStaffs);
}else{
} else {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚
log.info("初始化考核流程失败");
startStartDto.setStatus(5);
@ -849,16 +835,16 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
}
@Override
public R getModelById(Long id, int type){
public R getModelById(Long id, int type) {
/*EvaluationGroup evaluationGroup = evaluationGroupService.selectEvaluationGroupById(id);
List<StaffSimpleInfo> staffIds = evaluationGroupService.selectAllStaffSimpleInfoByGroupId(evaluationGroup);*/
//flowStart = flowStartService.selectFlowStartById(flowStart.getId());
DepartManagers staffEntity = staffService.findLeader(id, type);
return R.ok().put("data",staffEntity);
return R.ok().put("data", staffEntity);
}
private void initFlowRecordAnsy(List<StartStartDto> resultRecords, List<StaffSimpleInfo> noticeStaff){
if(resultRecords.size() > 0){
private void initFlowRecordAnsy(List<StartStartDto> resultRecords, List<StaffSimpleInfo> noticeStaff) {
if (resultRecords.size() > 0) {
ThreadInitFlowRecord threadInitFlowRecord = new ThreadInitFlowRecord(resultRecords, noticeStaff);
Thread thread = new Thread(threadInitFlowRecord);
@ -868,11 +854,11 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
}
public class ThreadInitFlowRecord implements Runnable{
public class ThreadInitFlowRecord implements Runnable {
List<StartStartDto> resultStarts;
List<StaffSimpleInfo> noticeStaff;
public ThreadInitFlowRecord(List<StartStartDto> resultRecords, List<StaffSimpleInfo> noticeStaff){
public ThreadInitFlowRecord(List<StartStartDto> resultRecords, List<StaffSimpleInfo> noticeStaff) {
this.resultStarts = resultRecords;
this.noticeStaff = noticeStaff;
@ -880,25 +866,31 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
@Override
public void run() {
String oldNo = Logger.inheritableThreadLocalNo.get();//.threadLocalNo.get();
String newNo = oldNo + "_initFlowRecord" ;//+ resultRecord.getStaffId() + "_" + resultRecord.getId();
ch.qos.logback.classic.Logger.threadLocalNo.set(newNo);
try {
log.info("开始批量初始化流程,任务数量{}", resultStarts.size());
for (StartStartDto startStartDto: resultStarts
) {
String oldNo = Logger.inheritableThreadLocalNo.get();
for (StartStartDto startStartDto : resultStarts) {
try {
oldNo = Logger.inheritableThreadLocalNo.get();
String newNo = oldNo + "_initFlowRecord_" + startStartDto.getResultRecordList().get(0).getStartId();
Logger.threadLocalNo.set(newNo);
log.info("初始化任务中绩效数量{}", startStartDto.getResultRecordList().size());
for (ResultRecord resultRecord:startStartDto.getResultRecordList()
) {
for (ResultRecord resultRecord : startStartDto.getResultRecordList()) {
log.info("初始化绩效{}", resultRecord);
resultRecordService.initFlowRecord(resultRecord, startStartDto.getFlows(), startStartDto.getFlowApprovalRoles());
}
} catch (Exception e) {
log.error("发出异常", e);
} finally {
Logger.threadLocalNo.set(oldNo);
}
}
Logger.threadLocalNo.set(oldNo);
dingtalkBusiness.sendWorkMSGWithAsyn(noticeStaff, WorkMsgTypeEnum.START_WORK.getType());
} catch (Exception e) {
log.error("异常", e);
}
ch.qos.logback.classic.Logger.threadLocalNo.set(oldNo);
dingtalkBusiness.sendWorkMSGWithAsyn(noticeStaff, WorkMsgTypeEnum.START_WORK.getType());
}
}
}

View File

@ -796,6 +796,7 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
@Override
public R initFlowRecord(ResultRecord resultRecord, List<Flow> flows, List<FlowApprovalRole> flowApprovalRoles) {
log.info("员工id :" + resultRecord.getStaffId() + " ,员工名称 " + resultRecord.getStaffName());
int i = 0;
for (FlowApprovalRole flowApprovalRole : flowApprovalRoles) {
FlowRecord flowRecord = new FlowRecord();
@ -817,14 +818,17 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
approvalStaff = getDepartmentStaff(resultRecord.getStaffId(), 5);
}
if (approvalStaff != null && StringUtil.isNotBlank(approvalStaff.getName())) {
log.info("插入xxx");
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) { //如果是管理所有部门
log.info("如果是管理所有部门------");
insertFlowRecord(flowRecord, approvalStaff, flows, flowApprovalRole, resultRecord, i, 1);
} else {
log.info("222222222------");
DepartmentsStaffRelateEntity relateEntity = departmentsStaffRelateService.selectLastDepartmentByStaffId(resultRecord.getStaffId());
Map<String, String> map = departmentsService.selectUserAllDepartmentIds(relateEntity.getDepartmentId());
List<StaffRoleDepartment> staffRoleDepartments = staffRoleDepartmentService.selectStaffRoleDepartmentByStaffRoleId(staffRole.getId());
@ -837,6 +841,7 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
}
}
if (flag) { //如果管理员是管理特定部门
log.info("如果管理员是管理特定部门===========");
insertFlowRecord(flowRecord, approvalStaff, flows, flowApprovalRole, resultRecord, i, 1);
}
}