提交修改
This commit is contained in:
parent
104f818e4a
commit
73619c25c1
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user