解决冲突

This commit is contained in:
wulin 2020-10-27 14:55:46 +08:00
commit c8c492e9ad
11 changed files with 175 additions and 31 deletions

View File

@ -4,7 +4,7 @@ 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.RecordListDto;
import com.lz.modules.app.dto.RecordDetailDto;
import com.lz.modules.app.dto.StaffDepartmentDto;
import com.lz.modules.app.entity.DepartmentsStaffRelateEntity;
import com.lz.modules.app.entity.StaffEntity;
@ -16,9 +16,7 @@ import com.lz.modules.app.service.DepartmentsStaffRelateService;
import com.lz.modules.app.service.StaffService;
import com.lz.modules.flow.entity.*;
import com.lz.modules.flow.model.Auth;
import com.lz.modules.flow.model.FlowModel;
import com.lz.modules.flow.model.ResultRecordDetailDto;
import com.lz.modules.flow.model.ResultRecordDto;
import com.lz.modules.flow.req.ResultDetailReq;
import com.lz.modules.flow.service.*;
import com.lz.modules.sys.controller.AbstractController;
@ -674,28 +672,30 @@ public class ResultRecordController extends AbstractController {
/**
* 删除
*/
// http://localhost:8080/lz_management/user/lzresultrecord/new/approval?resultRecordId=215&status=1&loginUserId=825
// http://localhost:8080/lz_management/user/lzresultrecord/new/approval?resultRecordId=215&status=1&loginUserId=825&comment=xxx&menuName=bbb
@RequestMapping("/new/approval")
public R approval(ApprovalDto approvalDto) {
try {
approvalDto.setLoginUserId(approvalDto.getLoginUserId());
if (getUser() != null) {
approvalDto.setLoginUserId(getUserId());
}
return resultRecordService.newApproval(approvalDto);
} catch (Exception e) {
return R.error(e.getMessage());
}
}
/**
* 删除
*/
// http://localhost:8080/lz_management/user/lzresultrecord/new/resultRecordList
@RequestMapping("/new/resultRecordList")
public R newResultRecordList(RecordListDto recordListDto) {
// http://localhost:8080/lz_management/user/lzresultrecord/new/resultRecordDetail?resultRecordId=215
@RequestMapping("/new/resultRecordDetail")
public R newResultRecordList(RecordDetailDto recordDetailDto) {
if(recordDetailDto.getLoginUserId() ==null && getUser() !=null ){
recordDetailDto.setLoginUserId(getUserId());
}
return resultRecordService.newResultRecordList(recordDetailDto);
return null;
}

View File

@ -3,6 +3,7 @@ package com.lz.modules.app.dto;
import lombok.Data;
@Data
public class RecordListDto {
public class RecordDetailDto {
private Long loginUserId;
private Long resultRecordId;
}

View File

@ -0,0 +1,9 @@
package com.lz.modules.app.resp;
import lombok.Data;
@Data
public class FlowDetailResp {
private Long currentStaffId;
private String staffName;
}

View File

@ -0,0 +1,18 @@
package com.lz.modules.app.resp;
import lombok.Data;
import java.util.List;
@Data
public class FlowRecordResp {
private String flowName;
private String staffName;
private int status;
private List<FlowDetailResp> flowDetailRespList;
}

View File

@ -71,4 +71,8 @@ public interface FlowRecordMapper extends BaseMapper<FlowRecord> {
FlowRecord selectPreFlowRecordByRecordIdMaxIdStatus(@Param("resultRecordId") Long resultRecordId, @Param("id") Long id, @Param("status") int status);
List<FlowRecord> selectFlowRecordByRecordIdFlowIndex(@Param("resultRecordId") Long resultRecordId, @Param("flowIndex") Integer flowIndex);
List<FlowRecord> selectFlowRecordByResultRecordId(@Param("resultRecordId") Long resultRecordId);
FlowRecord selectFlowRecordByRecordIdMinIdStatus(@Param("resultRecordId") Long resultRecordId, @Param("id") Long id, @Param("status") int status);
}

View File

@ -70,4 +70,8 @@ public interface FlowRecordService extends IService<FlowRecord> {
FlowRecord selectPreFlowRecordByRecordIdMaxIdStatus(Long resultRecordId, Long id, int status);
List<FlowRecord> selectFlowRecordByRecordIdFlowIndex(Long resultRecordId, Integer flowIndex);
List<FlowRecord> selectFlowRecordByResultRecordId(Long resultRecordId);
FlowRecord selectFlowRecordByRecordIdMinIdStatus(Long resultRecordId, Long id, int i);
}

View File

@ -189,5 +189,16 @@ public class FlowRecordServiceImpl extends ServiceImpl<FlowRecordMapper, FlowRec
return flowRecordMapper.selectFlowRecordByRecordIdFlowIndex(resultRecordId,flowIndex);
}
@Override
public List<FlowRecord> selectFlowRecordByResultRecordId(Long resultRecordId) {
return flowRecordMapper.selectFlowRecordByResultRecordId(resultRecordId);
}
@Override
public FlowRecord selectFlowRecordByRecordIdMinIdStatus(Long resultRecordId, Long id, int status) {
return flowRecordMapper.selectFlowRecordByRecordIdMinIdStatus(resultRecordId,id,status);
}
}

View File

@ -59,7 +59,7 @@ public class AssessManagerServiceImpl implements AssessManagerService {
}
int i = resultRecordMapper.countStartAndGroupNum(flowStart.getId());
ResultRecord resultRecord = resultRecordMapper.selectOneByStartId(flowStart.getId());
res.setJoinNum(resultRecord == null? StringUtil.EMPTY : resultRecord.getStaffName() + i + "");
res.setJoinNum(resultRecord == null? StringUtil.EMPTY : resultRecord.getStaffName() + i + "");
data.add(res);
});
PageUtils pages = new PageUtils();

View File

@ -5,6 +5,7 @@ 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.dto.RecordDetailDto;
import com.lz.modules.app.entity.DepartmentsEntity;
import com.lz.modules.app.entity.DepartmentsStaffRelateEntity;
import com.lz.modules.app.entity.StaffEntity;
@ -111,4 +112,6 @@ public interface ResultRecordService extends IService<ResultRecord> {
R initFlowRecord(Long resultRecordId);
R newApproval(ApprovalDto approvalDto) throws Exception;
R newResultRecordList(RecordDetailDto recordDetailDto);
}

View File

@ -11,12 +11,15 @@ 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.dto.RecordDetailDto;
import com.lz.modules.app.entity.DepartmentsEntity;
import com.lz.modules.app.entity.DepartmentsStaffRelateEntity;
import com.lz.modules.app.entity.StaffEntity;
import com.lz.modules.app.enums.FlowApprovalRoleTypeEnums;
import com.lz.modules.app.enums.FlowRecordStatusEnums;
import com.lz.modules.app.req.ResultRecordReq;
import com.lz.modules.app.resp.FlowDetailResp;
import com.lz.modules.app.resp.FlowRecordResp;
import com.lz.modules.app.resp.OwnResultResp;
import com.lz.modules.app.resp.ResultRecordResp;
import com.lz.modules.app.service.DepartmentsService;
@ -824,6 +827,15 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
if(StringUtil.isBlank(approvalDto.getMenuName())){
throw new RRException("menuName 不能为空");
}
List<FlowRecord> flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(approvalDto.getResultRecordId(),2);
if(CollectionUtils.isNotEmpty(flowRecords)){
FlowRecord preFlowRecord = flowRecords.get(0);
// 评论内容
FlowChart flowChart = flowService.selectFlowChartByChartId(preFlowRecord.getFlowId());
comment(approvalDto, flowChart);
}
switch (approvalDto.getStatus()) {
case 1: //1 提交审批,审批通过
return newSubmit(approvalDto);
@ -849,6 +861,88 @@ 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);
}
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;
}
@ -861,15 +955,15 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
return newReject(approvalDto);
}
public void comment (ApprovalDto approvalDto,FlowChart flowChart){
public void comment(ApprovalDto approvalDto, FlowChart flowChart) {
StaffEntity staffEntity = staffService.selectStaffById(approvalDto.getLoginUserId());
if(staffEntity !=null ){
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());
resultComment.setOptDesc(approvalDto.getMenuName() + flowChart.getName());
resultCommentService.insertResultComment(resultComment);
}
}
@ -916,24 +1010,21 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
} else {
preFlowRecord.setStatus(FlowRecordStatusEnums.FINISHED_STATUS.getStatus());//流程己走
flowRecordService.updateFlowRecordById(preFlowRecord);
FlowChart flowChart = flowService.selectFlowChartByChartId(preFlowRecord.getFlowId());
comment(approvalDto, flowChart);
}
List<FlowRecord> nextFlowRecords = flowRecordService.selectFlowRecordByRecordIdStatusFlowIndex(approvalDto.getResultRecordId(),0,preFlowRecord.getFlowIndex() + 1 );
if(CollectionUtils.isEmpty(nextFlowRecords)){
// 找到当前下一个节点为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 flowChart = flowService.selectFlowChartByChartId(currentFlowRecord.getFlowId());
resultRecord.setFlowProcess(flowChart.getFlowProcess());
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);
@ -953,10 +1044,6 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
flowRecord.setStatus(FlowRecordStatusEnums.UN_TO_STATUS.getStatus());
flowRecordService.updateFlowRecordById(flowRecord);
}
FlowRecord currentApprovalFlowRecord = currentFlowRecords.get(0);
FlowChart currentflowChart = flowService.selectFlowChartByChartId(currentApprovalFlowRecord.getFlowId());
comment(approvalDto, currentflowChart); //评论
// 恢复之前数据
// 获取之前审批过的结点
FlowRecord preFlowRecord = flowRecordService.selectPreFlowRecordByRecordIdMaxIdStatus(approvalDto.getResultRecordId(),

View File

@ -284,6 +284,13 @@
<select id="selectFlowRecordByRecordIdFlowIndex" resultType="com.lz.modules.flow.entity.FlowRecord">
select * from lz_flow_record where is_delete = 0 and record_id = #{resultRecordId} and flow_index = #{flowIndex}
</select>
<select id="selectFlowRecordByResultRecordId" resultType="com.lz.modules.flow.entity.FlowRecord">
select * from lz_flow_record where is_delete = 0 and record_id = #{resultRecordId}
</select>
<select id="selectFlowRecordByRecordIdMinIdStatus" resultType="com.lz.modules.flow.entity.FlowRecord">
select * from lz_flow_record where is_delete = 0 and record_id = #{resultRecordId} and id > #{id} and status = #{status} order by id asc limit 1
</select>
</mapper>