提交修改

This commit is contained in:
quyixiao 2020-10-27 14:58:14 +08:00
parent 162c01b73b
commit 0836ce27be
2 changed files with 105 additions and 86 deletions

View File

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

View File

@ -838,11 +838,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.getCurrentStaffId() == null){
throw new RRException("currentStaffId 不能为空");
}
return skip(approvalDto);
case 5: //5 驳回
return newReject(approvalDto);
case 6: //6 申述
@ -861,89 +866,13 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
return null;
}
@Override
public R newResultRecordList(RecordDetailDto recordDetailDto) {
List<FlowRecord> flowRecords = flowRecordService.selectFlowRecordByResultRecordId(recordDetailDto.getResultRecordId());
List<FlowRecordResp> flowRecordList = new ArrayList<>();
int flowIndex = -1;
for (FlowRecord flowRecord : flowRecords) {
if (flowRecord.getFlowIndex().equals(flowIndex)) { //表示有重复数据
FlowRecordResp lastResp = flowRecordList.get(flowRecordList.size() - 1);
List<FlowRecord> mulFlowRecord = flowRecordService.selectFlowRecordByRecordIdFlowIndex(recordDetailDto.getResultRecordId(), flowIndex);
FlowRecord fisrt = mulFlowRecord.get(0);
int stepIndex = fisrt.getType();
boolean flag0 = false;
boolean flag1 = false;
boolean flag2 = false;
boolean flag4 = false;
List<FlowDetailResp> flowDetailRespList = lastResp.getFlowDetailRespList();
mySetFlowDetailRespList(flowDetailRespList, flowRecord);
for (FlowRecord mul : mulFlowRecord) {
if (mul.getStatus().equals(FlowRecordStatusEnums.UN_TO_STATUS.getStatus())) {
flag0 = true;
} else if (mul.getStatus().equals(FlowRecordStatusEnums.FINISHED_STATUS.getStatus())) {
flag1 = true;
} else if (mul.getStatus().equals(FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus())) {
flag2 = true;
} else if (mul.getStatus().equals(FlowRecordStatusEnums.SKIP_STATUS.getStatus())) {
flag4 = true;
}
if(mul.getApprovalStaffId().equals(recordDetailDto.getLoginUserId())){
lastResp.setStaffName(mul.getApprovalStaffName());
}
}
if (stepIndex == 0 || stepIndex == 1) { // 依次
if(flag0){
lastResp.setStatus(0);
}else if(flag1){
lastResp.setStatus(1);
}else if(flag2){
lastResp.setStatus(1);
}else if (flag4){
lastResp.setStatus(4);
}
} else { //所有
if(flag0){ //只要有 0 表示当前节点所有的为0
lastResp.setStatus(0);
}else if(flag2){ // 只要有 2 表示所有的结点停留在当前
lastResp.setStatus(1);
}else if(flag1){
lastResp.setStatus(1); // 当前步骤中只存在1和4 那么当前结点肯定通过了
}else if (flag4){
lastResp.setStatus(4); // 当前步骤中所有的结点都跳过了
}
}
continue;
}
FlowRecordResp resp = new FlowRecordResp();
resp.setFlowName(flowRecord.getFlowName());
resp.setStaffName(flowRecord.getApprovalStaffName());
resp.setStatus(flowRecord.getStatus());
List<FlowDetailResp> flowDetailRespList = new ArrayList<>();
mySetFlowDetailRespList(flowDetailRespList,flowRecord);
resp.setFlowDetailRespList(flowDetailRespList);
flowRecordList.add(resp);
flowIndex = flowRecord.getFlowIndex();
}
FlowRecordResp end = new FlowRecordResp();
end.setFlowName("线束");
flowRecordList.add(end);
List<ResultComment> resultCommentList = resultCommentService.selectByRecordId(recordDetailDto.getResultRecordId());
Map<String, Object> map = new HashMap<>();
map.put("flowRecordList", flowRecordList);
map.put("resultCommentList", resultCommentList);
return R.ok().put("data", map);
private R skip(ApprovalDto approvalDto) {
approvalDto.setLoginUserId(approvalDto.getCurrentStaffId());
return newSubmit(approvalDto,FlowRecordStatusEnums.SKIP_STATUS.getStatus());
}
public void mySetFlowDetailRespList(List<FlowDetailResp> flowDetailRespList ,FlowRecord flowRecord){
FlowDetailResp flowDetailResp = new FlowDetailResp();
flowDetailResp.setCurrentStaffId(flowRecord.getApprovalStaffId());
flowDetailResp.setStaffName(flowRecord.getApprovalStaffName());
flowDetailRespList.add(flowDetailResp);
}
private R transfer(ApprovalDto approvalDto) {
return null;
}
@ -968,7 +897,7 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
}
}
private R newSubmit(ApprovalDto approvalDto) {
private R newSubmit(ApprovalDto approvalDto,Integer finishedStatus) {
ResultRecord resultRecord = resultRecordMapper.selectResultRecordById(approvalDto.getResultRecordId());
if(approvalDto.getLoginUserId() == null){
approvalDto.setLoginUserId(resultRecord.getCurrentApprovalStaffId());
@ -978,13 +907,16 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
log.info("流程己经结束");
return R.ok("流程己经结束");
}
if(finishedStatus == null){
finishedStatus = FlowRecordStatusEnums.FINISHED_STATUS.getStatus();
}
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());//当前审批己经完成
flowRecord.setStatus(finishedStatus);//当前审批己经完成
} else {
flowRecord.setStatus(FlowRecordStatusEnums.OTHER_APPROVAL.getStatus()); //其他审批
}
@ -1001,14 +933,14 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
currentFlowRecord = flowRecord;//当前流程 id
}
}
currentFlowRecord.setStatus(FlowRecordStatusEnums.FINISHED_STATUS.getStatus());//当前审批己经完成
currentFlowRecord.setStatus(finishedStatus);//当前审批己经完成
flowRecordService.updateFlowRecordById(currentFlowRecord);
if (flag) { //流程未向下走
return R.ok("审批成功");
return R.ok("恭喜您,审批成功");
}
}
} else {
preFlowRecord.setStatus(FlowRecordStatusEnums.FINISHED_STATUS.getStatus());//流程己走
preFlowRecord.setStatus(finishedStatus);//流程己走
flowRecordService.updateFlowRecordById(preFlowRecord);
}
// 找到当前下一个节点为0的 flowIndex
@ -1086,6 +1018,92 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
return R.ok();
}
@Override
public R newResultRecordList(RecordDetailDto recordDetailDto) {
List<FlowRecord> flowRecords = flowRecordService.selectFlowRecordByResultRecordId(recordDetailDto.getResultRecordId());
List<FlowRecordResp> flowRecordList = new ArrayList<>();
int flowIndex = -1;
for (FlowRecord flowRecord : flowRecords) {
if (flowRecord.getFlowIndex().equals(flowIndex)) { //表示有重复数据
FlowRecordResp lastResp = flowRecordList.get(flowRecordList.size() - 1);
List<FlowRecord> mulFlowRecord = flowRecordService.selectFlowRecordByRecordIdFlowIndex(recordDetailDto.getResultRecordId(), flowIndex);
FlowRecord fisrt = mulFlowRecord.get(0);
int stepIndex = fisrt.getType();
boolean flag0 = false;
boolean flag1 = false;
boolean flag2 = false;
boolean flag4 = false;
List<FlowDetailResp> flowDetailRespList = lastResp.getFlowDetailRespList();
mySetFlowDetailRespList(flowDetailRespList, flowRecord);
for (FlowRecord mul : mulFlowRecord) {
if (mul.getStatus().equals(FlowRecordStatusEnums.UN_TO_STATUS.getStatus())) {
flag0 = true;
} else if (mul.getStatus().equals(FlowRecordStatusEnums.FINISHED_STATUS.getStatus())) {
flag1 = true;
} else if (mul.getStatus().equals(FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus())) {
flag2 = true;
} else if (mul.getStatus().equals(FlowRecordStatusEnums.SKIP_STATUS.getStatus())) {
flag4 = true;
}
if(mul.getApprovalStaffId().equals(recordDetailDto.getLoginUserId())){
lastResp.setStaffName(mul.getApprovalStaffName());
}
}
if (stepIndex == 0 || stepIndex == 1) { // 依次
if(flag0){
lastResp.setStatus(0);
}else if(flag1){
lastResp.setStatus(1);
}else if(flag2){
lastResp.setStatus(1);
}else if (flag4){
lastResp.setStatus(4);
}
} else { //所有
if(flag0){ //只要有 0 表示当前节点所有的为0
lastResp.setStatus(0);
}else if(flag2){ // 只要有 2 表示所有的结点停留在当前
lastResp.setStatus(1);
}else if(flag1){
lastResp.setStatus(1); // 当前步骤中只存在1和4 那么当前结点肯定通过了
}else if (flag4){
lastResp.setStatus(4); // 当前步骤中所有的结点都跳过了
}
}
continue;
}
FlowRecordResp resp = new FlowRecordResp();
resp.setFlowName(flowRecord.getFlowName());
resp.setStaffName(flowRecord.getApprovalStaffName());
resp.setStatus(flowRecord.getStatus());
List<FlowDetailResp> flowDetailRespList = new ArrayList<>();
mySetFlowDetailRespList(flowDetailRespList,flowRecord);
resp.setFlowDetailRespList(flowDetailRespList);
flowRecordList.add(resp);
flowIndex = flowRecord.getFlowIndex();
}
FlowRecordResp end = new FlowRecordResp();
end.setFlowName("线束");
flowRecordList.add(end);
List<ResultComment> resultCommentList = resultCommentService.selectByRecordId(recordDetailDto.getResultRecordId());
Map<String, Object> map = new HashMap<>();
map.put("flowRecordList", flowRecordList);
map.put("resultCommentList", resultCommentList);
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);
}
public StaffEntity getDepartmentStaff(Long staffId, int level) {
DepartManagers departManagers = staffService.findLeader( staffId, level);
List<StaffEntity> staffEntities = departManagers.getManagers();