diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/mscase/MsCaseApplicationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/mscase/MsCaseApplicationController.java index 75d29f6..dff84c2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/mscase/MsCaseApplicationController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/mscase/MsCaseApplicationController.java @@ -259,6 +259,7 @@ public class MsCaseApplicationController extends BaseController { } return AjaxResult.success(videoService.generateUserSign(userId)); } + /** * 生成房间号 * @return diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/MediatorVO.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/MediatorVO.java index 65e615b..3d16e61 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/MediatorVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/mscase/MediatorVO.java @@ -26,9 +26,9 @@ public class MediatorVO { /** * 待办数量 */ - private Integer todoAmount; + private Long todoAmount; /** * 已办数量 */ - private Integer completeAmount; + private Long completeAmount; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/mscase/MsCaseApplicationMapper.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/mscase/MsCaseApplicationMapper.java index a4c0a00..956bb3d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/mscase/MsCaseApplicationMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/mscase/MsCaseApplicationMapper.java @@ -149,7 +149,7 @@ public interface MsCaseApplicationMapper extends Mapper { * 查询调解员列表 * @return */ - List listMediator( @Param("userIds") List userIds,@Param("recordCaeIdList") List recordCaeIdList); + List listMediator( @Param("userIds") List userIds); /** * 查询最大房间号 diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/mscase/ReservedConferenceMapper.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/mscase/ReservedConferenceMapper.java index 8c356f2..a148551 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/mscase/ReservedConferenceMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/mscase/ReservedConferenceMapper.java @@ -37,4 +37,10 @@ public interface ReservedConferenceMapper { void batchDeleteByIds(@Param("ids") List ids); + + /** + * 根据案件id删除已预约的会议 + * @param caseId + */ + void deletByCaseId(@Param("caseId") Long caseId); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/impl/MsCaseApplicationServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/impl/MsCaseApplicationServiceImpl.java index 1abeb63..fe07bcb 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/impl/MsCaseApplicationServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/impl/MsCaseApplicationServiceImpl.java @@ -30,12 +30,11 @@ import com.ruoyi.wisdomarbitrate.domain.dto.mscase.SealSignRecord; import com.ruoyi.wisdomarbitrate.domain.dto.sendrecord.SmsSendRecord; import com.ruoyi.wisdomarbitrate.domain.dto.template.FatchRule; import com.ruoyi.wisdomarbitrate.domain.dto.template.TemplateManage; -import com.ruoyi.wisdomarbitrate.domain.entity.mscase.*; 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.MsCaseLogRecord; +import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseMediator; import com.ruoyi.wisdomarbitrate.domain.vo.mscase.*; import com.ruoyi.wisdomarbitrate.mapper.dept.DeptIdentifyMapper; import com.ruoyi.wisdomarbitrate.mapper.dept.MsSealSignRecordMapper; @@ -764,21 +763,69 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService { } } else { + // 查询案件信息 + MsCaseApplication application = msCaseApplicationMapper.selectByPrimaryKey(req.getId()); // 根据案件id查询案件相关人 MsCaseAffiliate caseAffiliate = msCaseAffiliateMapper.selectByPrimaryKey(req.getId()); - if (caseAffiliate == null) { + if (application==null||caseAffiliate == null) { return AjaxResult.error("该案件不存在"); } // 锁定该案件 - req.setLockStatus(YesOrNoEnum.YES.getCode()); + application.setLockStatus(YesOrNoEnum.YES.getCode()); Map affiliateMap=new HashMap<>(); affiliateMap.put(req.getId(),caseAffiliate); - accept(req,req,affiliateMap); + accept(application,req,affiliateMap); } return AjaxResult.success("受理成功"); } + /** + * 案件受理 + * @param application + * @param req + * @param affiliateMap + */ + private void accept(MsCaseApplication application, MsCaseApplication req, Map affiliateMap) { + application.setUpdateBy(SecurityUtils.getUsername()); + application.setUpdateTime(new Date()); + application.setBatchNumber(null); + msCaseApplicationMapper.updateByPrimaryKeySelective(application); + MsCaseFlow caseFlow = nextFlow(application.getId(), req.getCaseFlowId(),req.getLockStatus()); + // 给申请人被申请人发送短信 + if (affiliateMap.containsKey(application.getId())) { + MsCaseAffiliate affiliate = affiliateMap.get(application.getId()); + if (StrUtil.isNotEmpty(affiliate.getContactTelphoneAgent())) { + String sendContent = "尊敬的" + affiliate.getNameAgent() + "用户,您的" + application.getCaseNum() + "{2}仲裁案件,已成功受理,请知晓,如非本人操作,请忽略本短信"; + // 给申请人发送案件受理短信 尊敬的{1}用户,您的{2}仲裁案件,已成功受理,请知晓,如非本人操作,请忽略本短信 + Boolean smsFlag = SmsUtils.sendSms(application.getId(), "2049503", affiliate.getContactTelphoneAgent(), new String[]{affiliate.getNameAgent(), application.getCaseNum()}); + CaseLogUtils.insertCaseLog(application.getId(), caseFlow.getNodeId(), caseFlow.getNodeName(), "向申请人发送短信," + sendContent); + SmsSendRecord smsSendRecord = new SmsSendRecord(application.getId(), application.getCaseNum(), affiliate.getContactTelphoneAgent(), new Date(), sendContent); + if (smsFlag) { + // 发送成功 + smsSendRecord.setSendStatus(YesOrNoEnum.YES.getCode()); + } else { + smsSendRecord.setSendStatus(YesOrNoEnum.NO.getCode()); + } + smsRecordMapper.saveSmsSendRecord(smsSendRecord); + } + // 给申请人被申请人发送短信 + if (StrUtil.isNotEmpty(affiliate.getRespondentPhone())) { + String sendContent = "尊敬的" + affiliate.getRespondentName() + "用户,您的" + application.getCaseNum() + "{2}仲裁案件,已成功受理,请知晓,如非本人操作,请忽略本短信"; + // 给被申请人发送案件受理短信 尊敬的{1}用户,您的{2}仲裁案件,已成功受理,请知晓,如非本人操作,请忽略本短信 + Boolean smsFlag = SmsUtils.sendSms(application.getId(), "2049503", affiliate.getRespondentPhone(), new String[]{affiliate.getRespondentName(), application.getCaseNum()}); + CaseLogUtils.insertCaseLog(application.getId(), caseFlow.getNodeId(), caseFlow.getNodeName(), "向被申请人发送短信," + sendContent); + SmsSendRecord smsSendRecord = new SmsSendRecord(application.getId(), application.getCaseNum(), affiliate.getRespondentPhone(), new Date(), sendContent); + if (smsFlag) { + // 发送成功 + smsSendRecord.setSendStatus(YesOrNoEnum.YES.getCode()); + } else { + smsSendRecord.setSendStatus(YesOrNoEnum.NO.getCode()); + } + smsRecordMapper.saveSmsSendRecord(smsSendRecord); + } + } + } /** * 案件提交 * @param req @@ -819,18 +866,10 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService { return AjaxResult.error("暂无调解员"); } List userIds = users.stream().map(SysUser::getUserId).collect(Collectors.toList()); - // 查询调解员已办数量 - Map> recordMap =null; - List recordList = caseLogRecordMapper.selectCompleteByCreateBy(users.stream().map(SysUser::getUserName).collect(Collectors.toList())); - List recordCaeIdList = null; - if (CollectionUtil.isNotEmpty(recordList)) { - // 组装成id对应的list - recordMap = recordList.stream().collect(Collectors.groupingBy(MsCaseLogRecord::getCreateBy, Collectors.toList())); - recordCaeIdList = recordList.stream().map(MsCaseLogRecord::getCaseAppliId).collect(Collectors.toList()); - } - // 查询待办数量 + // todo 状态为未结束的是待办数量,结束的是已办数量 Map> caseMap=null; - List caseApplicationList = msCaseApplicationMapper.listMediator(userIds, recordCaeIdList); + + List caseApplicationList = msCaseApplicationMapper.listMediator(userIds); if (CollectionUtil.isNotEmpty(caseApplicationList)) { caseMap = caseApplicationList.stream().collect(Collectors.groupingBy(MsCaseApplication::getMediatorId, Collectors.toList())); @@ -840,66 +879,18 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService { mediatorVO.setMediatorId(user.getUserId()); mediatorVO.setMediatorName(user.getNickName()); mediatorVO.setSpecialty(user.getSpecialty()); - if(recordMap!=null &&recordMap.containsKey(String.valueOf(user.getUserName()))) { - mediatorVO.setCompleteAmount(recordMap.get(String.valueOf(user.getUserName())).size()); - } + if(caseMap!=null&&caseMap.containsKey(String.valueOf(user.getUserId()))) { - mediatorVO.setTodoAmount(caseMap.get(String.valueOf(user.getUserId())).size()); + List applications = caseMap.get(String.valueOf(user.getUserId())); + // 已办案件 + long count = applications.stream().filter(caseApplication -> !caseApplication.getCaseStatusName().equals("结束")).count(); + mediatorVO.setTodoAmount(applications.size()-count); + mediatorVO.setCompleteAmount(count); } mediatorVOS.add(mediatorVO); } return AjaxResult.success(mediatorVOS); } - @Transactional - public AjaxResult updateBooking1(BookingVO vo) { - // 查询被申请人是否预约过(从日志表查),否则不更新流程节点 - MsCaseAffiliate msCaseAffiliate = msCaseAffiliateMapper.selectByPrimaryKey(vo.getId()); - if(msCaseAffiliate==null) { - return AjaxResult.error("该案件不存在"); - } - MsCaseApplication application = new MsCaseApplication(); - application.setId(vo.getId()); - setMediatorAndDate(application,vo); - int applicantCount = msCaseApplicationMapper.updateByPrimaryKeySelective(application); - if(applicantCount<1){ - return AjaxResult.error("保存失败"); - } - // 查询当前节点 - MsCaseFlow currentFlow = caseFlowMapper.selectByPrimaryKey(vo.getCaseFlowId()); - if(currentFlow==null){ - return AjaxResult.error("当前流程不存在"); - } - CaseLogUtils.insertCaseLog(application.getId(), currentFlow.getNodeId(), currentFlow.getCaseStatusName(),"申请人选择调解员"); - - if(StrUtil.isNotEmpty(msCaseAffiliate.getRespondentIdentityNum())){ - // 根据身份证查询用户表 - SysUser user = userMapper.selectUserByIdCard(msCaseAffiliate.getRespondentIdentityNum()); - if(user!=null){ - MsCaseFlow nextFlow = caseFlowMapper.nextFlow(vo.getCaseFlowId()); - if(nextFlow==null){ - return AjaxResult.error("未找到下一个流程"); - } - // 查询日志中是否有该节点的被申请人操作 - Example example = new Example(MsCaseLogRecord.class); - Example.Criteria criteria = example.createCriteria(); - criteria.andEqualTo("caseAppliId", vo.getId()); - criteria.andEqualTo("caseNode", nextFlow.getNodeId()); - criteria.andEqualTo("caseStatusName", nextFlow.getCaseStatusName()); - criteria.andEqualTo("createBy", user.getUserName()); - int count = caseLogRecordMapper.selectCountByExample(example); - if(count>0){ - // 被申请人已预约,更新流程节点 - // 更改案件流程id和案件状态 - application.setCaseFlowId(nextFlow.getId()); - application.setCaseStatusName(nextFlow.getCaseStatusName()); - application.setLockStatus(null); - msCaseApplicationMapper.updateByPrimaryKeySelective(application); - // todo 发送短信 - } - } - } - return AjaxResult.success(); - } /** * 申请人/被申请人预约 @@ -1073,22 +1064,11 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService { if(user==null){ return AjaxResult.error("调解员已被删除"); } - // 查询调解员已办数量 - Map> recordMap =null; - List mediatorNames = new ArrayList<>(); - mediatorNames.add(user.getUserName()); - List recordList = caseLogRecordMapper.selectCompleteByCreateBy(mediatorNames); - List recordCaeIdList = null; - if (CollectionUtil.isNotEmpty(recordList)) { - // 组装成id对应的list - recordMap = recordList.stream().collect(Collectors.groupingBy(MsCaseLogRecord::getCreateBy, Collectors.toList())); - recordCaeIdList = recordList.stream().map(MsCaseLogRecord::getCaseAppliId).collect(Collectors.toList()); - } // 查询待办数量 List mediatorIds = new ArrayList<>(); mediatorIds.add(user.getUserId()); Map> caseMap=null; - List caseApplicationList = msCaseApplicationMapper.listMediator(mediatorIds, recordCaeIdList); + List caseApplicationList = msCaseApplicationMapper.listMediator(mediatorIds); if (CollectionUtil.isNotEmpty(caseApplicationList)) { caseMap = caseApplicationList.stream().collect(Collectors.groupingBy(MsCaseApplication::getMediatorId, Collectors.toList())); @@ -1097,11 +1077,13 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService { mediatorVO.setMediatorId(user.getUserId()); mediatorVO.setMediatorName(user.getNickName()); mediatorVO.setSpecialty(user.getSpecialty()); - if(recordMap!=null &&recordMap.containsKey(String.valueOf(user.getUserName()))) { - mediatorVO.setCompleteAmount(recordMap.get(String.valueOf(user.getUserName())).size()); - } + if(caseMap!=null&&caseMap.containsKey(String.valueOf(user.getUserId()))) { - mediatorVO.setTodoAmount(caseMap.get(String.valueOf(user.getUserId())).size()); + List applications = caseMap.get(String.valueOf(user.getUserId())); + // 已办案件 + long count = applications.stream().filter(caseApplication -> !caseApplication.getCaseStatusName().equals("结束")).count(); + mediatorVO.setTodoAmount(applications.size()-count); + mediatorVO.setCompleteAmount(count); } List mediatorVOS = new ArrayList<>(); mediatorVOS.add(mediatorVO); @@ -1740,53 +1722,7 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService { } - /** - * 案件受理 - * @param application - * @param req - * @param affiliateMap - */ - private void accept(MsCaseApplication application, MsCaseApplication req, Map affiliateMap) { - application.setUpdateBy(SecurityUtils.getUsername()); - application.setUpdateTime(new Date()); - application.setBatchNumber(null); - msCaseApplicationMapper.updateByPrimaryKeySelective(application); - MsCaseFlow caseFlow = nextFlow(application.getId(), req.getCaseFlowId(),req.getLockStatus()); - // 给申请人被申请人发送短信 - if (affiliateMap.containsKey(application.getId())) { - MsCaseAffiliate affiliate = affiliateMap.get(application.getId()); - if (StrUtil.isNotEmpty(affiliate.getContactTelphoneAgent())) { - String sendContent = "尊敬的" + affiliate.getNameAgent() + "用户,您的" + application.getCaseNum() + "{2}仲裁案件,已成功受理,请知晓,如非本人操作,请忽略本短信"; - // 给申请人发送案件受理短信 尊敬的{1}用户,您的{2}仲裁案件,已成功受理,请知晓,如非本人操作,请忽略本短信 - Boolean smsFlag = SmsUtils.sendSms(application.getId(), "2049503", affiliate.getContactTelphoneAgent(), new String[]{affiliate.getNameAgent(), application.getCaseNum()}); - CaseLogUtils.insertCaseLog(application.getId(), caseFlow.getNodeId(), caseFlow.getNodeName(), "向申请人发送短信," + sendContent); - SmsSendRecord smsSendRecord = new SmsSendRecord(application.getId(), application.getCaseNum(), affiliate.getContactTelphoneAgent(), new Date(), sendContent); - if (smsFlag) { - // 发送成功 - smsSendRecord.setSendStatus(YesOrNoEnum.YES.getCode()); - } else { - smsSendRecord.setSendStatus(YesOrNoEnum.NO.getCode()); - } - smsRecordMapper.saveSmsSendRecord(smsSendRecord); - } - // 给申请人被申请人发送短信 - if (StrUtil.isNotEmpty(affiliate.getRespondentPhone())) { - String sendContent = "尊敬的" + affiliate.getRespondentName() + "用户,您的" + application.getCaseNum() + "{2}仲裁案件,已成功受理,请知晓,如非本人操作,请忽略本短信"; - // 给被申请人发送案件受理短信 尊敬的{1}用户,您的{2}仲裁案件,已成功受理,请知晓,如非本人操作,请忽略本短信 - Boolean smsFlag = SmsUtils.sendSms(application.getId(), "2049503", affiliate.getRespondentPhone(), new String[]{affiliate.getRespondentName(), application.getCaseNum()}); - CaseLogUtils.insertCaseLog(application.getId(), caseFlow.getNodeId(), caseFlow.getNodeName(), "向被申请人发送短信," + sendContent); - SmsSendRecord smsSendRecord = new SmsSendRecord(application.getId(), application.getCaseNum(), affiliate.getRespondentPhone(), new Date(), sendContent); - if (smsFlag) { - // 发送成功 - smsSendRecord.setSendStatus(YesOrNoEnum.YES.getCode()); - } else { - smsSendRecord.setSendStatus(YesOrNoEnum.NO.getCode()); - } - smsRecordMapper.saveSmsSendRecord(smsSendRecord); - } - } - } /** * 流向下一个流程节点 diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/impl/VideoConferenceServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/impl/VideoConferenceServiceImpl.java index bd6ed7f..bd3e70a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/impl/VideoConferenceServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/impl/VideoConferenceServiceImpl.java @@ -11,7 +11,6 @@ import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.enums.AnnexTypeEnum; import com.ruoyi.common.utils.PdfUtils; import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.system.domain.entity.flow.MsCaseFlowRoleRelated; import com.ruoyi.system.mapper.SysRoleMapper; import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.wisdomarbitrate.domain.dto.mscase.ReservedConference; @@ -121,6 +120,8 @@ public class VideoConferenceServiceImpl implements VideoConferenceService { @Transactional @Override public AjaxResult reservedConference(MsReservedConferenceVO reservedConferenceVO) { + // 先删除之前的会议 + reservedConferenceMapper.deletByCaseId(reservedConferenceVO.getCaseId()); // 新增预约会议表 ReservedConference conference = new ReservedConference(reservedConferenceVO.getCaseId(), SecurityUtils.getUserId(), reservedConferenceVO.getRoomId(), @@ -183,7 +184,8 @@ public class VideoConferenceServiceImpl implements VideoConferenceService { // 新增预约会议表 ReservedConference conference = new ReservedConference(caseId, SecurityUtils.getUserId(), roomId, null, null); - reservedConferenceMapper.insert(conference); + // 先删除之前的会议 + reservedConferenceMapper.deletByCaseId(caseId); return String.valueOf(roomId); } @@ -203,7 +205,7 @@ public class VideoConferenceServiceImpl implements VideoConferenceService { } } - + @Transactional @Override public AjaxResult bindCaseId(Long caseId, String roomId) { MsCaseApplication caseApplication = new MsCaseApplication(); @@ -448,8 +450,8 @@ public class VideoConferenceServiceImpl implements VideoConferenceService { staticAndMksDir = Paths.get(absPath).toFile().toString(); long downloadFile = HttpUtil.downloadFile(fileUrl, staticAndMksDir); if(downloadFile>0) { - Example example = new Example(MsCaseFlowRoleRelated.class); - example.createCriteria().andEqualTo("romId", roomId); + Example example = new Example(MsCaseApplication.class); + example.createCriteria().andEqualTo("roomId", roomId); MsCaseApplication caseApplication = caseApplicationMapper.selectOneByExample(example); if(caseApplication != null) { String annexName = getPathFileName(RuoYiConfig.getVideoUploadPath(), fileName); diff --git a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/mscase/MsCaseApplicationMapper.xml b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/mscase/MsCaseApplicationMapper.xml index eb3bc80..c352186 100644 --- a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/mscase/MsCaseApplicationMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/mscase/MsCaseApplicationMapper.xml @@ -11,7 +11,8 @@ - + + @@ -39,18 +40,18 @@ \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/mscase/MsReservedConferenceMapper.xml b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/mscase/MsReservedConferenceMapper.xml index 193e69d..a416746 100644 --- a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/mscase/MsReservedConferenceMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/mscase/MsReservedConferenceMapper.xml @@ -28,6 +28,9 @@ #{item} + + delete from ms_reserved_conference where case_id=#{caseId} +