forked from gzzfw/backEnd/gz-dyh

wangwh
2024-09-10 0ff182e7668997dfb7e4348215043ccb013a3824
dyh-service/dyh-mediate/src/main/java/cn/huge/module/draft/service/CasedraftInfoService.java
@@ -3,18 +3,27 @@
import cn.huge.base.common.exception.ServiceException;
import cn.huge.base.common.utils.DateUtils;
import cn.huge.base.common.utils.IdUtils;
import cn.huge.base.common.utils.ObjectUtils;
import cn.huge.module.cases.domain.dto.CaseInfoDTO;
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.client.api.impl.CustClientImpl;
import cn.huge.module.client.api.impl.SysClientImpl;
import cn.huge.module.client.api.impl.UtilsClientImpl;
import cn.huge.module.constant.BaseConsts;
import cn.huge.module.mediate.constant.CaseBaseConsts;
import cn.huge.module.mediate.constant.CaseBaseConstsEnum;
import cn.huge.module.cust.dto.CtUserDTO;
import cn.huge.module.draft.dao.mapper.CasedraftInfoMapper;
import cn.huge.module.draft.domain.dto.CasedraftInfoDTO;
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 cn.huge.module.sys.dto.FileIdTypeInfoBaseDTO;
import cn.huge.module.sys.dto.FileTypeTermsDTO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.collections.CollectionUtils;
@@ -28,10 +37,8 @@
import org.springframework.data.domain.PageRequest;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @title: 纠纷信息草稿表业务逻辑处理
@@ -60,6 +67,9 @@
    @Autowired
    private CustClientImpl custClient;
    @Autowired
    private SysClientImpl sysClient;
    /**
    * 更新对象
@@ -167,28 +177,18 @@
            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.setCustId(loginUser.getCustId());
            casedraftInfo.setUpdateTime(nowDate);
            //todo case_title
            // 常规登记-保存当事人
            peopleNum += this.saveCaseDraftPerson(draftRegisterSaveDTO, plaintiffs, pagents, defendants, dagents);
            casedraftInfo.setPeopleNum(peopleNum);
            this.saveCaseDraftPerson(draftRegisterSaveDTO, plaintiffs, pagents, defendants, dagents);
            casedraftInfo.setPlaintiffs(plaintiffs.toString());
            casedraftInfo.setPagents(pagents.toString());
            casedraftInfo.setDefendants(defendants.toString());
            casedraftInfo.setDagents(dagents.toString());
            this.saveOrUpdate(casedraftInfo);
@@ -208,123 +208,109 @@
     * @param dagents 被申请人代理人
     * @return int
     */
    private int saveCaseDraftPerson(DraftRegisterSaveDTO draftRegisterSaveDTO, StringBuffer plaintiffs, StringBuffer pagents,
                               StringBuffer defendants, StringBuffer dagents){
        int peopleNum = 0;
        List<String> newDraftPersonIdList = new ArrayList<>();
        List<String> newDraftAgentIdList = new ArrayList<>();
        // 保存申请人
        List<CasedraftPerson> plaintPersonList = draftRegisterSaveDTO.getPlaintiffList();
        if (CollectionUtils.isNotEmpty(plaintPersonList)) {
            for (CasedraftPerson casedraftPerson : plaintPersonList) {
                newDraftPersonIdList.add(casedraftPerson.getId());
    private void saveCaseDraftPerson(DraftRegisterSaveDTO draftRegisterSaveDTO, StringBuffer plaintiffs, StringBuffer pagents,
                                StringBuffer defendants, StringBuffer dagents){
        Date now = DateUtils.getNowDate();
        List<CasedraftPerson> casedraftPersonList = draftRegisterSaveDTO.getPersonList();
        List<CasedraftAgent> casedraftAgentList = draftRegisterSaveDTO.getAgentList();
        //查出已存在的当事人和代理人编号
        List<String> oldPersonIdList = draftPersonService.listIdByCaseId(draftRegisterSaveDTO.getId());
        List<String> oldAgentIdList = draftAgentService.listIdByCaseId(draftRegisterSaveDTO.getId());
        String oldPersonIds = oldPersonIdList.stream().map(String::valueOf).collect(Collectors.joining(","));
        String oldAgentIds = oldAgentIdList.stream().map(String::valueOf).collect(Collectors.joining(","));
        List<String> newPersonIdList = new ArrayList<>();
        List<String> newAgentIdList = new ArrayList<>();
        if(CollectionUtils.isNotEmpty(casedraftPersonList)){
            for(CasedraftPerson casedraftPerson: casedraftPersonList){
                newPersonIdList.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());
                casedraftPerson.setUpdateTime(now);
                draftPersonService.saveOrUpdate(casedraftPerson);
                if (StringUtils.isNotEmpty(plaintiffs.toString())) {
                    plaintiffs.append(BaseConsts.COMMA);
                //添加申请方和被申请方人名组合
                if(CaseBaseConstsEnum.PERSON_TYPE_1.getIndex().equals(casedraftPerson.getPerType())){
                    //申请方
                    if (StringUtils.isNotEmpty(plaintiffs.toString())) {
                        plaintiffs.append(BaseConsts.COMMA);
                    }
                    plaintiffs.append(casedraftPerson.getTrueName());
                }else if(CaseBaseConstsEnum.PERSON_TYPE_2.getIndex().equals(casedraftPerson.getPerType())){
                    //被申请方
                    if (StringUtils.isNotEmpty(defendants.toString())) {
                        defendants.append(BaseConsts.COMMA);
                    }
                    defendants.append(casedraftPerson.getTrueName());
                }
                plaintiffs.append(casedraftPerson.getTrueName());
                peopleNum++;
                //判断是否为更新(用原有的Id对比性的Id)
                if(oldPersonIds.contains(casedraftPerson.getId())){
                    draftPersonService.updateById(casedraftPerson);
                }else{
                    casedraftPerson.setCreateTime(now);
                    draftPersonService.save(casedraftPerson);
                }
            }
            //保存代理人
            List<CasedraftAgent> 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(CollectionUtils.isNotEmpty(casedraftAgentList)) {
            for (CasedraftAgent casedraftAgent : casedraftAgentList) {
                newAgentIdList.add(casedraftAgent.getId());
                casedraftAgent.setCaseId(draftRegisterSaveDTO.getId());
                casedraftAgent.setAgentTypeName(CaseBaseConstsEnum.getDes(casedraftAgent.getAgentType()));
                casedraftAgent.setCustId(draftRegisterSaveDTO.getCustId());
                casedraftAgent.setUpdateTime(now);
                if(CaseBaseConstsEnum.PERSON_TYPE_3.getIndex().equals(casedraftAgent.getPerType())) {
                    if (StringUtils.isNotEmpty(pagents.toString())) {
                        pagents.append(BaseConsts.COMMA);
                    }
                    pagents.append(casedraftAgent.getTrueName());
                }
                //todo 绑定当事人小程序
            }
        }
        // 保存被申请人
        List<CasedraftPerson> 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<CasedraftAgent> 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);
                }else if(CaseBaseConstsEnum.PERSON_TYPE_4.getIndex().equals(casedraftAgent.getPerType())) {
                    if (StringUtils.isNotEmpty(dagents.toString())) {
                        dagents.append(BaseConsts.COMMA);
                    }
                    dagents.append(casedraftAgent.getTrueName());
                }
            }
                //判断是否为更新(用原有的Id对比性的Id)
                if(oldAgentIds.contains(casedraftAgent.getId())){
                    draftAgentService.updateById(casedraftAgent);
                }else{
                    casedraftAgent.setCreateTime(now);
                    draftAgentService.save(casedraftAgent);
                }
            }
        }
        // 删除冗余的申请人
        if (CollectionUtils.isNotEmpty(newDraftPersonIdList)) {
            List<String> oldPersonIdList = draftPersonService.listIdByCaseId(draftRegisterSaveDTO.getId());
        // 删除冗余的申请人(用新的Id对比旧的Id)
        if (CollectionUtils.isNotEmpty(newPersonIdList)) {
            for (String oldPersonId : oldPersonIdList) {
                if (!newDraftPersonIdList.contains(oldPersonId)) {
                if (!newPersonIdList.contains(oldPersonId)) {
                    draftPersonService.removeById(oldPersonId);
                }
            }
        }else{
            QueryWrapper<CasedraftPerson> casedraftPersonQueryWrapper = new QueryWrapper<>();
            casedraftPersonQueryWrapper.eq("case_id", draftRegisterSaveDTO.getId());
            draftPersonService.remove(casedraftPersonQueryWrapper);
            QueryWrapper<CasedraftPerson> casePersonQueryWrapper = new QueryWrapper<>();
            casePersonQueryWrapper.eq("case_id", draftRegisterSaveDTO.getId());
            draftPersonService.remove(casePersonQueryWrapper);
        }
        //删除冗余的代理人
        if(CollectionUtils.isNotEmpty(newDraftAgentIdList)){
            List<String> oldAgentIdList = draftAgentService.listIdByCaseId(draftRegisterSaveDTO.getId());
        if(CollectionUtils.isNotEmpty(newAgentIdList)){
            for(String oldAgentId: oldAgentIdList){
                if(!newDraftAgentIdList.contains(oldAgentId)){
                if(!newAgentIdList.contains(oldAgentId)){
                    draftAgentService.removeById(oldAgentId);
                }
            }
        }else{
            QueryWrapper<CasedraftAgent> casedraftAgentQueryWrapper = new QueryWrapper<>();
            casedraftAgentQueryWrapper.eq("case_id", draftRegisterSaveDTO.getId());
            draftAgentService.remove(casedraftAgentQueryWrapper);
            QueryWrapper<CasedraftAgent> caseAgentQueryWrapper = new QueryWrapper<>();
            caseAgentQueryWrapper.eq("case_id", draftRegisterSaveDTO.getId());
            draftAgentService.remove(caseAgentQueryWrapper);
        }
        return peopleNum;
    }
    /**
@@ -336,7 +322,7 @@
        try{
            // 删除纠纷草稿信息
            QueryWrapper<CasedraftInfo> queryWrapper = new QueryWrapper<>();
            queryWrapper.eq("serie_no", caseId);
            queryWrapper.eq("id", caseId);
            List<CasedraftInfo> draftInfoList = mapper.selectList(queryWrapper);
            List<String> ownerIdList = new ArrayList<>();
            for (CasedraftInfo casedraftInfo : draftInfoList) {
@@ -350,13 +336,72 @@
                QueryWrapper<CasedraftAgent> casedraftAgentQueryWrapper = new QueryWrapper<>();
                casedraftAgentQueryWrapper.eq("case_id", casedraftInfo.getId());
                //todo 删除附件关系
//                FileTypeTermsDTO fileTypeTermsDTO = new FileTypeTermsDTO();
//                fileTypeTermsDTO.setOwnerIdList(ownerIdList);
//                sysClient.removeFileRelate(fileTypeTermsDTO);
                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);
        }
    }
    /**
     * PC端-查询纠纷信息
     * @param caseId 纠纷编号
     * @return CaseInfo 纠纷信息
     */
    public CasedraftInfoDTO getCasedraftInfo(String caseId){
        CasedraftInfo casedraftInfo = mapper.selectById(caseId);
        CasedraftInfoDTO caseInfoDTO = new CasedraftInfoDTO();
        if (ObjectUtils.isNotEmpty(casedraftInfo)) {
            BeanUtils.copyProperties(casedraftInfo, caseInfoDTO);
            //查询所有当事人
            QueryWrapper<CasedraftPerson> draftPersonQueryWrapper = new QueryWrapper<>();
            draftPersonQueryWrapper.eq("case_id", caseId);
            List<CasedraftPerson> casePersonList = draftPersonService.list(draftPersonQueryWrapper);
            //查询所有代理人
            QueryWrapper<CasedraftAgent> casedraftAgentQueryWrapper = new QueryWrapper<>();
            casedraftAgentQueryWrapper.eq("case_id", caseId);
            List<CasedraftAgent> caseAgentList = draftAgentService.list(casedraftAgentQueryWrapper);
            List<String> idList = new ArrayList<>();
            idList.add(caseId);
            idList.addAll(casePersonList.stream().map(CasedraftPerson::getId).collect(Collectors.toList()));
            idList.addAll(caseAgentList.stream().map(CasedraftAgent::getId).collect(Collectors.toList()));
            String ids = idList.stream().map(String::valueOf).collect(Collectors.joining("','"));
            ids = "'"+ ids + "'";
            Map<String, Object> term = new HashMap<>();
            term.put("mainId", caseId);
            term.put("ownerIds", ids);
            //查询所有附件
            List<FileIdTypeInfoBaseDTO> fileInfoList = sysClient.listIdTypeInfoByOwnerIdList(term);
            //把附件根据编号放入
            for(FileIdTypeInfoBaseDTO fileInfo: fileInfoList){
                if(caseId.equals(fileInfo.getOwnerId())){
                    caseInfoDTO.setFileInfoList(fileInfo.getFileList());
                }
            }
            for(CasedraftPerson casePerson: casePersonList){
                for(FileIdTypeInfoBaseDTO fileInfo: fileInfoList){
                    if(casePerson.getId().equals(fileInfo.getOwnerId())){
                        casePerson.setFileInfoList(fileInfo.getFileList());
                    }
                }
            }
            for(CasedraftAgent caseAgent: caseAgentList){
                for(FileIdTypeInfoBaseDTO fileInfo: fileInfoList){
                    if(caseAgent.getId().equals(fileInfo.getOwnerId())){
                        caseAgent.setFileInfoList(fileInfo.getFileList());
                    }
                }
            }
            caseInfoDTO.setPersonList(casePersonList);
            caseInfoDTO.setAgentList(caseAgentList);
        }
        return caseInfoDTO;
    }
}