优化查询流程

This commit is contained in:
qitz
2024-02-20 17:22:44 +08:00
parent e6160f71d4
commit 32db41e641
5 changed files with 45 additions and 19 deletions
@@ -57,4 +57,6 @@ public class MsCaseFlowVO {
* 按钮权限标识符
*/
private String buttonAuthFlag;
private String roleName;
}
@@ -1,6 +1,7 @@
package com.ruoyi.system.mapper.flow;
import com.ruoyi.system.domain.entity.flow.MsCaseFlow;
import com.ruoyi.system.domain.vo.flow.MsCaseFlowVO;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;
@@ -16,9 +17,12 @@ public interface MsCaseFlowMapper extends Mapper<MsCaseFlow> {
@Select("select f1.id,f1.node_id nodeId,f1.node_name nodeName,f1.case_status_name caseStatusName,f1.back_flow_id backFlowId,f1.sort from ms_case_flow f1 join ms_case_flow f2 on f2.id=#{caseFlowId} and f1.sort=f2.sort+1 ")
MsCaseFlow nextFlow(Integer caseFlowId);
@Select("select f1.id,f1.node_id nodeId,f1.node_name nodeName,f1.case_status_name caseStatusName,f1.back_flow_id backFlowId,f1.sort from ms_case_flow f1 join ms_case_flow f2 on f2.id=#{caseFlowId} and f1.sort >= f2.sort+1 ")
@Select("select f1.id,f1.node_id nodeId,f1.node_name nodeName,f1.case_status_name caseStatusName,f1.back_flow_id backFlowId,f1.sort from ms_case_flow f1 join ms_case_flow f2 on f2.id=#{caseFlowId} and f1.sort >= f2.sort+1 order by f1.sort ")
List<MsCaseFlow> nextFlowall(Integer caseFlowId);
@Select("select f1.id,f1.node_id nodeId,f1.node_name nodeName,f1.case_status_name caseStatusName,f1.back_flow_id backFlowId,f1.sort from ms_case_flow f1 join ms_case_flow f2 on f2.id=#{caseFlowId} and f1.sort=f2.sort+3 ")
MsCaseFlow nextFlow1(Integer caseFlowId);
@Select("SELECT r.role_name as roleName ,f.node_name as nodeName ,f.case_status_name as caseStatusName FROM ms_case_flow f left join ms_case_flow_role_related fr on f.id = fr.flow_id left join ms_sys_role r on fr.roleid = r.role_id WHERE f.id = #{caseFlowId} ")
List<MsCaseFlowVO> selectFlowRole(Integer caseFlowId);
}
@@ -64,6 +64,10 @@ public class MsCaseLogRecordVO {
*/
private String content;
private Integer nodeId;
private Integer sort;
@@ -44,4 +44,7 @@ public interface MsCaseLogRecordMapper extends Mapper<MsCaseLogRecord> {
" order by create_time asc " +
" </script>")
List<MsCaseLogRecordVO> selectCaseLogRecordList(@Param("caseLogRecord") MsCaseLogRecord caseLogRecord);
@Select("SELECT group_concat( DISTINCT t.createNickName) createNickName,t.nodeName content,t.nodeId,t.sort FROM (SELECT l.create_nick_name createNickName ,f.node_name nodeName,f.node_id nodeId, f.sort FROM ms_case_log_record l left join ms_case_flow f on l.case_node = f.node_id WHERE l.case_appli_id = #{caseAppliId} and f.node_name is not null ) t group by t.nodeName,t.nodeId,t.sort order by t.sort ")
List<MsCaseLogRecordVO> selectCaseLogRecordListCaseProgress(Long caseAppliId);
}
@@ -25,6 +25,7 @@ import com.ruoyi.common.utils.SmsUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.SaaSAPIFileUtils;
import com.ruoyi.system.domain.entity.flow.MsCaseFlow;
import com.ruoyi.system.domain.vo.flow.MsCaseFlowVO;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.mapper.flow.MsCaseFlowMapper;
import com.ruoyi.wisdomarbitrate.domain.dto.dept.DeptIdentify;
@@ -451,27 +452,31 @@ public class MsSignSealServiceImpl implements MsSignSealService {
public AjaxResult selectCaseProgress(MsSignSealDTO dto) {
Map<String, Object> datas = new HashMap<>();
Long id = dto.getCaseId();
MsCaseLogRecord caseLogRecord = new MsCaseLogRecord();
caseLogRecord.setCaseAppliId(id);
List<MsCaseLogRecordVO> records = caseLogRecordMapper.selectCaseLogRecordList(caseLogRecord);
// MsCaseLogRecord caseLogRecord = new MsCaseLogRecord();
// caseLogRecord.setCaseAppliId(id);
List<MsCaseLogRecordVO> records = caseLogRecordMapper.selectCaseLogRecordListCaseProgress(dto.getCaseId());
MsCaseApplication caseApplicationselect = msCaseApplicationMapper.selectByPrimaryKey(id);
Integer caseFlowId = caseApplicationselect.getCaseFlowId();
MsCaseFlow msCaseFlow = caseFlowMapper.selectByPrimaryKey(caseFlowId);
CaseLogRecord caseLogRecordin = new CaseLogRecord();
caseLogRecordin.setCaseNodeName(msCaseFlow.getNodeName());
List<MsCaseFlowVO> msCaseFlowvos = caseFlowMapper.selectFlowRole(caseFlowId);
String nodeName = "";
if(msCaseFlow!=null){
nodeName = msCaseFlow.getNodeName();
StringBuilder roleIn = new StringBuilder();
for(MsCaseFlowVO mscaseFlowVO:msCaseFlowvos){
roleIn.append( mscaseFlowVO.getRoleName()+"正在进行"+mscaseFlowVO.getNodeName()+";");
}
CaseLogRecord caseLogRecordin = getInCasenode(nodeName);
caseLogRecordin.setContent(roleIn.toString().substring(0,roleIn.toString().length()-1));
// 根据流程id查找下一个流程节点
MsCaseFlow nextFlow = caseFlowMapper.nextFlow(caseApplicationselect.getCaseFlowId());
String nodeName1 = "";
if(nextFlow!=null){
nodeName1 = nextFlow.getNodeName();
MsCaseFlow nextFlow = caseFlowMapper.nextFlow(caseFlowId);
List<MsCaseFlowVO> nextMsCaseFlowvo = caseFlowMapper.selectFlowRole(nextFlow.getId());
StringBuilder roleIn1 = new StringBuilder();
for(MsCaseFlowVO mscaseFlowVO:nextMsCaseFlowvo){
roleIn1.append( mscaseFlowVO.getRoleName()+";");
}
CaseLogRecord caseLogRecordnext = getNextRole(nodeName1);
caseLogRecordin.setNextRoleName(caseLogRecordnext.getNextRoleName());
caseLogRecordin.setNextRoleName("下一节点角色:"+roleIn1.toString().substring(0,roleIn1.toString().length()-1));
MsCaseLogRecordVO msCaseLogRecordVO = new MsCaseLogRecordVO();
BeanUtil.copyProperties(caseLogRecordin, msCaseLogRecordVO);
List<MsCaseLogRecordVO> caseLogRecordsin = new ArrayList<>();
@@ -481,14 +486,22 @@ public class MsSignSealServiceImpl implements MsSignSealService {
List<MsCaseLogRecordVO> caseLogRecordsnext = new ArrayList<>();
if (nextFlowall != null && nextFlowall.size() > 0) {
for (MsCaseFlow msCaseFlow1 : nextFlowall) {
caseLogRecordsnext.add(getNextCaseLogRecord(msCaseFlow1.getNodeName()));
List<MsCaseFlowVO> msCaseFlowVOs = caseFlowMapper.selectFlowRole(msCaseFlow1.getId());
MsCaseLogRecordVO caseLogRecord1 = new MsCaseLogRecordVO();
caseLogRecord1.setCaseNodeName(msCaseFlowVOs.get(0).getNodeName());
StringBuilder rolenext = new StringBuilder();
for(MsCaseFlowVO mscaseFlowVO:msCaseFlowVOs){
rolenext.append( mscaseFlowVO.getRoleName()+"将进行"+mscaseFlowVO.getNodeName()+";");
}
caseLogRecord1.setContent( rolenext.toString().substring(0,rolenext.toString().length()-1));
caseLogRecordsnext.add(caseLogRecord1);
}
}
datas.put("finishCasenode", records);
datas.put("inCasenode", caseLogRecordsin);
datas.put("nextCasenode", caseLogRecordsnext);
return success(datas);
}