diff --git a/src/main/java/com/lz/modules/flow/service/FlowStartService.java b/src/main/java/com/lz/modules/flow/service/FlowStartService.java index a75945fd..41e1458f 100644 --- a/src/main/java/com/lz/modules/flow/service/FlowStartService.java +++ b/src/main/java/com/lz/modules/flow/service/FlowStartService.java @@ -1,6 +1,7 @@ package com.lz.modules.flow.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.lz.common.utils.R; import com.lz.modules.flow.entity.FlowStart; import java.util.List; @@ -33,4 +34,6 @@ public interface FlowStartService extends IService { FlowStart selectFlowStartByName(String name); + + R saveStart(FlowStart flowStart); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/ResultModelService.java b/src/main/java/com/lz/modules/flow/service/ResultModelService.java index ed888a0e..68dbe5cd 100644 --- a/src/main/java/com/lz/modules/flow/service/ResultModelService.java +++ b/src/main/java/com/lz/modules/flow/service/ResultModelService.java @@ -5,6 +5,7 @@ import com.lz.common.utils.R; import com.lz.modules.flow.entity.ResultModel; import com.lz.modules.flow.entity.ResultTagetLib; import com.lz.modules.flow.model.ResultModelDto; +import com.lz.modules.flow.req.ResultModelDetailReq; import java.util.List; @@ -41,4 +42,5 @@ public interface ResultModelService extends IService { R deleteResultModelByGroupId(Long id); + R saveDetail(ResultModelDetailReq resultModelDetailReq); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java index 21fe45f0..c126c7e1 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java @@ -1,11 +1,37 @@ package com.lz.modules.flow.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.lz.common.emun.ChartOptType; +import com.lz.common.emun.CheckStaffType; +import com.lz.common.utils.R; +import com.lz.common.utils.StringUtil; +import com.lz.modules.app.entity.StaffEntity; +import com.lz.modules.app.entity.StaffSimpleInfo; +import com.lz.modules.app.service.StaffService; import com.lz.modules.flow.dao.FlowStartMapper; -import com.lz.modules.flow.entity.FlowStart; -import com.lz.modules.flow.service.FlowStartService; +import com.lz.modules.flow.entity.*; +import com.lz.modules.flow.model.DepartManagers; +import com.lz.modules.flow.model.ResultModelDto; +import com.lz.modules.flow.model.ResultTagetLibDto; +import com.lz.modules.flow.service.*; +import com.lz.modules.performance.service.ResultTagetLibService; +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 org.apache.commons.collections.map.HashedMap; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.interceptor.TransactionAspectSupport; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; /** *

@@ -23,6 +49,39 @@ public class FlowStartServiceImpl extends ServiceImpl chartNameMaps = new HashedMap();//流程节点与流程名称对应map,下面多次循环,减少数据库查找 + Map> staffManages = new HashedMap();//部门(id+几级)和部门几级管理对应关系,减少数据库查找 + //下面开始初始化流程 + List ids = Arrays.stream(flowStart.getGroupIds().split(",")).map(new Function() { + @Override + public Long apply(String s) { + return Long.parseLong(s); + } + }).collect(Collectors.toList()); + List evaluationGroups = evaluationGroupService.selectEvaluationGroupByIds(ids); + + for (int n = 0; n < evaluationGroups.size(); n++ + ) { + EvaluationGroup evaluationGroup = evaluationGroups.get(n); + //下面初始化员工考核流程 + List staffIds = evaluationGroupService.selectAllStaffSimpleInfoByGroupId(evaluationGroup); + + if(staffIds.size() == 0){ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 + + return R.error(evaluationGroup.getName() + "——无有效考核人员"); + } + List resultModelDtos = resultModelService.selectResultDtoByGroupId(evaluationGroup.getId()); + if(resultModelDtos.size() == 0){ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 + return R.error(evaluationGroup.getName() + "——没有设置考核模板"); + } + + + List flowChartDetailRecords + = flowChartDetailRecordService.selectFlowChartDetailRecordByGroupId(evaluationGroup.getId()); + if(flowChartDetailRecords.size() == 0){ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 + return R.error(evaluationGroup.getName() + "——没有设置考核流程"); + } + + List staffManagers = null; + if(!StringUtil.isEmpty(evaluationGroup.getManagerIds())){ + List mIds = Arrays.stream(evaluationGroup.getManagerIds().split(",")) + .map(new Function() { + @Override + public Long apply(String s) { + return Long.parseLong(s); + } + }).collect(Collectors.toList()); + //查找在职的管理人员 + staffManagers = staffService.selectOnJobByIds(mIds); + + } + if(staffManagers == null || staffManagers.size() == 0){ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 + return R.error(evaluationGroup.getName() + "——没有设置绩效管理人员"); + } + + //下面拷贝一份考评组信息发起后所使用的考评组id为复制后的id + evaluationGroup.setCopyId(evaluationGroup.getId()); + evaluationGroup.setId(null); + evaluationGroup.setGmtCreate(null); + evaluationGroup.setGmtModified(null); + evaluationGroupService.insertEvaluationGroup(evaluationGroup); + + //拷贝考评组的指标信息 + List resultTagetLibs = new ArrayList<>(); + + for (ResultModelDto dto:resultModelDtos + ) { + + + dto.setEvaluationGroupId(evaluationGroup.getId());//设置拷贝组的id + //下面拷贝一份考评组信息的维度信息 + ResultModel resultModel = new ResultModel(); + BeanUtils.copyProperties(dto, resultModel); + resultModel.setId(null); + resultModelService.insertResultModel(resultModel); + + List libDtos = resultTagetLibService.selectResultTagetLibDtoByModelId(dto.getId()); + dto.setTagetLibs(libDtos); + for (ResultTagetLibDto libDto: libDtos + ) { + //下面拷贝考评组里面的指标信息 + ResultTagetLib resultTagetLib = new ResultTagetLib(); + BeanUtils.copyProperties(libDto, resultTagetLib); + resultTagetLib.setModelId(resultModel.getId());//设置新的维度id + resultTagetLib.setId(null); + resultTagetLibs.add(resultTagetLib); + } + } + if(resultTagetLibs.size() > 0){ + //插入备份的考评组指标信息 + resultTagetLibService.insertResultTagetLibs(resultTagetLibs); + } + + + + + //下面初始化lz_flow流程表 lz_flow_approval_role流程审批表 + List flowApprovalRoles = new ArrayList<>(); + int stepIndex = 0; + for (FlowChartDetailRecord flowChartDetailRecord:flowChartDetailRecords + ) { + Flow flow = new Flow(); + flow.setFlowId(evaluationGroup.getId()); + flow.setOpt("+"); + flow.setStartId(flowStart.getId()); + flow.setChartId(flowChartDetailRecord.getChartId()); + String optName; + if(chartNameMaps.containsKey(flowChartDetailRecord.getChartId())){//缓存 + optName = chartNameMaps.get(flowChartDetailRecord.getChartId()); + }else{//查找数据库 + FlowChart flowChart = flowChartService.selectFlowChartById(flowChartDetailRecord.getChartId()); + chartNameMaps.put(flowChart.getId(), flowChart.getName()); + optName = flowChart.getName(); + } + flow.setOptDesc(optName); + flowService.insertFlow(flow); + + if(flowChartDetailRecord.getOptType().intValue() == ChartOptType.APPOINT.getCode()){//指定人员的 + String[] optIds = flowChartDetailRecord.getOptIds().split(","); + for (String id:optIds + ) { + /*String[] roleIds = flowChartDetailRecord.getRoleIds().split(","); + for (String roleId:roleIds + ) { + FlowApprovalRole flowApprovalRole = new FlowApprovalRole(); + flowApprovalRole.setFlowId(flow.getId()); + flowApprovalRole.setApprovalId(Long.parseLong(id)); + flowApprovalRole.setStepType(flowChartDetailRecord.getStepType()); + flowApprovalRole.setRoleId(roleId); + flowApprovalRole.setType(flowChartDetailRecord.getOptType()); + flowApprovalRoles.add(flowApprovalRole); + flowApprovalRole.setStepIndex(stepIndex); + }*/ + FlowApprovalRole flowApprovalRole = new FlowApprovalRole(); + flowApprovalRole.setFlowId(flow.getId()); + flowApprovalRole.setApprovalId(Long.parseLong(id)); + flowApprovalRole.setStepType(flowChartDetailRecord.getStepType()); + flowApprovalRole.setRoleId(flowChartDetailRecord.getRoleIds()); + flowApprovalRole.setType(flowChartDetailRecord.getOptType()); + flowApprovalRoles.add(flowApprovalRole); + flowApprovalRole.setStepIndex(stepIndex); + } + stepIndex++; + }else{ + FlowApprovalRole flowApprovalRole = new FlowApprovalRole(); + flowApprovalRole.setFlowId(flow.getId()); + flowApprovalRole.setStepType(flowChartDetailRecord.getStepType()); + flowApprovalRole.setRoleId(flowChartDetailRecord.getRoleIds()); + flowApprovalRole.setType(flowChartDetailRecord.getOptType()); + flowApprovalRoles.add(flowApprovalRole); + flowApprovalRole.setStepIndex(stepIndex); + /*String[] roleIds = flowChartDetailRecord.getRoleIds().split(","); + for (String roleId:roleIds + ) { + FlowApprovalRole flowApprovalRole = new FlowApprovalRole(); + flowApprovalRole.setFlowId(flow.getId()); + flowApprovalRole.setStepType(flowChartDetailRecord.getStepType()); + flowApprovalRole.setRoleId(roleId); + flowApprovalRole.setType(flowChartDetailRecord.getOptType()); + flowApprovalRoles.add(flowApprovalRole); + flowApprovalRole.setStepIndex(stepIndex); + + + }*/ + stepIndex++; + } + + } + //插入记录 + if(flowApprovalRoles.size() > 0){ + flowApprovalRoleService.insertFlowApprovalRoles(flowApprovalRoles); + + //初始化lz_result_details数据 + List resultDetails = new ArrayList<>(); + + + List evaluationStartStaffs = new ArrayList<>(); + + //下面初始化管理人员对应关系 + for (StaffEntity entity:staffManagers + ) { + EvaluationStartStaff evaluationStartStaff = new EvaluationStartStaff(); + evaluationStartStaff.setEvaluationId(evaluationGroup.getId()); + evaluationStartStaff.setEvaluationName(evaluationGroup.getName()); + evaluationStartStaff.setStaffId(entity.getId()); + evaluationStartStaff.setStartId(flowStart.getId()); + evaluationStartStaff.setType(CheckStaffType.MANAGER.getCode()); + evaluationStartStaffs.add(evaluationStartStaff); + + } + + + //下面初始化参与人员 + for (StaffSimpleInfo staffInfo:staffIds + ) { + EvaluationStartStaff evaluationStartStaff = new EvaluationStartStaff(); + evaluationStartStaff.setEvaluationId(evaluationGroup.getId()); + evaluationStartStaff.setEvaluationName(evaluationGroup.getName()); + evaluationStartStaff.setStaffId(staffInfo.getId()); + evaluationStartStaff.setStartId(flowStart.getId()); + evaluationStartStaff.setType(CheckStaffType.STAFF.getCode()); + evaluationStartStaffs.add(evaluationStartStaff); + + + //初始化lz_result_records数据 + ResultRecord resultRecord = new ResultRecord(); + resultRecord.setDepartmentId(staffInfo.getDepartmentId()); + resultRecord.setDepartmentName(staffInfo.getDepartmentName()); + resultRecord.setStaffId(staffInfo.getId()); + resultRecord.setStaffName(staffInfo.getName()); + resultRecord.setType(1);//设置为提交目标 + resultRecord.setStatus(0);//设置为新建 + resultRecord.setStartId(flowStart.getId()); + resultRecord.setEvaluationId(evaluationGroup.getId()); + resultRecord.setFlowProcess(0);//设置为目标制定 + + //下面初始化flow_staff_id_role字段,步骤为0的 + String roleJSON = "["; + for (int i = 0; i < flowApprovalRoles.size() ;i++){ + FlowApprovalRole approvalRole = flowApprovalRoles.get(i); + if(approvalRole.getStepIndex().intValue() == 0){//找到所有步骤为0的人员 + Long staffId = approvalRole.getApprovalId();//默认为指定人员。 + if(approvalRole.getType().intValue() == ChartOptType.SELF.getCode()){ + //制定人员为自己的 + staffId = staffInfo.getId(); + 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){//当设置为几级领导时 + ///查找领导,如果不存在那么设置管理人员 + List staffLeader; + String key = staffInfo.getDepartmentId() + approvalRole.getType(); + if(staffManages.containsKey(key)){ + staffLeader = staffManages.get(staffInfo.getDepartmentId()); + }else{ + DepartManagers departManagers = + staffService.findLeader(staffInfo.getId(), approvalRole.getType()); + staffLeader = departManagers.getManagers(); + staffManages.put(key, departManagers.getManagers()); + } + + if(staffLeader.size() == 0){ + //没有领导,通知到组设置的绩效管理人员 + for (StaffEntity entity:staffManagers + ) { + roleJSON += ("{\"roleId\":0,\"staffId\":" + entity.getId() + "},");//这里写死了权限为0的即为找不到领导 + + } + 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 0){//模板里面有添加指标 + for (ResultTagetLibDto libDto: + modelDto.getTagetLibs()) { + + + ResultDetail resultDetail = new ResultDetail(); + resultDetail.setRecordId(resultRecord.getId()); + resultDetail.setTarget(libDto.getName()); + resultDetail.setType(modelDto.getType()); + resultDetail.setKeyResult(libDto.getKeyResult()); + resultDetail.setCheckWeight(libDto.getWeight()); + resultDetail.setStaffId(staffInfo.getId()); + resultDetail.setPriority(libDto.getOrderBy()); + resultDetails.add(resultDetail); + } + } + } + } + //如果有数据插入lz_result_detail表 + if(resultDetails.size() > 0){ + // + resultDetailService.insertResultDetails(resultDetails); + + } + + + + evaluationStartStaffService.insertEvaluationStartStaffs(evaluationStartStaffs); + //下面通知所有参与考核人员 + + //如果有下面通知所有管理人员 + }else{ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 + return R.error(evaluationGroup.getName() + "——初始化考核流程失败"); + } + + } + return R.ok("发起成功"); + } + } diff --git a/src/main/java/com/lz/modules/flow/service/impl/ResultModelServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/ResultModelServiceImpl.java index 82bc1c6f..8529961d 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/ResultModelServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/ResultModelServiceImpl.java @@ -6,13 +6,19 @@ import com.lz.modules.flow.dao.ResultModelMapper; import com.lz.modules.flow.entity.ResultModel; import com.lz.modules.flow.entity.ResultTagetLib; import com.lz.modules.flow.model.ResultModelDto; +import com.lz.modules.flow.req.ResultModelDetailReq; +import com.lz.modules.flow.req.ResultModelItemReq; +import com.lz.modules.flow.req.ResultTagetLibItemReq; import com.lz.modules.flow.service.ResultModelService; import com.lz.modules.performance.service.ResultTagetLibService; import com.lz.modules.sys.entity.app.ResultDetail; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.interceptor.TransactionAspectSupport; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -35,6 +41,8 @@ public class ResultModelServiceImpl extends ServiceImpl inserts = new ArrayList<>(); + List updates = new ArrayList<>(); + BigDecimal tagLibWeight = BigDecimal.ZERO; + for (ResultTagetLibItemReq req:itemReq.getTagetLibItems() + ) { + ResultTagetLib resultTagetLib = new ResultTagetLib(); + BeanUtils.copyProperties(req, resultTagetLib); + resultTagetLib.setModelId(resultModel.getId()); + resultTagetLib.setOrderBy(libOrderBy); + tagLibWeight = tagLibWeight.add(req.getWeight()); + if(tagLibWeight.compareTo(resultModel.getWeight()) == 1){ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//事务回滚 + return R.error(resultModel.getName() + + "维度的指标之和不能大于" + (resultModel.getWeight().multiply(BigDecimal.valueOf(100))) + "%"); + } + if(resultTagetLib.getId() != null && resultTagetLib.getId().intValue() > 0){ + updates.add(resultTagetLib); + }else{ + inserts.add(resultTagetLib); + } + if(resultTagetLib.getIsDelete() == null || resultTagetLib.getIsDelete().intValue() == 0){ + libOrderBy++; + } + + } + if(inserts.size() > 0){ + resultTargetLibService.insertResultTagetLibs(inserts); + } + if(updates.size() > 0){ + resultTargetLibService.updateBatchById(updates); + } + + if(resultModel.getIsDelete() == null || resultModel.getIsDelete().intValue() == 0){ + resultModelOrderBy++; + } + } + + } + return R.ok(); + } + } diff --git a/src/main/java/com/lz/modules/performance/controller/FlowStartController.java b/src/main/java/com/lz/modules/performance/controller/FlowStartController.java index 59282836..8d50ec45 100644 --- a/src/main/java/com/lz/modules/performance/controller/FlowStartController.java +++ b/src/main/java/com/lz/modules/performance/controller/FlowStartController.java @@ -49,35 +49,7 @@ public class FlowStartController { @Autowired private EvaluationGroupService evaluationGroupService; - @Autowired - private EvaluationStartStaffService evaluationStartStaffService; - @Autowired - private ResultModelService resultModelService; - - @Autowired - private FlowChartDetailRecordService flowChartDetailRecordService; - - @Autowired - private FlowService flowService; - - @Autowired - private FlowApprovalRoleService flowApprovalRoleService; - - @Autowired - private FlowChartService flowChartService; - - @Autowired - private ResultRecordService resultRecordService; - - @Autowired - private ResultDetailService resultDetailService; - - @Autowired - private ResultTagetLibService resultTagetLibService; - - @Autowired - private StaffService staffService; @@ -104,377 +76,7 @@ public class FlowStartController { @PostMapping("/save") @ApiOperation("发起新的考核任务") public R save(@RequestBody @ApiParam FlowStart flowStart) { - //下面生成或者合并发起绩效 - if(flowStart.getStartTime() == null){ - return R.error("未设置有效考核月份"); - } - SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月"); - String startDate = sdf.format(flowStart.getStartTime()); - - if(flowStart.getCycleType().intValue() != 0){ - //月份 - if(flowStart.getEndTime() == null){ - return R.error("未设置有效考核结束月份"); - } - String endDate = sdf.format(flowStart.getStartTime()); - flowStart.setName(startDate + "-" + endDate + "绩效考核"); - }else{ - flowStart.setName(startDate + "绩效考核"); - } - FlowStart flowStart1 = flowStartService.selectFlowStartByName(flowStart.getName()); - if(flowStart1 == null){ - flowStartService.insertFlowStart(flowStart); - }else{ - - flowStart.setId(flowStart1.getId()); - } - - - Map chartNameMaps = new HashedMap();//流程节点与流程名称对应map,下面多次循环,减少数据库查找 - Map> staffManages = new HashedMap();//部门(id+几级)和部门几级管理对应关系,减少数据库查找 - //下面开始初始化流程 - List ids = Arrays.stream(flowStart.getGroupIds().split(",")).map(new Function() { - @Override - public Long apply(String s) { - return Long.parseLong(s); - } - }).collect(Collectors.toList()); - List evaluationGroups = evaluationGroupService.selectEvaluationGroupByIds(ids); - - for (int n = 0; n < evaluationGroups.size(); n++ - ) { - EvaluationGroup evaluationGroup = evaluationGroups.get(n); - //下面初始化员工考核流程 - List staffIds = evaluationGroupService.selectAllStaffSimpleInfoByGroupId(evaluationGroup); - - if(staffIds.size() == 0){ - if(n == 0){//如果一个组都没有添加,那么直接删除 - flowStartService.deleteFlowStartById(flowStart.getId()); - } - - return R.error(evaluationGroup.getName() + "——无有效考核人员"); - } - List resultModelDtos = resultModelService.selectResultDtoByGroupId(evaluationGroup.getId()); - if(resultModelDtos.size() == 0){ - if(n == 0){//如果一个组都没有添加,那么直接删除 - flowStartService.deleteFlowStartById(flowStart.getId()); - } - return R.error(evaluationGroup.getName() + "——没有设置考核模板"); - } - - - List flowChartDetailRecords - = flowChartDetailRecordService.selectFlowChartDetailRecordByGroupId(evaluationGroup.getId()); - if(flowChartDetailRecords.size() == 0){ - if(n == 0){//如果一个组都没有添加,那么直接删除 - flowStartService.deleteFlowStartById(flowStart.getId()); - } - return R.error(evaluationGroup.getName() + "——没有设置考核流程"); - } - - List staffManagers = null; - if(!StringUtil.isEmpty(evaluationGroup.getManagerIds())){ - List mIds = Arrays.stream(evaluationGroup.getManagerIds().split(",")) - .map(new Function() { - @Override - public Long apply(String s) { - return Long.parseLong(s); - } - }).collect(Collectors.toList()); - //查找在职的管理人员 - staffManagers = staffService.selectOnJobByIds(mIds); - - } - if(staffManagers == null || staffManagers.size() == 0){ - if(n == 0){//如果一个组都没有添加,那么直接删除 - flowStartService.deleteFlowStartById(flowStart.getId()); - } - return R.error(evaluationGroup.getName() + "——没有设置绩效管理人员"); - } - - //下面拷贝一份考评组信息发起后所使用的考评组id为复制后的id - evaluationGroup.setCopyId(evaluationGroup.getId()); - evaluationGroup.setId(null); - evaluationGroup.setGmtCreate(null); - evaluationGroup.setGmtModified(null); - evaluationGroupService.insertEvaluationGroup(evaluationGroup); - - //拷贝考评组的指标信息 - List resultTagetLibs = new ArrayList<>(); - - for (ResultModelDto dto:resultModelDtos - ) { - - - dto.setEvaluationGroupId(evaluationGroup.getId());//设置拷贝组的id - //下面拷贝一份考评组信息的维度信息 - ResultModel resultModel = new ResultModel(); - BeanUtils.copyProperties(dto, resultModel); - resultModel.setId(null); - resultModelService.insertResultModel(resultModel); - - List libDtos = resultTagetLibService.selectResultTagetLibDtoByModelId(dto.getId()); - dto.setTagetLibs(libDtos); - for (ResultTagetLibDto libDto: libDtos - ) { - //下面拷贝考评组里面的指标信息 - ResultTagetLib resultTagetLib = new ResultTagetLib(); - BeanUtils.copyProperties(libDto, resultTagetLib); - resultTagetLib.setModelId(resultModel.getId());//设置新的维度id - resultTagetLib.setId(null); - resultTagetLibs.add(resultTagetLib); - } - } - if(resultTagetLibs.size() > 0){ - //插入备份的考评组指标信息 - resultTagetLibService.insertResultTagetLibs(resultTagetLibs); - } - - - - - //下面初始化lz_flow流程表 lz_flow_approval_role流程审批表 - List flowApprovalRoles = new ArrayList<>(); - int stepIndex = 0; - for (FlowChartDetailRecord flowChartDetailRecord:flowChartDetailRecords - ) { - Flow flow = new Flow(); - flow.setFlowId(evaluationGroup.getId()); - flow.setOpt("+"); - flow.setStartId(flowStart.getId()); - flow.setChartId(flowChartDetailRecord.getChartId()); - String optName; - if(chartNameMaps.containsKey(flowChartDetailRecord.getChartId())){//缓存 - optName = chartNameMaps.get(flowChartDetailRecord.getChartId()); - }else{//查找数据库 - FlowChart flowChart = flowChartService.selectFlowChartById(flowChartDetailRecord.getChartId()); - chartNameMaps.put(flowChart.getId(), flowChart.getName()); - optName = flowChart.getName(); - } - flow.setOptDesc(optName); - flowService.insertFlow(flow); - - if(flowChartDetailRecord.getOptType().intValue() == ChartOptType.APPOINT.getCode()){//指定人员的 - String[] optIds = flowChartDetailRecord.getOptIds().split(","); - for (String id:optIds - ) { - /*String[] roleIds = flowChartDetailRecord.getRoleIds().split(","); - for (String roleId:roleIds - ) { - FlowApprovalRole flowApprovalRole = new FlowApprovalRole(); - flowApprovalRole.setFlowId(flow.getId()); - flowApprovalRole.setApprovalId(Long.parseLong(id)); - flowApprovalRole.setStepType(flowChartDetailRecord.getStepType()); - flowApprovalRole.setRoleId(roleId); - flowApprovalRole.setType(flowChartDetailRecord.getOptType()); - flowApprovalRoles.add(flowApprovalRole); - flowApprovalRole.setStepIndex(stepIndex); - }*/ - FlowApprovalRole flowApprovalRole = new FlowApprovalRole(); - flowApprovalRole.setFlowId(flow.getId()); - flowApprovalRole.setApprovalId(Long.parseLong(id)); - flowApprovalRole.setStepType(flowChartDetailRecord.getStepType()); - flowApprovalRole.setRoleId(flowChartDetailRecord.getRoleIds()); - flowApprovalRole.setType(flowChartDetailRecord.getOptType()); - flowApprovalRoles.add(flowApprovalRole); - flowApprovalRole.setStepIndex(stepIndex); - } - stepIndex++; - }else{ - FlowApprovalRole flowApprovalRole = new FlowApprovalRole(); - flowApprovalRole.setFlowId(flow.getId()); - flowApprovalRole.setStepType(flowChartDetailRecord.getStepType()); - flowApprovalRole.setRoleId(flowChartDetailRecord.getRoleIds()); - flowApprovalRole.setType(flowChartDetailRecord.getOptType()); - flowApprovalRoles.add(flowApprovalRole); - flowApprovalRole.setStepIndex(stepIndex); - /*String[] roleIds = flowChartDetailRecord.getRoleIds().split(","); - for (String roleId:roleIds - ) { - FlowApprovalRole flowApprovalRole = new FlowApprovalRole(); - flowApprovalRole.setFlowId(flow.getId()); - flowApprovalRole.setStepType(flowChartDetailRecord.getStepType()); - flowApprovalRole.setRoleId(roleId); - flowApprovalRole.setType(flowChartDetailRecord.getOptType()); - flowApprovalRoles.add(flowApprovalRole); - flowApprovalRole.setStepIndex(stepIndex); - - - }*/ - stepIndex++; - } - - } - //插入记录 - if(flowApprovalRoles.size() > 0){ - flowApprovalRoleService.insertFlowApprovalRoles(flowApprovalRoles); - - //初始化lz_result_details数据 - List resultDetails = new ArrayList<>(); - - - List evaluationStartStaffs = new ArrayList<>(); - - //下面初始化管理人员对应关系 - for (StaffEntity entity:staffManagers - ) { - EvaluationStartStaff evaluationStartStaff = new EvaluationStartStaff(); - evaluationStartStaff.setEvaluationId(evaluationGroup.getId()); - evaluationStartStaff.setEvaluationName(evaluationGroup.getName()); - evaluationStartStaff.setStaffId(entity.getId()); - evaluationStartStaff.setStartId(flowStart.getId()); - evaluationStartStaff.setType(CheckStaffType.MANAGER.getCode()); - evaluationStartStaffs.add(evaluationStartStaff); - - } - - - //下面初始化参与人员 - for (StaffSimpleInfo staffInfo:staffIds - ) { - EvaluationStartStaff evaluationStartStaff = new EvaluationStartStaff(); - evaluationStartStaff.setEvaluationId(evaluationGroup.getId()); - evaluationStartStaff.setEvaluationName(evaluationGroup.getName()); - evaluationStartStaff.setStaffId(staffInfo.getId()); - evaluationStartStaff.setStartId(flowStart.getId()); - evaluationStartStaff.setType(CheckStaffType.STAFF.getCode()); - evaluationStartStaffs.add(evaluationStartStaff); - - - //初始化lz_result_records数据 - ResultRecord resultRecord = new ResultRecord(); - resultRecord.setDepartmentId(staffInfo.getDepartmentId()); - resultRecord.setDepartmentName(staffInfo.getDepartmentName()); - resultRecord.setStaffId(staffInfo.getId()); - resultRecord.setStaffName(staffInfo.getName()); - resultRecord.setType(1);//设置为提交目标 - resultRecord.setStatus(0);//设置为新建 - resultRecord.setStartId(flowStart.getId()); - resultRecord.setEvaluationId(evaluationGroup.getId()); - resultRecord.setFlowProcess(0);//设置为目标制定 - - //下面初始化flow_staff_id_role字段,步骤为0的 - String roleJSON = "["; - for (int i = 0; i < flowApprovalRoles.size() ;i++){ - FlowApprovalRole approvalRole = flowApprovalRoles.get(i); - if(approvalRole.getStepIndex().intValue() == 0){//找到所有步骤为0的人员 - Long staffId = approvalRole.getApprovalId();//默认为指定人员。 - if(approvalRole.getType().intValue() == ChartOptType.SELF.getCode()){ - //制定人员为自己的 - staffId = staffInfo.getId(); - 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){//当设置为几级领导时 - ///查找领导,如果不存在那么设置管理人员 - List staffLeader; - String key = staffInfo.getDepartmentId() + approvalRole.getType(); - if(staffManages.containsKey(key)){ - staffLeader = staffManages.get(staffInfo.getDepartmentId()); - }else{ - DepartManagers departManagers = - staffService.findLeader(staffInfo.getId(), approvalRole.getType()); - staffLeader = departManagers.getManagers(); - staffManages.put(key, departManagers.getManagers()); - } - - if(staffLeader.size() == 0){ - //没有领导,通知到组设置的绩效管理人员 - for (StaffEntity entity:staffManagers - ) { - roleJSON += ("{\"roleId\":0,\"staffId\":" + entity.getId() + "},");//这里写死了权限为0的即为找不到领导 - - } - 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 0){//模板里面有添加指标 - for (ResultTagetLibDto libDto: - modelDto.getTagetLibs()) { - - - ResultDetail resultDetail = new ResultDetail(); - resultDetail.setRecordId(resultRecord.getId()); - resultDetail.setTarget(libDto.getName()); - resultDetail.setType(modelDto.getType()); - resultDetail.setKeyResult(libDto.getKeyResult()); - resultDetail.setCheckWeight(libDto.getWeight()); - resultDetail.setStaffId(staffInfo.getId()); - resultDetail.setPriority(libDto.getOrderBy()); - resultDetails.add(resultDetail); - } - } - } - } - //如果有数据插入lz_result_detail表 - if(resultDetails.size() > 0){ - // - resultDetailService.insertResultDetails(resultDetails); - - } - - - - evaluationStartStaffService.insertEvaluationStartStaffs(evaluationStartStaffs); - //下面通知所有参与考核人员 - - //如果有下面通知所有管理人员 - }else{ - return R.error(evaluationGroup.getName() + "——初始化考核流程失败"); - } - - } - return R.ok(); + return flowStartService.saveStart(flowStart); } diff --git a/src/main/java/com/lz/modules/performance/controller/ResultModelController.java b/src/main/java/com/lz/modules/performance/controller/ResultModelController.java index 2d9bea5f..27801ced 100644 --- a/src/main/java/com/lz/modules/performance/controller/ResultModelController.java +++ b/src/main/java/com/lz/modules/performance/controller/ResultModelController.java @@ -14,8 +14,10 @@ import com.lz.modules.performance.service.ResultTagetLibService; import io.swagger.annotations.*; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -88,56 +90,8 @@ public class ResultModelController { @PostMapping("/saveDetail") @ApiOperation("保存模板中的考核维度及指标") public R saveDetail(@RequestBody @ApiParam ResultModelDetailReq resultModelDetailReq) { - int resultModelOrderBy = 0; - for (ResultModelItemReq itemReq: - resultModelDetailReq.getModelItems()) { - ResultModel resultModel = new ResultModel(); - BeanUtils.copyProperties(itemReq, resultModel); - resultModel.setCalculateId(resultModelDetailReq.getCalculateId()); - resultModel.setGradeGroupId(resultModelDetailReq.getGradeGroupId()); - resultModel.setGradeStatus(resultModelDetailReq.getGradeStatus()); - resultModel.setEvaluationGroupId(resultModelDetailReq.getEvaluationGroupId()); - resultModel.setOrderBy(resultModelOrderBy); - if(resultModel.getId() != null && resultModel.getId().intValue() > 0){ - resultModelService.updateResultModelById(resultModel); - }else{ - resultModelService.insertResultModel(resultModel); - } - if(itemReq.getTagetLibItems() != null){ - int libOrderBy = 0; - List inserts = new ArrayList<>(); - List updates = new ArrayList<>(); - for (ResultTagetLibItemReq req:itemReq.getTagetLibItems() - ) { - ResultTagetLib resultTagetLib = new ResultTagetLib(); - BeanUtils.copyProperties(req, resultTagetLib); - resultTagetLib.setModelId(resultModel.getId()); - resultTagetLib.setOrderBy(libOrderBy); - if(resultTagetLib.getId() != null && resultTagetLib.getId().intValue() > 0){ - updates.add(resultTagetLib); - }else{ - inserts.add(resultTagetLib); - } - if(resultTagetLib.getIsDelete() == null || resultTagetLib.getIsDelete().intValue() == 0){ - libOrderBy++; - } + return resultModelService.saveDetail(resultModelDetailReq); - } - if(inserts.size() > 0){ - resultTagetLibService.insertResultTagetLibs(inserts); - } - if(updates.size() > 0){ - resultTagetLibService.updateBatchById(updates); - } - - if(resultModel.getIsDelete() == null || resultModel.getIsDelete().intValue() == 0){ - resultModelOrderBy++; - } - } - - - } - return R.ok(); }