优化查询流程 #81

Merged
qtz merged 2 commits from qtz1 into dev 2024-02-20 09:26:07 +00:00
5 changed files with 45 additions and 19 deletions
@@ -57,4 +57,6 @@ public class MsCaseFlowVO {
* 按钮权限标识符 * 按钮权限标识符
*/ */
private String buttonAuthFlag; private String buttonAuthFlag;
private String roleName;
} }
@@ -1,6 +1,7 @@
package com.ruoyi.system.mapper.flow; package com.ruoyi.system.mapper.flow;
import com.ruoyi.system.domain.entity.flow.MsCaseFlow; import com.ruoyi.system.domain.entity.flow.MsCaseFlow;
import com.ruoyi.system.domain.vo.flow.MsCaseFlowVO;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper; 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 ") @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); 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); 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 ") @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); 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 String content;
private Integer nodeId;
private Integer sort;
@@ -44,4 +44,7 @@ public interface MsCaseLogRecordMapper extends Mapper<MsCaseLogRecord> {
" order by create_time asc " + " order by create_time asc " +
" </script>") " </script>")
List<MsCaseLogRecordVO> selectCaseLogRecordList(@Param("caseLogRecord") MsCaseLogRecord caseLogRecord); 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.StringUtils;
import com.ruoyi.common.utils.file.SaaSAPIFileUtils; import com.ruoyi.common.utils.file.SaaSAPIFileUtils;
import com.ruoyi.system.domain.entity.flow.MsCaseFlow; 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.SysUserMapper;
import com.ruoyi.system.mapper.flow.MsCaseFlowMapper; import com.ruoyi.system.mapper.flow.MsCaseFlowMapper;
import com.ruoyi.wisdomarbitrate.domain.dto.dept.DeptIdentify; import com.ruoyi.wisdomarbitrate.domain.dto.dept.DeptIdentify;
@@ -451,27 +452,31 @@ public class MsSignSealServiceImpl implements MsSignSealService {
public AjaxResult selectCaseProgress(MsSignSealDTO dto) { public AjaxResult selectCaseProgress(MsSignSealDTO dto) {
Map<String, Object> datas = new HashMap<>(); Map<String, Object> datas = new HashMap<>();
Long id = dto.getCaseId(); Long id = dto.getCaseId();
MsCaseLogRecord caseLogRecord = new MsCaseLogRecord(); // MsCaseLogRecord caseLogRecord = new MsCaseLogRecord();
caseLogRecord.setCaseAppliId(id); // caseLogRecord.setCaseAppliId(id);
List<MsCaseLogRecordVO> records = caseLogRecordMapper.selectCaseLogRecordList(caseLogRecord); List<MsCaseLogRecordVO> records = caseLogRecordMapper.selectCaseLogRecordListCaseProgress(dto.getCaseId());
MsCaseApplication caseApplicationselect = msCaseApplicationMapper.selectByPrimaryKey(id); MsCaseApplication caseApplicationselect = msCaseApplicationMapper.selectByPrimaryKey(id);
Integer caseFlowId = caseApplicationselect.getCaseFlowId(); Integer caseFlowId = caseApplicationselect.getCaseFlowId();
MsCaseFlow msCaseFlow = caseFlowMapper.selectByPrimaryKey(caseFlowId); MsCaseFlow msCaseFlow = caseFlowMapper.selectByPrimaryKey(caseFlowId);
CaseLogRecord caseLogRecordin = new CaseLogRecord();
caseLogRecordin.setCaseNodeName(msCaseFlow.getNodeName());
List<MsCaseFlowVO> msCaseFlowvos = caseFlowMapper.selectFlowRole(caseFlowId);
String nodeName = ""; StringBuilder roleIn = new StringBuilder();
if(msCaseFlow!=null){ for(MsCaseFlowVO mscaseFlowVO:msCaseFlowvos){
nodeName = msCaseFlow.getNodeName(); 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(caseFlowId);
MsCaseFlow nextFlow = caseFlowMapper.nextFlow(caseApplicationselect.getCaseFlowId()); List<MsCaseFlowVO> nextMsCaseFlowvo = caseFlowMapper.selectFlowRole(nextFlow.getId());
String nodeName1 = ""; StringBuilder roleIn1 = new StringBuilder();
if(nextFlow!=null){ for(MsCaseFlowVO mscaseFlowVO:nextMsCaseFlowvo){
nodeName1 = nextFlow.getNodeName(); roleIn1.append( mscaseFlowVO.getRoleName()+";");
} }
CaseLogRecord caseLogRecordnext = getNextRole(nodeName1); caseLogRecordin.setNextRoleName("下一节点角色:"+roleIn1.toString().substring(0,roleIn1.toString().length()-1));
caseLogRecordin.setNextRoleName(caseLogRecordnext.getNextRoleName());
MsCaseLogRecordVO msCaseLogRecordVO = new MsCaseLogRecordVO(); MsCaseLogRecordVO msCaseLogRecordVO = new MsCaseLogRecordVO();
BeanUtil.copyProperties(caseLogRecordin, msCaseLogRecordVO); BeanUtil.copyProperties(caseLogRecordin, msCaseLogRecordVO);
List<MsCaseLogRecordVO> caseLogRecordsin = new ArrayList<>(); List<MsCaseLogRecordVO> caseLogRecordsin = new ArrayList<>();
@@ -481,14 +486,22 @@ public class MsSignSealServiceImpl implements MsSignSealService {
List<MsCaseLogRecordVO> caseLogRecordsnext = new ArrayList<>(); List<MsCaseLogRecordVO> caseLogRecordsnext = new ArrayList<>();
if (nextFlowall != null && nextFlowall.size() > 0) { if (nextFlowall != null && nextFlowall.size() > 0) {
for (MsCaseFlow msCaseFlow1 : nextFlowall) { 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("finishCasenode", records);
datas.put("inCasenode", caseLogRecordsin); datas.put("inCasenode", caseLogRecordsin);
datas.put("nextCasenode", caseLogRecordsnext); datas.put("nextCasenode", caseLogRecordsnext);
return success(datas); return success(datas);
} }