Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev

This commit was merged in pull request #43.
This commit is contained in:
2024-01-25 15:30:02 +08:00
committed by Gitea
8 changed files with 93 additions and 144 deletions
@@ -259,6 +259,7 @@ public class MsCaseApplicationController extends BaseController {
}
return AjaxResult.success(videoService.generateUserSign(userId));
}
/**
* 生成房间号
* @return
@@ -26,9 +26,9 @@ public class MediatorVO {
/**
* 待办数量
*/
private Integer todoAmount;
private Long todoAmount;
/**
* 已办数量
*/
private Integer completeAmount;
private Long completeAmount;
}
@@ -149,7 +149,7 @@ public interface MsCaseApplicationMapper extends Mapper<MsCaseApplication> {
* 查询调解员列表
* @return
*/
List<MsCaseApplication> listMediator( @Param("userIds") List<Long> userIds,@Param("recordCaeIdList") List<Long> recordCaeIdList);
List<MsCaseApplication> listMediator( @Param("userIds") List<Long> userIds);
/**
* 查询最大房间号
@@ -37,4 +37,10 @@ public interface ReservedConferenceMapper {
void batchDeleteByIds(@Param("ids") List<Long> ids);
/**
* 根据案件id删除已预约的会议
* @param caseId
*/
void deletByCaseId(@Param("caseId") Long caseId);
}
@@ -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<Long, MsCaseAffiliate> 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<Long, MsCaseAffiliate> 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<Long> userIds = users.stream().map(SysUser::getUserId).collect(Collectors.toList());
// 查询调解员已办数量
Map<String, List<MsCaseLogRecord>> recordMap =null;
List<MsCaseLogRecord> recordList = caseLogRecordMapper.selectCompleteByCreateBy(users.stream().map(SysUser::getUserName).collect(Collectors.toList()));
List<Long> 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<String, List<MsCaseApplication>> caseMap=null;
List<MsCaseApplication> caseApplicationList = msCaseApplicationMapper.listMediator(userIds, recordCaeIdList);
List<MsCaseApplication> 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<MsCaseApplication> 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<String, List<MsCaseLogRecord>> recordMap =null;
List<String> mediatorNames = new ArrayList<>();
mediatorNames.add(user.getUserName());
List<MsCaseLogRecord> recordList = caseLogRecordMapper.selectCompleteByCreateBy(mediatorNames);
List<Long> 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<Long> mediatorIds = new ArrayList<>();
mediatorIds.add(user.getUserId());
Map<String, List<MsCaseApplication>> caseMap=null;
List<MsCaseApplication> caseApplicationList = msCaseApplicationMapper.listMediator(mediatorIds, recordCaeIdList);
List<MsCaseApplication> 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<MsCaseApplication> 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<MediatorVO> 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<Long, MsCaseAffiliate> 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);
}
}
}
/**
* 流向下一个流程节点
@@ -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);
@@ -11,7 +11,8 @@
<result column="case_num" jdbcType="VARCHAR" property="caseNum" />
<result column="case_subject_amount" jdbcType="DECIMAL" property="caseSubjectAmount" />
<result column="mediation_method" jdbcType="CHAR" property="mediationMethod" />
<result column="case_status" jdbcType="INTEGER" property="caseStatus" />
<result column="case_status_name" jdbcType="VARCHAR" property="caseStatusName" />
<result column="case_flow_id" jdbcType="BIGINT" property="caseFlowId" />
<result column="hear_date" jdbcType="TIMESTAMP" property="hearDate" />
<result column="fee_payable" jdbcType="DECIMAL" property="feePayable" />
<result column="mediator_id" jdbcType="BIGINT" property="mediatorId" />
@@ -39,18 +40,18 @@
</resultMap>
<select id="listMediator" resultMap="BaseResultMap">
select mediator_id ,id from ms_case_application <where>
select mediator_id ,id ,case_status_name,case_flow_id from ms_case_application <where>
<if test = 'userIds!=null and userIds.size()>0'>
and mediator_id in
<foreach item='item' index='index' collection='userIds' open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
<if test = 'recordCaeIdList!=null and recordCaeIdList.size()>0'> and id not in
<!-- <if test = 'recordCaeIdList!=null and recordCaeIdList.size()>0'> and id not in
<foreach item='id' index='index' collection='recordCaeIdList' open='(' separator=',' close=')'>
#{id}
</foreach>
</if>
</if> -->
</where>
</select>
</mapper>
@@ -28,6 +28,9 @@
#{item}
</foreach>
</delete>
<delete id="deletByCaseId">
delete from ms_reserved_conference where case_id=#{caseId}
</delete>
<select id="selectListByCaseId" resultType="com.ruoyi.wisdomarbitrate.domain.dto.mscase.ReservedConference">
select id, case_id caseId,room_id roomId,schedule_start_time scheduleStartTime,schedule_end_time scheduleEndTime,user_id userId
from ms_reserved_conference where case_id=#{caseId}