From 2ee809a7cab4116a9e31eb6c32e321a59e0d46dd Mon Sep 17 00:00:00 2001 From: qitz <18810291185@163.com> Date: Thu, 18 Jan 2024 17:04:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=9F=A5=E7=9C=8B=E6=B5=81?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mscase/MsSignSealController.java | 22 ++ .../system/mapper/flow/MsCaseFlowMapper.java | 14 + .../domain/vo/mscase/MsCaseLogRecordVO.java | 71 +++++ .../mapper/mscase/MsCaseLogRecordMapper.java | 30 ++ .../service/mscase/MsSignSealService.java | 7 + .../mscase/impl/MsSignSealServiceImpl.java | 285 +++++++++++++++++- .../utils/FixSelectFlowDetailUtils.java | 2 +- 7 files changed, 424 insertions(+), 7 deletions(-) create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/MsCaseLogRecordVO.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/mscase/MsSignSealController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/mscase/MsSignSealController.java index 8c9f9ad..873efb3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/mscase/MsSignSealController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/mscase/MsSignSealController.java @@ -7,6 +7,7 @@ import com.ruoyi.common.exception.EsignDemoException; import com.ruoyi.wisdomarbitrate.domain.dto.mscase.MsSignSealDTO; import com.ruoyi.wisdomarbitrate.domain.dto.mscase.SealSignRecord; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationVO; +import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseLogRecordVO; import com.ruoyi.wisdomarbitrate.service.mscase.MsSignSealService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; @@ -15,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + @RestController @RequestMapping("/mssignSeal") public class MsSignSealController extends BaseController { @@ -53,6 +56,25 @@ public class MsSignSealController extends BaseController { return success(sealUrlRecordselect); } + /** + * 查询案件进度 + */ + @PostMapping("/selectCaseProgress") + public AjaxResult selectCaseProgress(@Validated @RequestBody MsSignSealDTO dto) { + AjaxResult caseApplicationselect = msSignSealService.selectCaseProgress(dto); + return success(caseApplicationselect); + } + + /** + * 查询案件日志 + */ + @PostMapping("/listCaseLogRecord") + public AjaxResult list(@Validated @RequestBody MsSignSealDTO dto) + { + List list = msSignSealService.selectCaseLogRecordList(dto); + return AjaxResult.success(list); + } + diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/flow/MsCaseFlowMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/flow/MsCaseFlowMapper.java index f682692..6e1a1f6 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/flow/MsCaseFlowMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/flow/MsCaseFlowMapper.java @@ -1,7 +1,21 @@ package com.ruoyi.system.mapper.flow; import com.ruoyi.system.domain.entity.flow.MsCaseFlow; +import org.apache.ibatis.annotations.Select; import tk.mybatis.mapper.common.Mapper; +import java.util.List; + public interface MsCaseFlowMapper extends Mapper { + /** + * 根据流程查找下一个流程 + * + * @param caseFlowId 流程id + * @return + */ + @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 ") + List nextFlowall(Integer caseFlowId); } \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/MsCaseLogRecordVO.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/MsCaseLogRecordVO.java new file mode 100644 index 0000000..0559fac --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/MsCaseLogRecordVO.java @@ -0,0 +1,71 @@ +package com.ruoyi.wisdomarbitrate.domain.vo.mscase; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import java.util.Date; + +@Getter +@Setter +@ToString +@EqualsAndHashCode +public class MsCaseLogRecordVO { + private Long id; + + /** + * 案件申请id + */ + private Long caseAppliId; + + /** + * 案件节点 + */ + private Integer caseNode; + + /** + * 案件节点时间 + */ + private Date caseNodeTime; + + /** + * 操作人用户名 + */ + private String createBy; + + /** + * 操作人用户昵称 + */ + private String createNickName; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 备注 + */ + private String notes; + private String caseStatusName; + + /** + * 下一个节点角色名称 + */ + private String nextRoleName; + + /** + * 节点名称 + */ + private String caseNodeName; + /** + * 展示的内容 + */ + private String content; + + + + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/mscase/MsCaseLogRecordMapper.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/mscase/MsCaseLogRecordMapper.java index 4fac408..8c99495 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/mscase/MsCaseLogRecordMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/mscase/MsCaseLogRecordMapper.java @@ -1,6 +1,8 @@ package com.ruoyi.wisdomarbitrate.mapper.mscase; import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseLogRecord; +import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseLogRecordVO; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import tk.mybatis.mapper.common.Mapper; @@ -14,4 +16,32 @@ public interface MsCaseLogRecordMapper extends Mapper { */ @Select("select create_by createBy,GROUP_CONCAT(DISTINCT case_appli_id) caseAppliId from ms_case_log_record where create_by in('hhl','gyj') group by create_by,case_appli_id") List selectCompleteByCreateBy(List collect); + + @Select("") + List selectCaseLogRecordList(@Param("caseLogRecord") MsCaseLogRecord caseLogRecord); } \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/MsSignSealService.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/MsSignSealService.java index f7a1865..57e58ba 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/MsSignSealService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/MsSignSealService.java @@ -5,6 +5,9 @@ import com.ruoyi.common.exception.EsignDemoException; import com.ruoyi.wisdomarbitrate.domain.dto.mscase.MsSignSealDTO; import com.ruoyi.wisdomarbitrate.domain.dto.mscase.SealSignRecord; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationVO; +import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseLogRecordVO; + +import java.util.List; public interface MsSignSealService { @@ -16,4 +19,8 @@ public interface MsSignSealService { SealSignRecord selectSealUrl(MsSignSealDTO dto) throws EsignDemoException; + AjaxResult selectCaseProgress(MsSignSealDTO dto); + + List selectCaseLogRecordList(MsSignSealDTO dto); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/impl/MsSignSealServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/impl/MsSignSealServiceImpl.java index d3526eb..a7d603b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/impl/MsSignSealServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/impl/MsSignSealServiceImpl.java @@ -2,6 +2,8 @@ package com.ruoyi.wisdomarbitrate.service.mscase.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -21,20 +23,20 @@ import com.ruoyi.system.domain.entity.flow.MsCaseFlow; import com.ruoyi.system.mapper.flow.MsCaseFlowMapper; import com.ruoyi.wisdomarbitrate.domain.dto.dept.DeptIdentify; import com.ruoyi.wisdomarbitrate.domain.dto.dept.SealManage; +import com.ruoyi.wisdomarbitrate.domain.dto.mscase.CaseLogRecord; import com.ruoyi.wisdomarbitrate.domain.dto.mscase.MsSignSealDTO; import com.ruoyi.wisdomarbitrate.domain.dto.mscase.SealSignRecord; import com.ruoyi.wisdomarbitrate.domain.entity.dept.MsSealSignRecord; -import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAffiliate; -import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseApplication; -import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAttach; -import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCasePaymentRecord; +import com.ruoyi.wisdomarbitrate.domain.entity.mscase.*; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseApplicationVO; +import com.ruoyi.wisdomarbitrate.domain.vo.mscase.MsCaseLogRecordVO; import com.ruoyi.wisdomarbitrate.mapper.dept.DeptIdentifyMapper; import com.ruoyi.wisdomarbitrate.mapper.dept.MsSealSignRecordMapper; import com.ruoyi.wisdomarbitrate.mapper.dept.SealManageMapper; import com.ruoyi.wisdomarbitrate.mapper.mscase.MsCaseAffiliateMapper; import com.ruoyi.wisdomarbitrate.mapper.mscase.MsCaseApplicationMapper; import com.ruoyi.wisdomarbitrate.mapper.mscase.MsCaseAttachMapper; +import com.ruoyi.wisdomarbitrate.mapper.mscase.MsCaseLogRecordMapper; import com.ruoyi.wisdomarbitrate.service.mscase.MsCaseApplicationService; import com.ruoyi.wisdomarbitrate.service.mscase.MsSignSealService; import com.ruoyi.wisdomarbitrate.utils.CaseLogUtils; @@ -45,10 +47,11 @@ import org.springframework.transaction.annotation.Transactional; import tk.mybatis.mapper.entity.Example; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; +import static com.ruoyi.common.core.domain.AjaxResult.success; + @Service public class MsSignSealServiceImpl implements MsSignSealService { @@ -73,6 +76,9 @@ public class MsSignSealServiceImpl implements MsSignSealService { @Autowired private MsCaseApplicationMapper caseApplicationMapper; + @Autowired + private MsCaseLogRecordMapper caseLogRecordMapper; + @Override @Transactional @@ -373,6 +379,273 @@ public class MsSignSealServiceImpl implements MsSignSealService { return sealSignRecordReslt; } + @Override + public AjaxResult selectCaseProgress(MsSignSealDTO dto) { + Map datas = new HashMap<>(); + Long id = dto.getCaseId(); + MsCaseLogRecord caseLogRecord = new MsCaseLogRecord(); + caseLogRecord.setCaseAppliId(id); + List records = caseLogRecordMapper.selectCaseLogRecordList(caseLogRecord); + MsCaseApplication caseApplicationselect = msCaseApplicationMapper.selectByPrimaryKey(id); + Integer caseFlowId = caseApplicationselect.getCaseFlowId(); + MsCaseFlow msCaseFlow = caseFlowMapper.selectByPrimaryKey(caseFlowId); + + String nodeName = ""; + if(msCaseFlow!=null){ + nodeName = msCaseFlow.getNodeName(); + } + CaseLogRecord caseLogRecordin = getInCasenode(nodeName); + + // 根据流程id查找下一个流程节点 + MsCaseFlow nextFlow = caseFlowMapper.nextFlow(caseApplicationselect.getCaseFlowId()); + String nodeName1 = ""; + if(nextFlow!=null){ + nodeName1 = nextFlow.getNodeName(); + } + CaseLogRecord caseLogRecordnext = getNextRole(nodeName1); + caseLogRecordin.setNextRoleName(caseLogRecordnext.getNextRoleName()); + MsCaseLogRecordVO msCaseLogRecordVO = new MsCaseLogRecordVO(); + BeanUtil.copyProperties(caseLogRecordin, msCaseLogRecordVO); + List caseLogRecordsin = new ArrayList<>(); + caseLogRecordsin.add(msCaseLogRecordVO); + + List nextFlowall = caseFlowMapper.nextFlowall(caseApplicationselect.getCaseFlowId()); + List caseLogRecordsnext = new ArrayList<>(); + if (nextFlowall != null && nextFlowall.size() > 0) { + for (MsCaseFlow msCaseFlow1 : nextFlowall) { + caseLogRecordsnext.add(getNextCaseLogRecord(msCaseFlow1.getNodeName())); + } + } + + datas.put("finishCasenode", records); + datas.put("inCasenode", caseLogRecordsin); + datas.put("nextCasenode", caseLogRecordsnext); + + return success(datas); + } + + @Override + public List selectCaseLogRecordList(MsSignSealDTO dto) { + Long id = dto.getCaseId(); + MsCaseLogRecord caseLogRecord = new MsCaseLogRecord(); + caseLogRecord.setCaseAppliId(id); + List records = caseLogRecordMapper.selectCaseLogRecordList(caseLogRecord); + if(CollectionUtil.isNotEmpty(records)){ + records.forEach(record->{ + StringBuilder contentBuilder = new StringBuilder(); + String caseNodeTime=""; + if(record.getCaseNodeTime()!=null){ + caseNodeTime= DateUtil.format(record.getCaseNodeTime(), DatePattern.NORM_DATETIME_FORMATTER); + } + + contentBuilder.append(Optional.ofNullable(record.getCreateNickName()).orElse("")).append("(").append(record.getCreateBy()).append(")").append("于").append(caseNodeTime); + if(StrUtil.isNotEmpty(record.getContent())){ + contentBuilder.append(record.getContent()); + } + if(StrUtil.isNotEmpty(record.getNotes())){ + contentBuilder.append(",").append(record.getNotes()); + } + record.setContent(contentBuilder.toString()); + + }); + } + return records; + } + + + private MsCaseLogRecordVO getNextCaseLogRecord(String nodeName) { + MsCaseLogRecordVO caseLogRecord = new MsCaseLogRecordVO(); + switch (nodeName) { + case "提交案件": + caseLogRecord.setCaseNodeName("提交案件"); + caseLogRecord.setContent("申请人将进行提交案件"); + break; + case "缴费": + caseLogRecord.setCaseNodeName("缴费"); + caseLogRecord.setContent("申请人将进行缴费"); + break; + case "确认缴费": + caseLogRecord.setCaseNodeName("确认缴费"); + caseLogRecord.setContent("财务将进行确认缴费"); + break; + case "受理分配": + caseLogRecord.setCaseNodeName("受理分配"); + caseLogRecord.setContent("法律顾问将进行受理分配"); + break; + case "选择调解员": + caseLogRecord.setCaseNodeName("选择调解员"); + caseLogRecord.setContent("申请人将进行选择调解员"); + break; + case "核实调解员": + caseLogRecord.setCaseNodeName("核实调解员"); + caseLogRecord.setContent("法律顾问将进行核实调解员"); + break; + case "确认调解员": + caseLogRecord.setCaseNodeName("确认调解员"); + caseLogRecord.setContent("部门长将进行确认调解员"); + break; + case "确定调解时间": + caseLogRecord.setCaseNodeName("确定调解时间"); + caseLogRecord.setContent("法律顾问将进行确定调解时间"); + break; + case "调解": + caseLogRecord.setCaseNodeName("调解"); + caseLogRecord.setContent("法律顾问将进行调解"); + break; + case "确认调解书": + caseLogRecord.setCaseNodeName("确认调解书"); + caseLogRecord.setContent("申请人、被申请人将进行确认调解书"); + break; + case "签名": + caseLogRecord.setCaseNodeName("签名"); + caseLogRecord.setContent("申请人、被申请人将进行签名"); + break; + case "用印申请": + caseLogRecord.setCaseNodeName("用印申请"); + caseLogRecord.setContent("法律顾问将进行用印申请"); + break; + case "用印": + caseLogRecord.setCaseNodeName("用印"); + caseLogRecord.setContent("部门长将进行用印"); + break; + case "归档": + caseLogRecord.setCaseNodeName("归档"); + caseLogRecord.setContent("法律顾问将进行提交归档"); + break; + case "签收": + caseLogRecord.setCaseNodeName("签收"); + caseLogRecord.setContent("申请人、被申请人将进行签收"); + break; + default: + caseLogRecord.setNextRoleName("没有下一节点角色"); + + } + return caseLogRecord; + } + + private CaseLogRecord getNextRole(String nodeName) { + CaseLogRecord caseLogRecord = new CaseLogRecord(); + switch (nodeName) { + case "提交案件": + caseLogRecord.setNextRoleName("下一节点角色:申请人"); + break; + case "缴费": + caseLogRecord.setNextRoleName("下一节点角色:申请人"); + break; + case "确认缴费": + caseLogRecord.setNextRoleName("下一节点角色:财务"); + break; + case "受理分配": + caseLogRecord.setNextRoleName("下一节点角色:法律顾问"); + break; + case "选择调解员": + caseLogRecord.setNextRoleName("下一节点角色:申请人、被申请人"); + break; + case "核实调解员": + caseLogRecord.setNextRoleName("下一节点角色:法律顾问"); + break; + case "确认调解员": + caseLogRecord.setNextRoleName("下一节点角色:部门长"); + break; + case "确定调解时间": + caseLogRecord.setNextRoleName("下一节点角色:法律顾问"); + break; + case "调解": + caseLogRecord.setNextRoleName("下一节点角色:法律顾问"); + break; + case "确认调解书": + caseLogRecord.setNextRoleName("下一节点角色:申请人、被申请人"); + break; + case "签名": + caseLogRecord.setNextRoleName("下一节点角色:申请人、被申请人"); + break; + case "用印申请": + caseLogRecord.setNextRoleName("下一节点角色:法律顾问"); + break; + case "用印": + caseLogRecord.setNextRoleName("下一节点角色:部门长"); + break; + case "归档": + caseLogRecord.setNextRoleName("下一节点角色:法律顾问"); + break; + case "签收": + caseLogRecord.setNextRoleName("下一节点角色:申请人、被申请人"); + break; + default: + caseLogRecord.setNextRoleName("没有下一节点角色"); + + } + return caseLogRecord; + } + + private CaseLogRecord getInCasenode(String nodeName) { + CaseLogRecord caseLogRecord = new CaseLogRecord(); + switch (nodeName) { + case "提交案件": + caseLogRecord.setCaseNodeName("提交案件"); + caseLogRecord.setContent("申请人正在进行提交案件"); + break; + case "缴费": + caseLogRecord.setCaseNodeName("缴费"); + caseLogRecord.setContent("申请人正在进行缴费"); + break; + case "确认缴费": + caseLogRecord.setCaseNodeName("确认缴费"); + caseLogRecord.setContent("财务正在进行缴费确认"); + break; + case "受理分配": + caseLogRecord.setCaseNodeName("受理分配"); + caseLogRecord.setContent("法律顾问将进行受理分配"); + break; + case "选择调解员": + caseLogRecord.setCaseNodeName("选择调解员"); + caseLogRecord.setContent("申请人正在进行选择调解员"); + break; + case "核实调解员": + caseLogRecord.setCaseNodeName("核实调解员"); + caseLogRecord.setContent("法律顾问正在进行核实调解员"); + break; + case "确认调解员": + caseLogRecord.setCaseNodeName("确认调解员"); + caseLogRecord.setContent("部门长正在进行确认调解员"); + break; + case "调解": + caseLogRecord.setCaseNodeName("调解"); + caseLogRecord.setContent("法律顾问正在进行调解"); + break; + case "确认调解书": + caseLogRecord.setCaseNodeName("确认调解书"); + caseLogRecord.setContent("申请人、被申请人正在进行确认调解书"); + break; + case "签名": + caseLogRecord.setCaseNodeName("签名"); + caseLogRecord.setContent("申请人、被申请人正在进行签名"); + break; + case "用印申请": + caseLogRecord.setCaseNodeName("用印申请"); + caseLogRecord.setContent("法律顾问正在进行确认用印申请"); + break; + case "用印": + caseLogRecord.setCaseNodeName("用印"); + caseLogRecord.setContent("部门长正在进行用印"); + break; + case "归档": + caseLogRecord.setCaseNodeName("归档"); + caseLogRecord.setContent("法律顾问正在进行归档"); + break; + case "签收": + caseLogRecord.setCaseNodeName("签收"); + caseLogRecord.setContent("申请人、被申请人正在进行签收"); + break; + default: + caseLogRecord.setCaseNodeName("无案件状态"); + caseLogRecord.setContent("无操作内容"); + + } + return caseLogRecord; + + } + diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/FixSelectFlowDetailUtils.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/FixSelectFlowDetailUtils.java index c509632..5ec83c4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/FixSelectFlowDetailUtils.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/FixSelectFlowDetailUtils.java @@ -244,7 +244,7 @@ public class FixSelectFlowDetailUtils { /* 定时查询签署流程详情 */ -// @Scheduled(cron = "0/10 * * * * ?") + @Scheduled(cron = "0/10 * * * * ?") @Transactional public void fixExecuteSelectFlowDetailUtils() { Gson gson = new Gson();