From 2dbc72645e801e8fe5ab8121ba92fd8e14c80037 Mon Sep 17 00:00:00 2001 From: wulin Date: Mon, 26 Oct 2020 15:03:58 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=B8=80=E4=BA=9B=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=94=BE=E5=88=B0service=E9=87=8C=E9=9D=A2=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=89=8B=E5=8A=A8=E4=BA=8B=E5=8A=A1=E5=9B=9E?= =?UTF-8?q?=E6=BB=9A=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flow/service/FlowStartService.java | 3 + .../flow/service/ResultModelService.java | 2 + .../service/impl/FlowStartServiceImpl.java | 431 +++++++++++++++++- .../service/impl/ResultModelServiceImpl.java | 75 +++ .../controller/FlowStartController.java | 400 +--------------- .../controller/ResultModelController.java | 52 +-- 6 files changed, 513 insertions(+), 450 deletions(-) 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(); } From 5c896280de5772c59b25796bb35e297b1f5e6f45 Mon Sep 17 00:00:00 2001 From: wulin Date: Mon, 26 Oct 2020 15:35:39 +0800 Subject: [PATCH 2/5] =?UTF-8?q?flowchart=E6=B7=BB=E5=8A=A0=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/lz/modules/flow/entity/FlowChart.java | 34 ++++++++++--- .../resources/mapper/flow/FlowChartMapper.xml | 49 ++++++++++--------- src/test/java/com/lz/mysql/MysqlMain.java | 2 +- 3 files changed, 54 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/lz/modules/flow/entity/FlowChart.java b/src/main/java/com/lz/modules/flow/entity/FlowChart.java index f07f6891..8a905d87 100644 --- a/src/main/java/com/lz/modules/flow/entity/FlowChart.java +++ b/src/main/java/com/lz/modules/flow/entity/FlowChart.java @@ -8,10 +8,9 @@ import lombok.Data; import java.util.Date; /** *

-* 菜单权限表 *

*流程图,lz_flow的父 * @author quyixiao -* @since 2020-10-14 +* @since 2020-10-26 */ @Data @@ -39,12 +38,15 @@ public class FlowChart implements java.io.Serializable { //是否可允许不启用节点 0不可,1可以 @ApiModelProperty(value = "是否可允许不启用节点 0不可,1可以", name = "status") private Integer status; - //1可配置细节,0不可配置细节,一般线下操作。比如执行中 - @ApiModelProperty(value = "1可配置细节,0不可配置细节,一般线下操作。比如执行中", name = "type") + //1可配置细节,0不可配置细节,一般线下操作。比如执行中,不可配置细节的允许自动跳过该节点。比如,还未到改节点时,人为设置该节点后面的操作,那么所有相关的都自动跳过 + @ApiModelProperty(value = "1可配置细节,0不可配置细节,一般线下操作。比如执行中,不可配置细节的允许自动跳过该节点。比如,还未到改节点时,人为设置该节点后面的操作,那么所有相关的都自动跳过", name = "type") private Integer type; //执行步骤,第几步,从0开始 @ApiModelProperty(value = "执行步骤,第几步,从0开始", name = "stepIndex") private Integer stepIndex; + //当前是目标确认还是评分,0,目标制定,1,目标确认,2执行中,3,结果值录入,4,评分,5考核结束 + @ApiModelProperty(value = "当前是目标确认还是评分,0,目标制定,1,目标确认,2执行中,3,结果值录入,4,评分,5考核结束", name = "flowProcess") + private Integer flowProcess; /** * * @return @@ -136,14 +138,14 @@ public class FlowChart implements java.io.Serializable { } /** - * 0启用,1不启用 + * 是否可允许不启用节点 0不可,1可以 * @return */ public Integer getStatus() { return status; } /** - * 0启用,1不启用 + * 是否可允许不启用节点 0不可,1可以 * @param status */ public void setStatus(Integer status) { @@ -151,14 +153,14 @@ public class FlowChart implements java.io.Serializable { } /** - * 1可配置细节,0不可配置细节,一般线下操作。比如执行中 + * 1可配置细节,0不可配置细节,一般线下操作。比如执行中,不可配置细节的允许自动跳过该节点。比如,还未到改节点时,人为设置该节点后面的操作,那么所有相关的都自动跳过 * @return */ public Integer getType() { return type; } /** - * 1可配置细节,0不可配置细节,一般线下操作。比如执行中 + * 1可配置细节,0不可配置细节,一般线下操作。比如执行中,不可配置细节的允许自动跳过该节点。比如,还未到改节点时,人为设置该节点后面的操作,那么所有相关的都自动跳过 * @param type */ public void setType(Integer type) { @@ -180,6 +182,21 @@ public class FlowChart implements java.io.Serializable { this.stepIndex = stepIndex; } + /** + * 当前是目标确认还是评分,0,目标制定,1,目标确认,2执行中,3,结果值录入,4,评分,5考核结束 + * @return + */ + public Integer getFlowProcess() { + return flowProcess; + } + /** + * 当前是目标确认还是评分,0,目标制定,1,目标确认,2执行中,3,结果值录入,4,评分,5考核结束 + * @param flowProcess + */ + public void setFlowProcess(Integer flowProcess) { + this.flowProcess = flowProcess; + } + @Override public String toString() { return "FlowChart{" + @@ -192,6 +209,7 @@ public class FlowChart implements java.io.Serializable { ",status=" + status + ",type=" + type + ",stepIndex=" + stepIndex + + ",flowProcess=" + flowProcess + "}"; } } \ No newline at end of file diff --git a/src/main/resources/mapper/flow/FlowChartMapper.xml b/src/main/resources/mapper/flow/FlowChartMapper.xml index 805a0347..009a4bff 100644 --- a/src/main/resources/mapper/flow/FlowChartMapper.xml +++ b/src/main/resources/mapper/flow/FlowChartMapper.xml @@ -13,12 +13,13 @@ + - id AS id, is_delete AS isDelete, gmt_create AS gmtCreate, gmt_modified AS gmtModified, name AS name, process_id AS processId, status AS status, type AS type, step_index AS stepIndex + id AS id, is_delete AS isDelete, gmt_create AS gmtCreate, gmt_modified AS gmtModified, name AS name, process_id AS processId, status AS status, type AS type, step_index AS stepIndex, flow_process AS flowProcess @@ -31,30 +32,32 @@ insert into lz_flow_chart( - name, - process_id, - status, - type, - step_index, - is_delete, - gmt_create, - gmt_modified + name, + process_id, + status, + type, + step_index, + flow_process, + is_delete, + gmt_create, + gmt_modified )values( - #{ name}, - #{ processId}, - #{ status}, - #{ type}, - #{ stepIndex}, - 0, - now(), - now() + #{ name}, + #{ processId}, + #{ status}, + #{ type}, + #{ stepIndex}, + #{ flowProcess}, + 0, + now(), + now() ) update - lz_flow_chart + lz_flow_chart is_delete = #{isDelete}, gmt_create = #{gmtCreate}, @@ -62,7 +65,8 @@ process_id = #{processId}, status = #{status}, type = #{type}, - step_index = #{stepIndex} + step_index = #{stepIndex}, + flow_process = #{flowProcess} ,gmt_modified = now() where id = #{id} @@ -71,15 +75,16 @@ update - lz_flow_chart - set + lz_flow_chart + set is_delete = #{isDelete}, gmt_create = #{gmtCreate}, name = #{name}, process_id = #{processId}, status = #{status}, type = #{type}, - step_index = #{stepIndex} + step_index = #{stepIndex}, + flow_process = #{flowProcess} ,gmt_modified = now() where id = #{id} diff --git a/src/test/java/com/lz/mysql/MysqlMain.java b/src/test/java/com/lz/mysql/MysqlMain.java index f3e5c41d..b9a6be0a 100644 --- a/src/test/java/com/lz/mysql/MysqlMain.java +++ b/src/test/java/com/lz/mysql/MysqlMain.java @@ -96,7 +96,7 @@ public class MysqlMain { //list.add(new TablesBean("lz_flow_chart_detail_record")); //list.add(new TablesBean("lz_flow_approval_role")); - list.add(new TablesBean("lz_flow_record")); + list.add(new TablesBean("lz_flow_chart")); List list2 = new ArrayList(); Map map = MysqlUtil2ShowCreateTable.getComments(); From fb945d20a90ffa1faf36f854bfde65180ba7378f Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Mon, 26 Oct 2020 15:36:20 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ResultRecordController.java | 15 ++++ .../app/controller/TestController.java | 2 +- .../com/lz/modules/app/dto/ApprovalDto.java | 10 +++ .../lz/modules/flow/dao/FlowRecordMapper.java | 3 + .../flow/service/FlowRecordService.java | 2 + .../service/impl/FlowRecordServiceImpl.java | 5 ++ .../sys/service/app/ResultRecordService.java | 3 + .../app/impl/ResultRecordServiceImpl.java | 89 +++++++++++++++++++ .../mapper/flow/FlowRecordMapper.xml | 10 ++- 9 files changed, 137 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/lz/modules/app/dto/ApprovalDto.java diff --git a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java index 55c07741..df3820e9 100644 --- a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java +++ b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java @@ -2,6 +2,7 @@ package com.lz.modules.app.controller; import com.lz.common.emun.WorkMsgTypeEnum; import com.lz.common.utils.*; +import com.lz.modules.app.dto.ApprovalDto; import com.lz.modules.app.dto.DepartmentsDto; import com.lz.modules.app.dto.StaffDepartmentDto; import com.lz.modules.app.entity.DepartmentsStaffRelateEntity; @@ -17,6 +18,7 @@ import com.lz.modules.flow.entity.RecordAuth; import com.lz.modules.flow.entity.RecordFile; import com.lz.modules.flow.entity.StaffRole; import com.lz.modules.flow.model.Auth; +import com.lz.modules.flow.model.ResultRecordDto; import com.lz.modules.flow.req.ResultDetailReq; import com.lz.modules.flow.service.FlowRecordService; import com.lz.modules.flow.service.RecordAuthService; @@ -645,6 +647,19 @@ public class ResultRecordController extends AbstractController { + /** + * 删除 + */ + @RequestMapping("/new/approval") + public R approval(ApprovalDto approvalDto) { + return resultRecordService.newApproval(approvalDto); + + } + + + + + diff --git a/src/main/java/com/lz/modules/app/controller/TestController.java b/src/main/java/com/lz/modules/app/controller/TestController.java index c175c875..33210f66 100644 --- a/src/main/java/com/lz/modules/app/controller/TestController.java +++ b/src/main/java/com/lz/modules/app/controller/TestController.java @@ -257,7 +257,7 @@ public class TestController { } } - // http://localhost:8080/lz_management/test/resultrecord?resultRecordId=157 + // http://localhost:8080/lz_management/test/resultrecord?resultRecordId=215 @RequestMapping("/test/resultrecord") public void resultRecorcd(Long resultRecordId) throws Exception{ R r = resultRecordService.initFlowRecord(resultRecordId); diff --git a/src/main/java/com/lz/modules/app/dto/ApprovalDto.java b/src/main/java/com/lz/modules/app/dto/ApprovalDto.java new file mode 100644 index 00000000..99445590 --- /dev/null +++ b/src/main/java/com/lz/modules/app/dto/ApprovalDto.java @@ -0,0 +1,10 @@ +package com.lz.modules.app.dto; + +import lombok.Data; + +@Data +public class ApprovalDto { + private Long resultRecordId; + private Integer status; //1 提交审批,审批通过,2 撤回,3 催办,5 驳回,6 申述,7 流程终止 + private Long loginUserId; +} diff --git a/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java b/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java index 6a0f42e1..c6b13553 100644 --- a/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java @@ -59,4 +59,7 @@ public interface FlowRecordMapper extends BaseMapper { List selectFinishTasksByApprovalStaffId(@Param("approvalStaffId") Long approvalStaffId, @Param("page") IPage page); void insertFlowRecords(@Param("flowRecords") List flowRecords); + + + List selectFlowRecordByRecordIdStatus(@Param("resultRecordId") Long resultRecordId, @Param("status") Integer status); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/FlowRecordService.java b/src/main/java/com/lz/modules/flow/service/FlowRecordService.java index 7317a054..16aeecc4 100644 --- a/src/main/java/com/lz/modules/flow/service/FlowRecordService.java +++ b/src/main/java/com/lz/modules/flow/service/FlowRecordService.java @@ -59,4 +59,6 @@ public interface FlowRecordService extends IService { PageUtils selectTaskListByApprovalStaffId(AssessTaskReq req, Long approvalStaffId); void insertFlowRecords(List flowRecords); + + List selectFlowRecordByRecordIdStatus(Long resultRecordId,Integer status); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java index f655c58c..56b0e944 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java @@ -163,4 +163,9 @@ public class FlowRecordServiceImpl extends ServiceImpl flowRecords) { flowRecordMapper.insertFlowRecords(flowRecords); } + + @Override + public List selectFlowRecordByRecordIdStatus(Long resultRecordId,Integer status) { + return flowRecordMapper.selectFlowRecordByRecordIdStatus(resultRecordId,status); + } } diff --git a/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java b/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java index b1ce27a8..b22edb06 100644 --- a/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java +++ b/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java @@ -3,6 +3,7 @@ package com.lz.modules.sys.service.app; import com.baomidou.mybatisplus.extension.service.IService; import com.lz.common.emun.WorkMsgTypeEnum; import com.lz.common.utils.R; +import com.lz.modules.app.dto.ApprovalDto; import com.lz.modules.app.dto.GraphicsStatisticalDto; import com.lz.modules.app.entity.DepartmentsEntity; import com.lz.modules.app.entity.DepartmentsStaffRelateEntity; @@ -108,4 +109,6 @@ public interface ResultRecordService extends IService { void batchDeleteByStaffIds(List staffIds); R initFlowRecord(Long resultRecordId); + + R newApproval(ApprovalDto approvalDto); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java b/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java index 356d9426..a50c7c75 100644 --- a/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java +++ b/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java @@ -7,6 +7,7 @@ import com.lz.common.emun.WorkMsgTypeEnum; import com.lz.common.utils.*; import com.lz.modules.app.dao.DepartmentsDao; import com.lz.modules.app.dao.DepartmentsStaffRelateDao; +import com.lz.modules.app.dto.ApprovalDto; import com.lz.modules.app.dto.EmployeesDto; import com.lz.modules.app.dto.GraphicsStatisticalDto; import com.lz.modules.app.entity.DepartmentsEntity; @@ -805,6 +806,94 @@ public class ResultRecordServiceImpl extends ServiceImpl flowRecords = flowRecordService.selectFlowRecordByRecordId(approvalDto.getResultRecordId()); + ResultRecord resultRecord = resultRecordMapper.selectResultRecordById(approvalDto.getResultRecordId()); + FlowRecord currentFlowRecord = null; + for(FlowRecord flowRecord: flowRecords){ + if(flowRecord.getStatus().equals(FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus())){ + log.info("flowRecordId:" + flowRecord.getId() + "更新为流程己走"); + flowRecord.setStatus(FlowRecordStatusEnums.FINISHED_STATUS.getStatus()); + flowRecordService.updateFlowRecordById(flowRecord); + } else if (flowRecord.getStatus().equals(FlowRecordStatusEnums.SKIP_STATUS.getStatus())){ + continue; + } else if (flowRecord.getStatus().equals(FlowRecordStatusEnums.UN_TO_STATUS.getStatus())){ + flowRecord.setStatus(FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus()); + log.info("flowRecordId:" + flowRecord.getId() + "更新为正在执行"); + currentFlowRecord = flowRecord; + flowRecordService.updateFlowRecordById(flowRecord); + break; + } + } + + resultRecord.setFlowStaffIdRole(currentFlowRecord.getFlowStaffIdRole()); + resultRecord.setCurrentApprovalStaffId(currentFlowRecord.getApprovalStaffId()); + resultRecord.setCurrentApprovalStaffName(currentFlowRecord.getApprovalStaffName()); + resultRecordService.updateResultRecordById(resultRecord); + return R.ok(); + } + + private R newReject(ApprovalDto approvalDto) { + List flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(approvalDto.getResultRecordId(),2); + if(flowRecords !=null && flowRecords.size() > 0 ){ + FlowRecord currentFlowRecord = flowRecords.get(0); + for(FlowRecord flowRecord : flowRecords){ + flowRecord.setStatus(0); + flowRecordService.updateFlowRecordById(flowRecord); + } + ResultRecord resultRecord = resultRecordMapper.selectResultRecordById(approvalDto.getResultRecordId()); + resultRecord.setCurrentApprovalStaffId(currentFlowRecord.getApprovalStaffId()); + resultRecord.setCurrentApprovalStaffName(currentFlowRecord.getApprovalStaffName()); + resultRecord.setFlowStaffIdRole(currentFlowRecord.getFlowStaffIdRole()); + resultRecordService.updateResultRecordById(resultRecord); + } + return R.ok(); + } + + private R urge(ApprovalDto approvalDto) { + ResultRecord resultRecord = resultRecordMapper.selectResultRecordById(approvalDto.getResultRecordId()); + if(!resultRecord.getCurrentApprovalStaffId().equals(approvalDto.getLoginUserId())){ + log.info("催办" + resultRecord.getCurrentApprovalStaffId()); + } + return R.ok(); + } + + + private R stop(ApprovalDto approvalDto) { + + return R.ok(); + } + + private R explain(ApprovalDto approvalDto) { + + return R.ok(); + } + + + + public StaffEntity getDepartmentStaff(Map map, int level) { for (int i = 1; i < 6; i++) { String deparment = map.get("dd" + i ); diff --git a/src/main/resources/mapper/flow/FlowRecordMapper.xml b/src/main/resources/mapper/flow/FlowRecordMapper.xml index 5dab9091..fc67c2dc 100644 --- a/src/main/resources/mapper/flow/FlowRecordMapper.xml +++ b/src/main/resources/mapper/flow/FlowRecordMapper.xml @@ -222,7 +222,6 @@ order by r.gmt_modified desc - insert into lz_flow_record( department_level, @@ -261,5 +260,14 @@ + + + + + + + From 7044bebf95672585e2496ae866b02f466ad1fc9f Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Mon, 26 Oct 2020 15:54:51 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/lz/modules/flow/service/FlowService.java | 3 +++ .../modules/flow/service/impl/FlowServiceImpl.java | 12 ++++++++++++ .../service/app/impl/ResultRecordServiceImpl.java | 13 +++++++++++++ 3 files changed, 28 insertions(+) diff --git a/src/main/java/com/lz/modules/flow/service/FlowService.java b/src/main/java/com/lz/modules/flow/service/FlowService.java index 80a5a1f0..f01cc681 100644 --- a/src/main/java/com/lz/modules/flow/service/FlowService.java +++ b/src/main/java/com/lz/modules/flow/service/FlowService.java @@ -2,6 +2,7 @@ package com.lz.modules.flow.service; import com.baomidou.mybatisplus.extension.service.IService; import com.lz.modules.flow.entity.Flow; +import com.lz.modules.flow.entity.FlowChart; import java.util.List; @@ -33,4 +34,6 @@ public interface FlowService extends IService { List selectByFlowId(Long flowId); + + FlowChart selectFlowChartByChartId(Long flowId); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/impl/FlowServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/FlowServiceImpl.java index fe6a4aec..57c36e07 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/FlowServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/FlowServiceImpl.java @@ -3,6 +3,8 @@ package com.lz.modules.flow.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.lz.modules.flow.dao.FlowMapper; import com.lz.modules.flow.entity.Flow; +import com.lz.modules.flow.entity.FlowChart; +import com.lz.modules.flow.service.FlowChartService; import com.lz.modules.flow.service.FlowService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -26,6 +28,9 @@ public class FlowServiceImpl extends ServiceImpl implements Fl private FlowMapper flowMapper; + @Autowired + private FlowChartService flowChartService; + @Override public Flow selectFlowById(Long id){ @@ -65,5 +70,12 @@ public class FlowServiceImpl extends ServiceImpl implements Fl return flowMapper.selectByFlowId(flowId); } + @Override + public FlowChart selectFlowChartByChartId(Long flowId) { + Flow flow = flowMapper.selectFlowById(flowId); + FlowChart flowChart = flowChartService.selectFlowChartById(flow.getChartId()); + return flowChart; + } + } diff --git a/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java b/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java index 7fb4fd37..9e6c23b0 100644 --- a/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java +++ b/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java @@ -121,6 +121,9 @@ public class ResultRecordServiceImpl extends ServiceImpl Date: Mon, 26 Oct 2020 16:01:20 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/lz/modules/flow/dao/FlowMapper.java | 2 +- src/main/java/com/lz/modules/flow/service/FlowService.java | 2 +- .../com/lz/modules/flow/service/impl/FlowServiceImpl.java | 4 ++-- .../sys/service/app/impl/ResultDetailServiceImpl.java | 2 +- .../sys/service/app/impl/ResultRecordServiceImpl.java | 5 ++--- src/main/resources/mapper/flow/FlowMapper.xml | 2 +- 6 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/lz/modules/flow/dao/FlowMapper.java b/src/main/java/com/lz/modules/flow/dao/FlowMapper.java index 5889418e..35eb72ef 100644 --- a/src/main/java/com/lz/modules/flow/dao/FlowMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/FlowMapper.java @@ -33,5 +33,5 @@ public interface FlowMapper extends BaseMapper { int deleteFlowById(@Param("id")Long id); - List selectByFlowId(@Param("flowId") Long flowId); + List selectByFlowId(@Param("flowId") Long flowId, @Param("startId") Long startId); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/FlowService.java b/src/main/java/com/lz/modules/flow/service/FlowService.java index f01cc681..3e96a946 100644 --- a/src/main/java/com/lz/modules/flow/service/FlowService.java +++ b/src/main/java/com/lz/modules/flow/service/FlowService.java @@ -33,7 +33,7 @@ public interface FlowService extends IService { int deleteFlowById(Long id); - List selectByFlowId(Long flowId); + List selectByFlowId(Long flowId,Long startId); FlowChart selectFlowChartByChartId(Long flowId); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/impl/FlowServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/FlowServiceImpl.java index 57c36e07..4c6a11b8 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/FlowServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/FlowServiceImpl.java @@ -66,8 +66,8 @@ public class FlowServiceImpl extends ServiceImpl implements Fl } @Override - public List selectByFlowId(Long flowId) { - return flowMapper.selectByFlowId(flowId); + public List selectByFlowId(Long flowId,Long startId) { + return flowMapper.selectByFlowId(flowId,startId); } @Override diff --git a/src/main/java/com/lz/modules/sys/service/app/impl/ResultDetailServiceImpl.java b/src/main/java/com/lz/modules/sys/service/app/impl/ResultDetailServiceImpl.java index 5c1dfe64..49998998 100644 --- a/src/main/java/com/lz/modules/sys/service/app/impl/ResultDetailServiceImpl.java +++ b/src/main/java/com/lz/modules/sys/service/app/impl/ResultDetailServiceImpl.java @@ -245,7 +245,7 @@ public class ResultDetailServiceImpl extends ServiceImpl staffEntityMap = list.stream().collect(Collectors.toMap(FlowDepartment::getDepartmentLevel, p -> p)); Long flowId = flowInfo.getFirst(); - List flows = flowService.selectByFlowId(flowId); + List flows = flowService.selectByFlowId(flowId,0l); int flowIndex = lastFlowRecord != null ? lastFlowRecord.getFlowIndex() + 1 : 1; log.info("flowIndex = " + flowIndex); diff --git a/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java b/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java index 9e6c23b0..4cddc7c0 100644 --- a/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java +++ b/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java @@ -465,7 +465,7 @@ public class ResultRecordServiceImpl extends ServiceImpl flows = flowService.selectByFlowId(flowId); + List flows = flowService.selectByFlowId(flowId,0l); FlowRecord lastFlowRecord = flowRecordService.selectLastFlowRecordByRecordId(resultRecordId); FlowRecord notFlowRecord = flowRecordService.selectNotApprovalStaffIdFlowRecords(resultRecord.getId()); if (notFlowRecord != null) { @@ -757,7 +757,7 @@ public class ResultRecordServiceImpl extends ServiceImpl flows = flowService.selectByFlowId(resultRecord.getEvaluationId()); + List flows = flowService.selectByFlowId(resultRecord.getEvaluationId(),resultRecord.getStartId()); List flowIds = new ArrayList<>(); for(Flow flow:flows){ flowIds.add(flow.getId()); @@ -786,7 +786,6 @@ public class ResultRecordServiceImpl extends ServiceImpl