Merge branch 'version_performance_2.0' of http://gitlab.ldxinyong.com/enterpriseManagement/lz_management into version_performance_2.0

This commit is contained in:
wulin 2020-10-27 16:08:38 +08:00
commit 64efab57b9
17 changed files with 351 additions and 166 deletions

View File

@ -709,7 +709,9 @@ public class ResultRecordController extends AbstractController {
/**
* 删除
*/
// http://localhost:8080/lz_management/user/lzresultrecord/new/approval?resultRecordId=215&status=1&loginUserId=825&comment=xxx&menuName=bbb
// 审批http://localhost:8080/lz_management/user/lzresultrecord/new/approval?resultRecordId=215&status=1&loginUserId=825&comment=xxx&menuName=bbb
// 跳过http://localhost:8080/lz_management/user/lzresultrecord/new/approval?resultRecordId=215&status=4&menuName=bbb&flowRecordId=360
// 转交http://localhost:8080/lz_management/user/lzresultrecord/new/approval?resultRecordId=215&status=8&menuName=bbb&flowRecordId=360&transferStaffId=294
@RequestMapping("/new/approval")
public R approval(ApprovalDto approvalDto) {
try {

View File

@ -10,5 +10,5 @@ public class ApprovalDto {
private String menuName; //按钮名称
private String comment;
private Long transferStaffId; // 转交员工 id
private Long currentStaffId; //当前用户 id
private Long flowRecordId;// 流程 id
}

View File

@ -6,4 +6,5 @@ import lombok.Data;
public class FlowDetailResp {
private Long currentStaffId;
private String staffName;
private Long flowRecordId;
}

View File

@ -40,4 +40,7 @@ public interface EvaluationGroupMapper extends BaseMapper<EvaluationGroup> {
List<EvaluationGroup> selectEvaluationGroupByIds(@Param("ids") List<Long> ids);
EvaluationGroup selectEvaluationGroupByName(@Param("name") String name);
void deleteByIds(@Param("ids") List<Long> ids);
}

View File

@ -46,4 +46,6 @@ public interface EvaluationGroupService extends IService<EvaluationGroup> {
EvaluationGroup selectEvaluationGroupByName(String name);
//获取考核组里面所有参与的人员信息去除重复去除离职
List<StaffSimpleInfo> selectAllStaffSimpleInfoByGroupId(EvaluationGroup evaluationGroup);
void deleteByIds(List<Long> ids);
}

View File

@ -1,7 +1,9 @@
package com.lz.modules.flow.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lz.modules.app.dto.ApprovalDto;
import com.lz.modules.flow.entity.FlowChange;
import com.lz.modules.flow.entity.FlowRecord;
/**
* <p>
@ -30,4 +32,5 @@ public interface FlowChangeService extends IService<FlowChange> {
int deleteFlowChangeById(Long id);
void saveChange(ApprovalDto approvalDto, FlowRecord flowRecord, int i);
}

View File

@ -213,4 +213,10 @@ public class EvaluationGroupServiceImpl extends ServiceImpl<EvaluationGroupMappe
return staffSimpleInfos;
}
@Override
public void deleteByIds(List<Long> ids) {
evaluationGroupMapper.deleteByIds(ids);
}
}

View File

@ -1,9 +1,13 @@
package com.lz.modules.flow.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lz.modules.app.dto.ApprovalDto;
import com.lz.modules.flow.dao.FlowChangeMapper;
import com.lz.modules.flow.entity.FlowChange;
import com.lz.modules.flow.entity.FlowRecord;
import com.lz.modules.flow.service.FlowChangeService;
import com.lz.modules.sys.entity.app.ResultRecord;
import com.lz.modules.sys.service.app.ResultRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -24,6 +28,9 @@ public class FlowChangeServiceImpl extends ServiceImpl<FlowChangeMapper, FlowCha
private FlowChangeMapper flowChangeMapper;
@Autowired
private ResultRecordService resultRecordService;
@Override
public FlowChange selectFlowChangeById(Long id){
@ -58,6 +65,19 @@ public class FlowChangeServiceImpl extends ServiceImpl<FlowChangeMapper, FlowCha
return flowChangeMapper.deleteFlowChangeById(id);
}
@Override
public void saveChange(ApprovalDto approvalDto, FlowRecord flowRecord, int type) {
FlowChange flowChange = new FlowChange();
flowChange.setApprovalId(flowRecord.getApprovalStaffId());
flowChange.setToApprovalId(approvalDto.getTransferStaffId());
flowChange.setOptId(approvalDto.getLoginUserId());
flowChange.setFlowRecordId(approvalDto.getFlowRecordId());
flowChange.setFlowRecordId(flowRecord.getRecordId());
ResultRecord resultRecord = resultRecordService.selectResultRecordById(flowRecord.getRecordId());
flowChange.setStaffId(resultRecord.getStaffId());
flowChange.setType(type);
flowChangeMapper.insertFlowChange(flowChange);
}
}

View File

@ -4,6 +4,7 @@ import com.lz.common.utils.PageUtils;
import com.lz.common.utils.R;
import com.lz.modules.flow.dao.FlowStartMapper;
import com.lz.modules.flow.entity.FlowStart;
import com.lz.modules.performance.req.AssessChangeReq;
import com.lz.modules.performance.req.AssessListReq;
import com.lz.modules.performance.req.AssessDetailReq;
import com.lz.modules.performance.res.AssessManagerDetailRes;
@ -75,6 +76,29 @@ public class AssessManagerController {
}
@PostMapping("assess/manager/change")
@ApiOperation("考核管理组管理变更")
@ApiResponses({@ApiResponse(code = 200,message = "成功")})
public R assessChange(@RequestBody AssessChangeReq req){
if(req.getStartId()==null){
return R.error("考核id不能为空");
}
if(req.getChangeType()==null){
return R.error("变动类型无效");
}
FlowStart flowStart = flowStartMapper.selectFlowStartById(req.getStartId());
if(flowStart == null){
return R.error("暂无此考核组信息");
}
flowStart.getGroupIds();
assessManagerService.assessChange(req);
return R.ok();
}
@GetMapping("assess/manager/delete")
@ApiOperation("删除考核任务")

View File

@ -0,0 +1,26 @@
package com.lz.modules.performance.req;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author: djc
* @Desc:
* @Date: 2020/10/27 14:49
*/
@Data
@ApiModel("考核管理变动实体")
public class AssessChangeReq {
@ApiModelProperty(value = "考核id",name = "startId")
private Long startId;
@ApiModelProperty(value = "变更类型 0 :添加 1删除",name = "changeType")
private Integer changeType;
@ApiModelProperty(value = "变动人员ids",name = "staffIds")
private List<String> staffIds;
}

View File

@ -17,8 +17,8 @@ import java.util.List;
@ApiModel("获取考核详情实体")
public class AssessDetailReq extends BasePage{
//考勤组id
@ApiModelProperty(value = "考勤组ids",name = "evaluationIds")
private List<Long> evaluationIds;
@ApiModelProperty(value = "考勤组ids ,逗号隔开",name = "evaluationIds")
private String evaluationIds;
//发起考核的id
@ApiModelProperty(value = "发起考核的id",name = "startId")
private Long startId;
@ -26,8 +26,8 @@ public class AssessDetailReq extends BasePage{
@ApiModelProperty(value = "员工名称",name = "staffName")
private String staffName;
//人员id数组
@ApiModelProperty(value = "人员id数组",name = "staffIds")
private List<Long> staffIds;
@ApiModelProperty(value = "人员ids,逗号隔开",name = "staffIds")
private String staffIds;
//状态 确认 执行 结果录入
@ApiModelProperty(value = "状态 确认 执行 结果录入。。。",name = "flowProcess")
private Integer flowProcess;

View File

@ -2,6 +2,7 @@ package com.lz.modules.performance.service;
import com.lz.common.utils.PageUtils;
import com.lz.modules.flow.entity.FlowStart;
import com.lz.modules.performance.req.AssessChangeReq;
import com.lz.modules.performance.req.AssessDetailReq;
import com.lz.modules.performance.req.AssessListReq;
@ -18,4 +19,6 @@ public interface AssessManagerService {
PageUtils assessDetail(AssessDetailReq req);
void accessDelete(FlowStart flowStart);
void assessChange(AssessChangeReq req);
}

View File

@ -8,6 +8,7 @@ import com.lz.modules.flow.entity.EvaluationGroup;
import com.lz.modules.flow.entity.FlowStart;
import com.lz.modules.flow.service.EvaluationGroupService;
import com.lz.modules.flow.service.EvaluationStartStaffService;
import com.lz.modules.performance.req.AssessChangeReq;
import com.lz.modules.performance.req.AssessDetailReq;
import com.lz.modules.performance.req.AssessListReq;
import com.lz.modules.performance.res.AssessManagerDetailRes;
@ -21,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@ -83,7 +85,28 @@ public class AssessManagerServiceImpl implements AssessManagerService {
public void accessDelete(FlowStart flowStart) {
flowStart.setIsDelete(1);
flowStartMapper.updateFlowStartById(flowStart);
String groupIds = flowStart.getGroupIds();
if(StringUtil.isNotBlank(groupIds)){
String[] split = groupIds.split(",");
List<String> ids = Arrays.asList(split);
List<Long> collect = ids.stream().map(s -> Long.valueOf(s)).collect(Collectors.toList());
evaluationGroupService.deleteByIds(collect);
}
resultRecordMapper.batchDeleteByStartId(flowStart.getId());
return ;
}
@Override
public void assessChange(AssessChangeReq req) {
if(req.getChangeType() == 0){
}
if(req.getChangeType() == 1){
}
}
}

View File

@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Maps;
import com.lz.common.utils.PageUtils;
import com.lz.common.utils.StringUtil;
import com.lz.modules.app.entity.DepartmentsEntity;
import com.lz.modules.app.entity.DepartmentsStaffRelateEntity;
import com.lz.modules.app.service.DepartmentsService;
import com.lz.modules.app.service.DepartmentsStaffRelateService;
import com.lz.modules.app.service.StaffService;
import com.lz.modules.flow.dao.FlowStartMapper;
@ -50,6 +52,8 @@ public class ChartResultServiceImpl implements ChartResultService {
private FlowStartService flowStartService;
@Autowired
private FlowStartMapper flowStartMapper;
@Autowired
private DepartmentsService departmentsService;
@Override
@ -78,11 +82,18 @@ public class ChartResultServiceImpl implements ChartResultService {
}
data.add(res);
List<String> strings = evaluationGroupService.selectAllStaffIdsByGroupId(3L);
List<ChartStatistical> depstaff = this.countDepartmentAndStaffNum(strings);
FlowStart flowStart = flowStartMapper.selectFlowStartById(startId);
String[] split = flowStart.getGroupIds().split(",");
Set<String> staffIds = new HashSet<>();
for(String s:split){
List<String> strings = evaluationGroupService.selectAllStaffIdsByGroupId(Long.valueOf(s));
staffIds.addAll(strings);
}
List<String> all = new ArrayList<>(staffIds);
List<ChartStatistical> depstaff = this.countDepartmentAndStaffNum(all);
res = new ChartStatisticalRes();
res.setType(2);
res.setStatisticals(depstaff);
res.setStatisticals(buildDepStaffs(depstaff));
res.setDefaultTime(defaultTime);
if(StringUtil.isNotBlank(defaultTime)){
res.setDefaultId(startId);
@ -191,4 +202,15 @@ public class ChartResultServiceImpl implements ChartResultService {
}
return data;
}
private List<ChartStatistical> buildDepStaffs(List<ChartStatistical> depStaffs){
depStaffs.stream().forEach(chartStatistical -> {
String desc = chartStatistical.getDesc();
DepartmentsEntity departmentsEntity = departmentsService.selectByDepartmentId(desc);
if(departmentsEntity!=null && StringUtil.isNotBlank(departmentsEntity.getDepartmentName())){
chartStatistical.setDesc(departmentsEntity.getDepartmentName());
}
});
return depStaffs;
}
}

View File

@ -130,6 +130,9 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
@Autowired
private FlowChartService flowChartService;
@Autowired
private FlowChangeService flowChangeService;
@Value("${dingtalk.appid}")
private String appid;
@ -838,11 +841,16 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
switch (approvalDto.getStatus()) {
case 1: //1 提交审批,审批通过
return newSubmit(approvalDto);
return newSubmit(approvalDto,null);
case 2: //2 撤回
return reSubmit(approvalDto);
case 3: //3 催办
return urge(approvalDto);
case 4: //4 跳过
if(approvalDto.getFlowRecordId() == null){
throw new RRException("currentStaffId 不能为空");
}
return skip(approvalDto);
case 5: //5 驳回
return newReject(approvalDto);
case 6: //6 申述
@ -851,7 +859,7 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
if (approvalDto.getTransferStaffId() == null) {
throw new RRException("transferStaffId 不能为空");
}
if(approvalDto.getCurrentStaffId() == null){
if(approvalDto.getFlowRecordId() == null){
throw new RRException("currentStaffId 不能为空");
}
return transfer(approvalDto);
@ -861,6 +869,180 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
return null;
}
private R skip(ApprovalDto approvalDto) {
FlowRecord flowRecord = flowRecordService.selectFlowRecordById(approvalDto.getFlowRecordId());
if(flowRecord.getStatus().equals(FlowRecordStatusEnums.FINISHED_STATUS.getStatus())
|| flowRecord.getStatus().equals(FlowRecordStatusEnums.OTHER_APPROVAL.getStatus())){
return R.ok("流程己经走了,无法跳过 " );
}
if(flowRecord.getStatus().equals(FlowRecordStatusEnums.UN_TO_STATUS.getStatus())){ // 如果当前没有审批
flowRecord.setStatus(FlowRecordStatusEnums.SKIP_STATUS.getStatus());
flowRecordService.updateFlowRecordById(flowRecord);
}else if (flowRecord.getStatus().equals(FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus())){ //如果当前正在审批中
approvalDto.setLoginUserId(flowRecord.getApprovalStaffId());
newSubmit(approvalDto,FlowRecordStatusEnums.SKIP_STATUS.getStatus());
}
flowChangeService.saveChange(approvalDto, flowRecord, 0);
return R.ok("恭喜您,跳过成功。");
}
private R transfer(ApprovalDto approvalDto) {
FlowRecord flowRecord = flowRecordService.selectFlowRecordById(approvalDto.getFlowRecordId());
flowChangeService.saveChange(approvalDto, flowRecord, 1);
StaffEntity staffEntity = staffService.selectStaffById(approvalDto.getTransferStaffId());
flowRecord.setApprovalStaffId(staffEntity.getId());
flowRecord.setApprovalStaffName(staffEntity.getName());
flowRecordService.updateFlowRecordById(flowRecord);
return R.ok("转交成功");
}
private R reSubmit(ApprovalDto approvalDto) {
List<FlowRecord> flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(approvalDto.getResultRecordId(), 1);
if(flowRecords!=null && flowRecords.size()>0){
return R.error("领导己经审批,不能撤回");
}
return newReject(approvalDto);
}
public void comment(ApprovalDto approvalDto, FlowChart flowChart) {
StaffEntity staffEntity = staffService.selectStaffById(approvalDto.getLoginUserId());
if (staffEntity != null) {
ResultComment resultComment = new ResultComment();
resultComment.setComment(approvalDto.getComment());
resultComment.setStaffName(staffEntity.getName());
resultComment.setStaffId(staffEntity.getId());
resultComment.setRecordId(approvalDto.getResultRecordId());
resultComment.setOptDesc(approvalDto.getMenuName() + flowChart.getName());
resultCommentService.insertResultComment(resultComment);
}
}
private R newSubmit(ApprovalDto approvalDto,Integer finishedStatus) {
ResultRecord resultRecord = resultRecordMapper.selectResultRecordById(approvalDto.getResultRecordId());
if(approvalDto.getLoginUserId() == null){
approvalDto.setLoginUserId(resultRecord.getCurrentApprovalStaffId());
}
List<FlowRecord> flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(approvalDto.getResultRecordId(),2);
if(CollectionUtils.isEmpty(flowRecords)){
log.info("流程己经结束");
return R.ok("流程己经结束");
}
if(finishedStatus == null){
finishedStatus = FlowRecordStatusEnums.FINISHED_STATUS.getStatus();
}
FlowRecord preFlowRecord = flowRecords.get(0);
int stepType = preFlowRecord.getType();
if (flowRecords.size() > 1) {
if (stepType == 0 || stepType == 1) { //表示只要一个人通过就可以了
for (FlowRecord flowRecord : flowRecords) {
if (flowRecord.getApprovalStaffId().equals(approvalDto.getLoginUserId())) {
flowRecord.setStatus(finishedStatus);//当前审批己经完成
} else {
flowRecord.setStatus(FlowRecordStatusEnums.OTHER_APPROVAL.getStatus()); //其他审批
}
flowRecordService.updateFlowRecordById(flowRecord);
}
} else {
boolean flag = false;
FlowRecord currentFlowRecord = null;
for (FlowRecord flowRecord : flowRecords) {
if (!flowRecord.getApprovalStaffId().equals(approvalDto.getLoginUserId())
&& flowRecord.getStatus().equals(FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus())) {
flag = true;
} else {
currentFlowRecord = flowRecord;//当前流程 id
}
}
currentFlowRecord.setStatus(finishedStatus);//当前审批己经完成
flowRecordService.updateFlowRecordById(currentFlowRecord);
if (flag) { //流程未向下走
return R.ok("恭喜您,审批成功");
}
}
} else {
preFlowRecord.setStatus(finishedStatus);//流程己走
flowRecordService.updateFlowRecordById(preFlowRecord);
}
// 找到当前下一个节点为0的 flowIndex
FlowRecord nextFlowRecord = flowRecordService.selectFlowRecordByRecordIdMinIdStatus(approvalDto.getResultRecordId(),preFlowRecord.getId(), 0);
if(nextFlowRecord == null){
log.info("流程己经结束2");
return R.ok("流程己经结束");
}
List<FlowRecord> nextFlowRecords = flowRecordService.selectFlowRecordByRecordIdStatusFlowIndex(approvalDto.getResultRecordId(), 0, nextFlowRecord.getFlowIndex());
if (CollectionUtils.isEmpty(nextFlowRecords)) {
log.info("流程己经结束3");
return R.ok("流程己经结束");
}
FlowRecord currentFlowRecord = nextFlowRecords.get(0);
for (FlowRecord flowRecord : nextFlowRecords) {
flowRecord.setStatus(FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus());
flowRecordService.updateFlowRecordById(flowRecord);
}
FlowChart currentFlowChart = flowService.selectFlowChartByChartId(currentFlowRecord.getFlowId());
resultRecord.setFlowProcess(currentFlowChart.getFlowProcess());
resultRecord.setFlowStaffIdRole(nextFlowRecords.size() == 1 ? currentFlowRecord.getFlowStaffIdRole() : null);
resultRecord.setCurrentApprovalStaffId(nextFlowRecords.size() == 1 ? currentFlowRecord.getApprovalStaffId() : null);
resultRecord.setCurrentApprovalStaffName(nextFlowRecords.size() == 1 ? currentFlowRecord.getApprovalStaffName() : null);
resultRecordService.updateCoverResultRecordById(resultRecord);
return R.ok();
}
private R newReject(ApprovalDto approvalDto) {
List<FlowRecord> currentflowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(approvalDto.getResultRecordId(),FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus());
if(currentflowRecords !=null && currentflowRecords.size() > 0 ){
FlowRecord currentFlowRecord = currentflowRecords.get(0);
// 更新当前数据
// 获取当前审批结点组
List<FlowRecord> currentFlowRecords = flowRecordService.selectFlowRecordByRecordIdFlowIndex(approvalDto.getResultRecordId(), currentFlowRecord.getFlowIndex());
for(FlowRecord flowRecord : currentFlowRecords){
flowRecord.setStatus(FlowRecordStatusEnums.UN_TO_STATUS.getStatus());
flowRecordService.updateFlowRecordById(flowRecord);
}
// 恢复之前数据
// 获取之前审批过的结点
FlowRecord preFlowRecord = flowRecordService.selectPreFlowRecordByRecordIdMaxIdStatus(approvalDto.getResultRecordId(),
currentFlowRecord.getId(),FlowRecordStatusEnums.FINISHED_STATUS.getStatus());
if(preFlowRecord != null) {
// 获取之前审批结点组
List<FlowRecord> flowRecords = flowRecordService.selectFlowRecordByRecordIdFlowIndex(approvalDto.getResultRecordId(), preFlowRecord.getFlowIndex());
for (FlowRecord flowRecord : flowRecords) {
flowRecord.setStatus(FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus());
flowRecordService.updateFlowRecordById(flowRecord);
}
FlowRecord lastFlowRecord = flowRecords.get(0);
ResultRecord resultRecord = resultRecordMapper.selectResultRecordById(approvalDto.getResultRecordId());
resultRecord.setCurrentApprovalStaffId(flowRecords.size() == 1 ? lastFlowRecord.getApprovalStaffId():null);
resultRecord.setCurrentApprovalStaffName(flowRecords.size() == 1 ?lastFlowRecord.getApprovalStaffName():null);
resultRecord.setFlowStaffIdRole(flowRecords.size() == 1 ?lastFlowRecord.getFlowStaffIdRole():null);
FlowChart flowChart = flowService.selectFlowChartByChartId(lastFlowRecord.getFlowId());
resultRecord.setFlowProcess(flowChart.getFlowProcess());
resultRecordService.updateCoverResultRecordById(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());
StaffEntity mySelf = staffService.selectStaffById(resultRecord.getStaffId());
StaffEntity toSelf = staffService.selectStaffById(resultRecord.getCurrentApprovalStaffId());
resultRecordService.sendWorkMSG(mySelf, toSelf, WorkMsgTypeEnum.URGING, 0L, 2);
}
return R.ok();
}
private R explain(ApprovalDto approvalDto) {
return R.ok();
}
@Override
public R newResultRecordList(RecordDetailDto recordDetailDto) {
List<FlowRecord> flowRecords = flowRecordService.selectFlowRecordByResultRecordId(recordDetailDto.getResultRecordId());
@ -937,154 +1119,14 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
return R.ok().put("data", map);
}
public void mySetFlowDetailRespList(List<FlowDetailResp> flowDetailRespList ,FlowRecord flowRecord){
FlowDetailResp flowDetailResp = new FlowDetailResp();
flowDetailResp.setCurrentStaffId(flowRecord.getApprovalStaffId());
flowDetailResp.setStaffName(flowRecord.getApprovalStaffName());
flowDetailResp.setFlowRecordId(flowRecord.getId());
flowDetailRespList.add(flowDetailResp);
}
private R transfer(ApprovalDto approvalDto) {
return null;
}
private R reSubmit(ApprovalDto approvalDto) {
List<FlowRecord> flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(approvalDto.getResultRecordId(), 1);
if(flowRecords!=null && flowRecords.size()>0){
return R.error("领导己经审批,不能撤回");
}
return newReject(approvalDto);
}
public void comment(ApprovalDto approvalDto, FlowChart flowChart) {
StaffEntity staffEntity = staffService.selectStaffById(approvalDto.getLoginUserId());
if (staffEntity != null) {
ResultComment resultComment = new ResultComment();
resultComment.setComment(approvalDto.getComment());
resultComment.setStaffName(staffEntity.getName());
resultComment.setStaffId(staffEntity.getId());
resultComment.setRecordId(approvalDto.getResultRecordId());
resultComment.setOptDesc(approvalDto.getMenuName() + flowChart.getName());
resultCommentService.insertResultComment(resultComment);
}
}
private R newSubmit(ApprovalDto approvalDto) {
ResultRecord resultRecord = resultRecordMapper.selectResultRecordById(approvalDto.getResultRecordId());
if(approvalDto.getLoginUserId() == null){
approvalDto.setLoginUserId(resultRecord.getCurrentApprovalStaffId());
}
List<FlowRecord> flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(approvalDto.getResultRecordId(),2);
if(CollectionUtils.isEmpty(flowRecords)){
log.info("流程己经结束");
return R.ok("流程己经结束");
}
FlowRecord preFlowRecord = flowRecords.get(0);
int stepType = preFlowRecord.getType();
if (flowRecords != null && flowRecords.size() > 0) {
if (stepType == 0 || stepType == 1) { //表示只要一个人通过就可以了
for (FlowRecord flowRecord : flowRecords) {
if (flowRecord.getApprovalStaffId().equals(approvalDto.getLoginUserId())) {
flowRecord.setStatus(FlowRecordStatusEnums.FINISHED_STATUS.getStatus());//当前审批己经完成
} else {
flowRecord.setStatus(FlowRecordStatusEnums.OTHER_APPROVAL.getStatus()); //其他审批
}
flowRecordService.updateFlowRecordById(flowRecord);
}
} else {
boolean flag = false;
FlowRecord currentFlowRecord = null;
for (FlowRecord flowRecord : flowRecords) {
if (!flowRecord.getApprovalStaffId().equals(approvalDto.getLoginUserId())
&& flowRecord.getStatus().equals(FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus())) {
flag = true;
} else {
currentFlowRecord = flowRecord;//当前流程 id
}
}
currentFlowRecord.setStatus(FlowRecordStatusEnums.FINISHED_STATUS.getStatus());//当前审批己经完成
flowRecordService.updateFlowRecordById(currentFlowRecord);
if (flag) { //流程未向下走
return R.ok("审批成功");
}
}
} else {
preFlowRecord.setStatus(FlowRecordStatusEnums.FINISHED_STATUS.getStatus());//流程己走
flowRecordService.updateFlowRecordById(preFlowRecord);
}
// 找到当前下一个节点为0的 flowIndex
FlowRecord nextFlowRecord = flowRecordService.selectFlowRecordByRecordIdMinIdStatus(approvalDto.getResultRecordId(),preFlowRecord.getId(), 0);
List<FlowRecord> nextFlowRecords = flowRecordService.selectFlowRecordByRecordIdStatusFlowIndex(approvalDto.getResultRecordId(), 0, nextFlowRecord.getFlowIndex());
if (CollectionUtils.isEmpty(nextFlowRecords)) {
log.info("流程己经结束2");
return R.ok("流程己经结束");
}
FlowRecord currentFlowRecord = nextFlowRecords.get(0);
for (FlowRecord flowRecord : nextFlowRecords) {
flowRecord.setStatus(FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus());
flowRecordService.updateFlowRecordById(flowRecord);
}
FlowChart currentFlowChart = flowService.selectFlowChartByChartId(currentFlowRecord.getFlowId());
resultRecord.setFlowProcess(currentFlowChart.getFlowProcess());
resultRecord.setFlowStaffIdRole(nextFlowRecords.size() == 1 ? currentFlowRecord.getFlowStaffIdRole() : null);
resultRecord.setCurrentApprovalStaffId(nextFlowRecords.size() == 1 ? currentFlowRecord.getApprovalStaffId() : null);
resultRecord.setCurrentApprovalStaffName(nextFlowRecords.size() == 1 ? currentFlowRecord.getApprovalStaffName() : null);
resultRecordService.updateCoverResultRecordById(resultRecord);
return R.ok();
}
private R newReject(ApprovalDto approvalDto) {
List<FlowRecord> currentflowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(approvalDto.getResultRecordId(),FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus());
if(currentflowRecords !=null && currentflowRecords.size() > 0 ){
FlowRecord currentFlowRecord = currentflowRecords.get(0);
// 更新当前数据
// 获取当前审批结点组
List<FlowRecord> currentFlowRecords = flowRecordService.selectFlowRecordByRecordIdFlowIndex(approvalDto.getResultRecordId(), currentFlowRecord.getFlowIndex());
for(FlowRecord flowRecord : currentFlowRecords){
flowRecord.setStatus(FlowRecordStatusEnums.UN_TO_STATUS.getStatus());
flowRecordService.updateFlowRecordById(flowRecord);
}
// 恢复之前数据
// 获取之前审批过的结点
FlowRecord preFlowRecord = flowRecordService.selectPreFlowRecordByRecordIdMaxIdStatus(approvalDto.getResultRecordId(),
currentFlowRecord.getId(),FlowRecordStatusEnums.FINISHED_STATUS.getStatus());
if(preFlowRecord != null) {
// 获取之前审批结点组
List<FlowRecord> flowRecords = flowRecordService.selectFlowRecordByRecordIdFlowIndex(approvalDto.getResultRecordId(), preFlowRecord.getFlowIndex());
for (FlowRecord flowRecord : flowRecords) {
flowRecord.setStatus(FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus());
flowRecordService.updateFlowRecordById(flowRecord);
}
FlowRecord lastFlowRecord = flowRecords.get(0);
ResultRecord resultRecord = resultRecordMapper.selectResultRecordById(approvalDto.getResultRecordId());
resultRecord.setCurrentApprovalStaffId(flowRecords.size() == 1 ? lastFlowRecord.getApprovalStaffId():null);
resultRecord.setCurrentApprovalStaffName(flowRecords.size() == 1 ?lastFlowRecord.getApprovalStaffName():null);
resultRecord.setFlowStaffIdRole(flowRecords.size() == 1 ?lastFlowRecord.getFlowStaffIdRole():null);
FlowChart flowChart = flowService.selectFlowChartByChartId(lastFlowRecord.getFlowId());
resultRecord.setFlowProcess(flowChart.getFlowProcess());
resultRecordService.updateCoverResultRecordById(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());
StaffEntity mySelf = staffService.selectStaffById(resultRecord.getStaffId());
StaffEntity toSelf = staffService.selectStaffById(resultRecord.getCurrentApprovalStaffId());
resultRecordService.sendWorkMSG(mySelf, toSelf, WorkMsgTypeEnum.URGING, 0L, 2);
}
return R.ok();
}
private R explain(ApprovalDto approvalDto) {
return R.ok();
}
public StaffEntity getDepartmentStaff(Long staffId, int level) {
DepartManagers departManagers = staffService.findLeader( staffId, level);

View File

@ -388,9 +388,9 @@
ON r.start_id = s.start_id and r.staff_id = s.staff_id
where r.is_delete = 0 and s.is_delete = 0
and r.start_id = #{req.startId}
<if test="req.evaluationIds !=null and req.evaluationIds.size()!=0">
<if test="req.evaluationIds !=null and req.evaluationIds.size()!=''">
and r.evaluation_id in(
<foreach collection="req.evaluationIds" item="evaluation_id" separator=",">
<foreach collection="req.evaluationIds.split(',')" item="evaluation_id" open="(" separator="," close=")">
#{evaluation_id}
</foreach>
)
@ -399,11 +399,11 @@
and r.flow_process = #{req.flowProcess}
</if>
<if test="req.staffName !=null and req.staffName!=''">
and r.staff_name = #{req.staffName}
and r.staff_name LIKE CONCAT('%',#{req.staffName},'%')
</if>
<if test="req.staffIds !=null and req.staffIds.size() !=0">
<if test="req.staffIds !=null and req.staffIds.size() !=''">
and r.staff_id in(
<foreach collection="req.staffIds" item="staff_id" separator=",">
<foreach collection="req.staffIds.split(',')" item="staff_id" open="(" separator="," close=")">
#{staff_id}
</foreach>
)
@ -414,22 +414,22 @@
SELECT count(flow_process) num,flow_process as 'desc' from lz_result_record
where is_delete=0
and start_id =#{req.startId}
<if test="req.evaluationIds !=null and req.evaluationIds.size()!=0">
and evaluation_id in(
<foreach collection="req.evaluationIds" item="evaluation_id" separator=",">
<if test="req.evaluationIds !=null and req.evaluationIds.size()!=''">
and r.evaluation_id in(
<foreach collection="req.evaluationIds.split(',')" item="evaluation_id" open="(" separator="," close=")">
#{evaluation_id}
</foreach>
)
</if>
<if test="req.flowProcess !=null">
and flow_process = #{req.flowProcess}
and r.flow_process = #{req.flowProcess}
</if>
<if test="req.staffName !=null and req.staffName!=''">
and staff_name = #{req.staffName}
and r.staff_name LIKE CONCAT('%',#{req.staffName},'%')
</if>
<if test="req.staffIds !=null and req.staffIds.size() !=0">
and staff_id in(
<foreach collection="req.staffIds" item="staff_id" separator=",">
<if test="req.staffIds !=null and req.staffIds.size() !=''">
and r.staff_id in(
<foreach collection="req.staffIds.split(',')" item="staff_id" open="(" separator="," close=")">
#{staff_id}
</foreach>
)

View File

@ -113,5 +113,13 @@
select * from lz_evaluation_group where name=#{name} and is_delete = 0 limit 1
</select>
<update id="deleteByIds">
update lz_evaluation_group set is_delete = 1 where is_delete=0
and id in (
<foreach collection="ids" item="id" separator=",">
#{id}
</foreach>
)
</update>
</mapper>