From abb0d631ffed8b67b0a78205ba127b46a4cb546b Mon Sep 17 00:00:00 2001
From: liyj <1003249715@qq.com>
Date: Tue, 10 Sep 2024 16:29:20 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/draft/service/CasedraftInfoService.java |  259 +++++++++++++++++++++++++++++----------------------
 1 files changed, 149 insertions(+), 110 deletions(-)

diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/draft/service/CasedraftInfoService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/draft/service/CasedraftInfoService.java
index d439526..baebe8c 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/draft/service/CasedraftInfoService.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/draft/service/CasedraftInfoService.java
@@ -3,22 +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.cases.domain.po.CasePerson;
 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.constant.CaseBaseConsts;
-import cn.huge.module.constant.CaseBaseConstsEnum;
+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;
@@ -27,17 +32,13 @@
 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;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @title: 纠纷信息草稿表业务逻辑处理
@@ -66,6 +67,9 @@
 
     @Autowired
     private CustClientImpl custClient;
+
+    @Autowired
+    private SysClientImpl sysClient;
 
     /**
     * 更新对象
@@ -173,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);
 
@@ -214,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;
     }
 
     /**
@@ -342,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) {
@@ -356,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;
+    }
 }

--
Gitblit v1.8.0