package cn.huge.module.draft.service; import cn.huge.base.common.exception.ServiceException; import cn.huge.base.common.utils.DateUtils; import cn.huge.base.common.utils.IdUtils; import cn.huge.module.cases.domain.dto.RegisterSaveDTO; import cn.huge.module.cases.domain.po.CaseAgent; import cn.huge.module.cases.domain.po.CaseInfo; import cn.huge.module.cases.domain.po.CaseInfoUnfold; import cn.huge.module.cases.domain.po.CasePerson; import cn.huge.module.client.api.impl.CustClientImpl; import cn.huge.module.client.api.impl.UtilsClientImpl; import cn.huge.module.constant.BaseConsts; import cn.huge.module.constant.CaseBaseConsts; import cn.huge.module.constant.CaseBaseConstsEnum; import cn.huge.module.cust.dto.CtUserDTO; import cn.huge.module.draft.dao.mapper.CasedraftInfoMapper; import cn.huge.module.draft.domain.dto.DraftRegisterSaveDTO; import cn.huge.module.draft.domain.po.CasedraftAgent; import cn.huge.module.draft.domain.po.CasedraftInfo; import cn.huge.module.draft.domain.po.CasedraftPerson; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; /** * @title: 纠纷信息草稿表业务逻辑处理 * @Description 纠纷信息草稿表业务逻辑处理 * @company hugeinfo * @author wangwh * @Time 2024-08-27 10:48:18 * @version 1.0.0 */ @Slf4j @Service @Transactional(rollbackFor = Exception.class) public class CasedraftInfoService extends ServiceImpl{ @Autowired private CasedraftInfoMapper mapper; @Autowired private UtilsClientImpl utilsClient; @Autowired private CasedraftPersonService draftPersonService; @Autowired private CasedraftAgentService draftAgentService; @Autowired private CustClientImpl custClient; /** * 更新对象 * @param entity 对象 */ public void updateCasedraftInfo(CasedraftInfo entity){ try{ mapper.updateCasedraftInfo(entity); }catch (Exception e){ log.error("[CasedraftInfoService.updateCasedraftInfo]调用失败,异常信息:"+e, e); throw new ServiceException("CasedraftInfoService.updateCasedraftInfo", e); } } /** * 条件更新对象 * @param entity 对象 * @param terms 条件 */ public void updateCasedraftInfoTerms(CasedraftInfo entity, Map terms){ try{ mapper.updateCasedraftInfoTerms(entity, terms); }catch (Exception e){ log.error("[CasedraftInfoService.updateCasedraftInfoTerms]调用失败,异常信息:"+e, e); throw new ServiceException("CasedraftInfoService.updateCasedraftInfoTerms", e); } } /** * 根据编号物理删除 * @param id 查询条件集合 */ public void deleteCasedraftInfo(String id){ try{ mapper.deleteCasedraftInfo(id); }catch (Exception e){ log.error("[CasedraftInfoService.deleteCasedraftInfo]调用失败,异常信息:"+e, e); throw new ServiceException("CasedraftInfoService.deleteCasedraftInfo", e); } } /** * 按条件查询 * @param terms 条件 * @return List */ public List listTerms(Map terms){ return mapper.listTerms(terms); } /** * 按条件统计 * @param terms 条件 * @return long */ public long countTerms(Map terms){ return mapper.countTerms(terms); } /** * 按条件分页查询 * @param page 分页对象 * @param terms 条件 * @return Page */ public Page pageQuery(PageRequest page, Map terms){ long total = mapper.countTerms(terms); List content = mapper.pageTerms(page, terms); return new PageImpl(content, page, total); } /** * 新增或更新对象 * @param casedraftInfo 实体对象 */ public void saveCasedraftInfo(CasedraftInfo casedraftInfo){ try{ Date nowDate = DateUtils.getNowDate(); // 判断是否新增 if (IdUtils.checkNewId(casedraftInfo.getId())){ casedraftInfo.setId(utilsClient.getNewTimeId()); casedraftInfo.setCreateTime(nowDate); } casedraftInfo.setUpdateTime(nowDate); this.saveOrUpdate(casedraftInfo); }catch (Exception e){ log.error("[CasedraftInfoService.saveCasedraftInfo]调用失败,异常信息:"+e, e); throw new ServiceException("CasedraftInfoService.saveCasedraftInfo", e); } } /** * PC端-纠纷登记-保存纠纷草稿信息 * @param draftRegisterSaveDTO 纠纷草稿信息 * @param userId 操作人 * @return String 纠纷编号 */ public String caseDraftRegister(DraftRegisterSaveDTO draftRegisterSaveDTO, String userId){ try { // 获取当前登录用户 CtUserDTO loginUser = custClient.clientGetUserAll(userId); Date nowDate = DateUtils.getNowDate(); StringBuffer plaintiffs = new StringBuffer(); StringBuffer defendants = new StringBuffer(); StringBuffer pagents = new StringBuffer(); StringBuffer dagents = new StringBuffer(); int peopleNum = 0; CasedraftInfo casedraftInfo = new CasedraftInfo(); CaseInfoUnfold caseInfoUnfold = new CaseInfoUnfold(); BeanUtils.copyProperties(draftRegisterSaveDTO, casedraftInfo); casedraftInfo.setId(utilsClient.getNewTimeId()); casedraftInfo.setInputUnitId(loginUser.getUnitId()); casedraftInfo.setInputUnitName(loginUser.getUnitName()); casedraftInfo.setInputUserId(loginUser.getId()); casedraftInfo.setInputUserName(loginUser.getTrueName()); casedraftInfo.setInputWay(CaseBaseConsts.INPUT_WAY_1); casedraftInfo.setCreateTime(nowDate); casedraftInfo.setUpdateTime(nowDate); //todo case_title // 常规登记-保存当事人 peopleNum += this.saveCaseDraftPerson(draftRegisterSaveDTO, plaintiffs, pagents, defendants, dagents); casedraftInfo.setPeopleNum(peopleNum); casedraftInfo.setPlaintiffs(plaintiffs.toString()); casedraftInfo.setPagents(pagents.toString()); casedraftInfo.setDefendants(defendants.toString()); casedraftInfo.setDagents(dagents.toString()); this.saveOrUpdate(casedraftInfo); return draftRegisterSaveDTO.getId(); }catch (Exception e){ log.error("service方法[CaseInfoService.caseDraftRegister]调用异常:"+e, e); throw new ServiceException("CaseInfoService.caseDraftRegister", e); } } /** * pc端-常规登记-保存草稿案件-保存人员信息 * @param draftRegisterSaveDTO 纠纷信息 * @param plaintiffs 申请人 * @param pagents 申请人代理人 * @param defendants 被申请人 * @param dagents 被申请人代理人 * @return int */ private int saveCaseDraftPerson(DraftRegisterSaveDTO draftRegisterSaveDTO, StringBuffer plaintiffs, StringBuffer pagents, StringBuffer defendants, StringBuffer dagents){ int peopleNum = 0; List newDraftPersonIdList = new ArrayList<>(); List newDraftAgentIdList = new ArrayList<>(); // 保存申请人 List plaintPersonList = draftRegisterSaveDTO.getPlaintiffList(); if (CollectionUtils.isNotEmpty(plaintPersonList)) { for (CasedraftPerson casedraftPerson : plaintPersonList) { newDraftPersonIdList.add(casedraftPerson.getId()); casedraftPerson.setCaseId(draftRegisterSaveDTO.getId()); casedraftPerson.setPerType(CaseBaseConstsEnum.PERSON_TYPE_1.getIndex()); casedraftPerson.setPerTypeName(CaseBaseConstsEnum.PERSON_TYPE_1.getDes()); casedraftPerson.setCustId(draftRegisterSaveDTO.getCustId()); casedraftPerson.setCreateTime(draftRegisterSaveDTO.getUpdateTime()); casedraftPerson.setUpdateTime(draftRegisterSaveDTO.getUpdateTime()); draftPersonService.saveOrUpdate(casedraftPerson); if (StringUtils.isNotEmpty(plaintiffs.toString())) { plaintiffs.append(BaseConsts.COMMA); } plaintiffs.append(casedraftPerson.getTrueName()); peopleNum++; } //保存代理人 List pagentList = draftRegisterSaveDTO.getPagentList(); if (CollectionUtils.isNotEmpty(pagentList)) { for(CasedraftAgent casedraftAgent: pagentList){ newDraftAgentIdList.add(casedraftAgent.getId()); casedraftAgent.setId(utilsClient.getNewTimeId()); casedraftAgent.setCaseId(draftRegisterSaveDTO.getId()); casedraftAgent.setAgentTypeName(CaseBaseConstsEnum.getDes(casedraftAgent.getAgentType())); casedraftAgent.setCustId(draftRegisterSaveDTO.getCustId()); casedraftAgent.setCreateTime(draftRegisterSaveDTO.getUpdateTime()); casedraftAgent.setUpdateTime(draftRegisterSaveDTO.getUpdateTime()); draftAgentService.saveOrUpdate(casedraftAgent); if (StringUtils.isNotEmpty(pagents.toString())) { pagents.append(BaseConsts.COMMA); } pagents.append(casedraftAgent.getTrueName()); } //todo 绑定当事人小程序 } } // 保存被申请人 List defendPersonList = draftRegisterSaveDTO.getDefendantList(); if(CollectionUtils.isNotEmpty(defendPersonList)){ for (CasedraftPerson casedraftPerson : defendPersonList) { newDraftPersonIdList.add(casedraftPerson.getId()); casedraftPerson.setCaseId(draftRegisterSaveDTO.getId()); casedraftPerson.setPerType(CaseBaseConstsEnum.PERSON_TYPE_2.getIndex()); casedraftPerson.setPerTypeName(CaseBaseConstsEnum.PERSON_TYPE_2.getDes()); casedraftPerson.setCustId(draftRegisterSaveDTO.getCustId()); casedraftPerson.setCreateTime(draftRegisterSaveDTO.getUpdateTime()); casedraftPerson.setUpdateTime(draftRegisterSaveDTO.getUpdateTime()); //todo 绑定当事人小程序 draftPersonService.saveOrUpdate(casedraftPerson); if (StringUtils.isNotEmpty(defendants.toString())) { defendants.append(BaseConsts.COMMA); } defendants.append(casedraftPerson.getTrueName()); peopleNum++; } //保存代理人 List pagentList = draftRegisterSaveDTO.getPagentList(); if (CollectionUtils.isNotEmpty(pagentList)) { for(CasedraftAgent casedraftAgent: pagentList){ newDraftAgentIdList.add(casedraftAgent.getId()); casedraftAgent.setId(utilsClient.getNewTimeId()); casedraftAgent.setCaseId(draftRegisterSaveDTO.getId()); casedraftAgent.setAgentTypeName(CaseBaseConstsEnum.getDes(casedraftAgent.getAgentType())); casedraftAgent.setCustId(draftRegisterSaveDTO.getCustId()); casedraftAgent.setCreateTime(draftRegisterSaveDTO.getUpdateTime()); casedraftAgent.setUpdateTime(draftRegisterSaveDTO.getUpdateTime()); draftAgentService.saveOrUpdate(casedraftAgent); if (StringUtils.isNotEmpty(dagents.toString())) { dagents.append(BaseConsts.COMMA); } dagents.append(casedraftAgent.getTrueName()); } } } // 删除冗余的申请人 if (CollectionUtils.isNotEmpty(newDraftPersonIdList)) { List oldPersonIdList = draftPersonService.listIdByCaseId(draftRegisterSaveDTO.getId()); for (String oldPersonId : oldPersonIdList) { if (!newDraftPersonIdList.contains(oldPersonId)) { draftPersonService.removeById(oldPersonId); } } }else{ QueryWrapper casedraftPersonQueryWrapper = new QueryWrapper<>(); casedraftPersonQueryWrapper.eq("case_id", draftRegisterSaveDTO.getId()); draftPersonService.remove(casedraftPersonQueryWrapper); } //删除冗余的代理人 if(CollectionUtils.isNotEmpty(newDraftAgentIdList)){ List oldAgentIdList = draftAgentService.listIdByCaseId(draftRegisterSaveDTO.getId()); for(String oldAgentId: oldAgentIdList){ if(!newDraftAgentIdList.contains(oldAgentId)){ draftAgentService.removeById(oldAgentId); } } }else{ QueryWrapper casedraftAgentQueryWrapper = new QueryWrapper<>(); casedraftAgentQueryWrapper.eq("case_id", draftRegisterSaveDTO.getId()); draftAgentService.remove(casedraftAgentQueryWrapper); } return peopleNum; } /** * PC端-纠纷登记-草稿箱-删除纠纷草稿案件 * @param caseId 纠纷/系列案编号 * @return CaseInfo 纠纷信息 */ public void removeDraftInfo(String caseId){ try{ // 删除纠纷草稿信息 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("serie_no", caseId); List draftInfoList = mapper.selectList(queryWrapper); List ownerIdList = new ArrayList<>(); for (CasedraftInfo casedraftInfo : draftInfoList) { ownerIdList.add(casedraftInfo.getId()); mapper.deleteById(casedraftInfo.getId()); // 删除当事人信息 QueryWrapper casedraftPersonQueryWrapper = new QueryWrapper<>(); casedraftPersonQueryWrapper.eq("case_id", casedraftInfo.getId()); draftPersonService.remove(casedraftPersonQueryWrapper); // 删除代理人信息 QueryWrapper casedraftAgentQueryWrapper = new QueryWrapper<>(); casedraftAgentQueryWrapper.eq("case_id", casedraftInfo.getId()); //todo 删除附件关系 // FileTypeTermsDTO fileTypeTermsDTO = new FileTypeTermsDTO(); // fileTypeTermsDTO.setOwnerIdList(ownerIdList); // sysClient.removeFileRelate(fileTypeTermsDTO); } }catch (Exception e){ log.error("service方法[CasedraftInfoService.removeDraftInfo]调用异常:"+e, e); throw new ServiceException("CasedraftInfoService.removeDraftInfo", e); } } }