|
|
|
@ -16,18 +16,149 @@ |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
package org.springblade.modules.business.service.impl; |
|
|
|
package org.springblade.modules.business.service.impl; |
|
|
|
|
|
|
|
|
|
|
|
import org.springblade.modules.business.entity.AppealMediation; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
|
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
|
|
|
|
import org.springblade.common.constant.BusinessConstant; |
|
|
|
|
|
|
|
import org.springblade.core.tool.utils.BeanUtil; |
|
|
|
|
|
|
|
import org.springblade.core.tool.utils.Func; |
|
|
|
|
|
|
|
import org.springblade.modules.business.entity.*; |
|
|
|
import org.springblade.modules.business.mapper.AppealMediationMapper; |
|
|
|
import org.springblade.modules.business.mapper.AppealMediationMapper; |
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl; |
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl; |
|
|
|
import org.springblade.modules.business.service.IAppealMediationService; |
|
|
|
import org.springblade.modules.business.mapper.AppealVisitorMapper; |
|
|
|
|
|
|
|
import org.springblade.modules.business.service.*; |
|
|
|
|
|
|
|
import org.springblade.modules.business.vo.AppealMediationDetailListVO; |
|
|
|
|
|
|
|
import org.springblade.modules.business.vo.AppealMediationVO; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* 服务实现类 |
|
|
|
* 服务实现类 |
|
|
|
* |
|
|
|
* |
|
|
|
* @author BladeX |
|
|
|
* @author BladeX |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@Service |
|
|
|
@Service |
|
|
|
|
|
|
|
@RequiredArgsConstructor |
|
|
|
public class AppealMediationServiceImpl extends BaseServiceImpl<AppealMediationMapper, AppealMediation> implements IAppealMediationService { |
|
|
|
public class AppealMediationServiceImpl extends BaseServiceImpl<AppealMediationMapper, AppealMediation> implements IAppealMediationService { |
|
|
|
|
|
|
|
private final IAppealService appealService; |
|
|
|
|
|
|
|
private final IAppealRegService appealRegService; |
|
|
|
|
|
|
|
private final AppealVisitorMapper visitorMapper; |
|
|
|
|
|
|
|
private final IAppealMediationFileService fileService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public AppealMediationVO getNewestReg(String appealId) { |
|
|
|
|
|
|
|
return getMediationDetail(appealId, null); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public AppealMediationVO detail(String mediateId) { |
|
|
|
|
|
|
|
AppealMediation mediation = baseMapper.selectById(mediateId); |
|
|
|
|
|
|
|
if (Func.isEmpty(mediation)) { |
|
|
|
|
|
|
|
return null; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return getMediationDetail(mediation.getAppealId().toString(), mediateId); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public boolean saveMediate(AppealMediationVO entity) { |
|
|
|
|
|
|
|
// 解析保存数据, 构建保存对象
|
|
|
|
|
|
|
|
Appeal appeal = BeanUtil.copy(entity, Appeal.class); |
|
|
|
|
|
|
|
appeal.setId(entity.getAppealId()); |
|
|
|
|
|
|
|
AppealReg reg = BeanUtil.copy(entity, AppealReg.class); |
|
|
|
|
|
|
|
AppealMediation mediation = BeanUtil.copy(entity, AppealMediation.class); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (Func.isEmpty(appeal)) |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
appeal.setSourceType(BusinessConstant.SOURCE_TYPE_SYSTEM); |
|
|
|
|
|
|
|
// 更新诉求和诉求登记的信息
|
|
|
|
|
|
|
|
appeal.setSkipGrant(appeal.getSkipGrant() == -1 ? BusinessConstant.CODE_FALSE : appeal.getSkipGrant()); |
|
|
|
|
|
|
|
appeal.setDisputeLevel(appeal.getDisputeLevel() == -1 ? BusinessConstant.DISPUTE_LEVEL_ZERO : appeal.getDisputeLevel()); |
|
|
|
|
|
|
|
appealService.updateById(appeal); |
|
|
|
|
|
|
|
reg.setId(entity.getAppealRegId()); |
|
|
|
|
|
|
|
appealRegService.updateById(reg); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<AppealMediationDetailListVO> talkingHisList = entity.getTalkingHisList(); |
|
|
|
|
|
|
|
if (Func.isEmpty(talkingHisList)) |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
mediation.setTalkingTime(talkingHisList.get(0).getTalkingTime()); |
|
|
|
|
|
|
|
mediation.setTalkingHis(talkingHisList.get(0).getTalkingHis()); |
|
|
|
|
|
|
|
save(mediation); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<AppealMediationFile> fileList = entity.getFileList(); |
|
|
|
|
|
|
|
fileList.forEach(file -> { |
|
|
|
|
|
|
|
file.setAppealId(mediation.getAppealId()); |
|
|
|
|
|
|
|
file.setAppealId(mediation.getAppealRegId()); |
|
|
|
|
|
|
|
file.setMediationId(mediation.getId()); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
fileService.saveBatch(fileList); |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private AppealMediationVO getMediationDetail(String appealId, String mediationId) { |
|
|
|
|
|
|
|
AppealMediationVO vo = new AppealMediationVO(); |
|
|
|
|
|
|
|
Appeal appeal = appealService.getById(appealId); |
|
|
|
|
|
|
|
if (Func.isEmpty(appeal)) { |
|
|
|
|
|
|
|
return null; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取全部调解记录, 按照时间顺序排列
|
|
|
|
|
|
|
|
List<AppealMediation> mediationList = baseMapper.selectList( |
|
|
|
|
|
|
|
Wrappers.<AppealMediation>lambdaQuery().eq(AppealMediation::getAppealId, appealId)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 转化为谈话记录列表
|
|
|
|
|
|
|
|
List<AppealMediationDetailListVO> detailList = new ArrayList<>(); |
|
|
|
|
|
|
|
mediationList.forEach(mediation -> { |
|
|
|
|
|
|
|
AppealMediationDetailListVO listVO = BeanUtil.copy(mediation, AppealMediationDetailListVO.class); |
|
|
|
|
|
|
|
listVO.setMediationId(mediation.getId()); |
|
|
|
|
|
|
|
detailList.add(listVO); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 若未指定调解记录, 取最后一次, 否则取指定的调解记录
|
|
|
|
|
|
|
|
AppealMediation mediation = null; |
|
|
|
|
|
|
|
if (Func.isNotBlank(mediationId)) { |
|
|
|
|
|
|
|
mediation = mediationList.stream().filter(o -> o.getId() == Long.parseLong(mediationId)).findAny().orElse(null); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 若指定调解记录, 获取该记录对应的登记, 否则取最后一次登记记录
|
|
|
|
|
|
|
|
AppealReg appealReg = Func.isEmpty(mediation) ? appealRegService.getLastReg(appealId) : appealRegService.getById(mediation.getAppealRegId()); |
|
|
|
|
|
|
|
// 获取登记的来访人员
|
|
|
|
|
|
|
|
List<AppealVisitor> visitorList = visitorMapper.selectList( |
|
|
|
|
|
|
|
Wrappers.<AppealVisitor>lambdaQuery().eq(AppealVisitor::getAppealRegId, appealReg.getId())); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 4. 组织返回对象数据
|
|
|
|
|
|
|
|
vo.setAppealId(Long.valueOf(appealId)); |
|
|
|
|
|
|
|
vo.setVisitors(visitorList); |
|
|
|
|
|
|
|
vo.setStreetId(appeal.getStreetId()); |
|
|
|
|
|
|
|
vo.setDisputeId(appeal.getDisputeId()); |
|
|
|
|
|
|
|
vo.setDisputeName(appeal.getDisputeName()); |
|
|
|
|
|
|
|
vo.setDisposeDept(appealReg.getDisposeDept()); |
|
|
|
|
|
|
|
vo.setDisposeDeptName(appealReg.getDisposeDeptName()); |
|
|
|
|
|
|
|
vo.setProtocol(appealReg.getProtocol()); |
|
|
|
|
|
|
|
vo.setOpinion(appealReg.getOpinion()); |
|
|
|
|
|
|
|
vo.setReviewOpinion(appealReg.getReviewOpinion()); |
|
|
|
|
|
|
|
vo.setLegalPaper(appealReg.getLegalPaper()); |
|
|
|
|
|
|
|
vo.setFirstRegTime(appeal.getFirstRegTime()); |
|
|
|
|
|
|
|
vo.setProblemDesc(appeal.getProblemDesc()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vo.setTalkingHisList(detailList); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (Func.isNotEmpty(mediation)) { |
|
|
|
|
|
|
|
List<AppealMediationFile> fileList = fileService.list( |
|
|
|
|
|
|
|
Wrappers.<AppealMediationFile>lambdaQuery().eq(AppealMediationFile::getMediationId, mediation.getId())); |
|
|
|
|
|
|
|
vo.setAttitude(mediation.getAttitude()); |
|
|
|
|
|
|
|
vo.setTalkingAdvice(mediation.getAttitude()); |
|
|
|
|
|
|
|
vo.setDutyDeptIds(mediation.getAttitude()); |
|
|
|
|
|
|
|
vo.setCopyDeptIds(mediation.getAttitude()); |
|
|
|
|
|
|
|
vo.setDisputeLevel(appeal.getDisputeLevel()); |
|
|
|
|
|
|
|
vo.setFeedbackDeadline(mediation.getFeedbackDeadline()); |
|
|
|
|
|
|
|
vo.setFinishDeadline(mediation.getFinishDeadline()); |
|
|
|
|
|
|
|
vo.setRemark(mediation.getRemark()); |
|
|
|
|
|
|
|
vo.setSubmitTime(mediation.getSubmitTime()); |
|
|
|
|
|
|
|
vo.setFileList(fileList); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return vo; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|