From 716f57dacce347ba154f3b6a994f4e383e3a97a4 Mon Sep 17 00:00:00 2001
From: liyj <1003249715@qq.com>
Date: Thu, 05 Sep 2024 11:15:38 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java |  321 +++++++++++++++++++++++++++++++++++------------------
 1 files changed, 212 insertions(+), 109 deletions(-)

diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java
index 621c9a7..381b422 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java
@@ -3,11 +3,16 @@
 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.CaseInfoUnfold;
 import cn.huge.module.cases.domain.po.CasePerson;
+import cn.huge.module.client.api.SysClient;
 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.cases.dao.mapper.CaseInfoMapper;
 import cn.huge.module.cases.domain.po.CaseInfo;
@@ -16,8 +21,12 @@
 import cn.huge.module.mediate.constant.CaseBaseConstsEnum;
 import cn.huge.module.cust.dto.CtUserDTO;
 import cn.huge.module.draft.service.CasedraftInfoService;
+import cn.huge.module.mediate.dto.WechatBindCaseDTO;
+import cn.huge.module.sys.dto.FileIdTypeInfoBaseDTO;
+import cn.huge.module.sys.dto.FileTypeInfoBaseDTO;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Maps;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -29,10 +38,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: 纠纷信息主表业务逻辑处理
@@ -64,6 +71,12 @@
 
     @Autowired
     private CustClientImpl custClient;
+
+    @Autowired
+    private CaseInfoUnfoldService caseInfoUnfoldService;
+
+    @Autowired
+    private SysClientImpl sysClient;
 
     /**
     * 更新对象
@@ -171,48 +184,52 @@
             StringBuffer defendants = new StringBuffer();
             StringBuffer pagents = new StringBuffer();
             StringBuffer dagents = new StringBuffer();
-            int peopleNum = 0;
-
+            //复制填装案件表
             CaseInfo caseInfo = new CaseInfo();
-            CaseInfoUnfold caseInfoUnfold = new CaseInfoUnfold();
             BeanUtils.copyProperties(registerSaveDTO, caseInfo);
-            caseInfo.setId(utilsClient.getNewTimeId());
-            caseInfo.setInputUnitId(loginUser.getUnitId());
-            caseInfo.setInputUnitName(loginUser.getUnitName());
-            caseInfo.setInputUserId(loginUser.getId());
-            caseInfo.setInputUserName(loginUser.getTrueName());
-            caseInfo.setInputWay(CaseBaseConsts.INPUT_WAY_1);
-            caseInfo.setCreateTime(nowDate);
             caseInfo.setUpdateTime(nowDate);
-            caseInfo.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
-            //todo case_ref生成、case_title生成
-
-            caseInfoUnfold.setId(utilsClient.getNewTimeId());
-            caseInfoUnfold.setCaseId(caseInfo.getId());
-            caseInfoUnfold.setCreateTime(nowDate);
-            caseInfoUnfold.setUpdateTime(nowDate);
-
 
             // 常规登记-保存当事人
-            peopleNum += this.saveCasePerson(registerSaveDTO, plaintiffs, pagents, defendants, dagents);
-            caseInfo.setPeopleNum(peopleNum);
+            this.saveCasePerson(registerSaveDTO, plaintiffs, pagents, defendants, dagents);
             caseInfo.setPlaintiffs(plaintiffs.toString());
             caseInfo.setPagents(pagents.toString());
             caseInfo.setDefendants(defendants.toString());
             caseInfo.setDagents(dagents.toString());
-            //todo 流程接口修改status、status_name、process、process_name
-            //todo 自行受理
-            if(1 == registerSaveDTO.getIsSelfAccept()){
-                caseInfoUnfold.setMediateUnitId(loginUser.getUnitId());
-                caseInfoUnfold.setMediateUnitName(loginUser.getUnitName());
-            }
+            caseInfo.setCaseRef(utilsClient.createCaseRef());
+            caseInfo.setCanal(CaseBaseConstsEnum.CASE_CANAL_1.getIndex());
+            caseInfo.setCaseDes(CaseBaseConstsEnum.CASE_CANAL_1.getDes());
+            //todo case_title生成、经纬度转换、来访形式
+            if(0 == registerSaveDTO.getOperateType()){
+                caseInfo.setInputUnitId(loginUser.getUnitId());
+                caseInfo.setInputUnitName(loginUser.getUnitName());
+                caseInfo.setInputUserId(loginUser.getId());
+                caseInfo.setInputUserName(loginUser.getTrueName());
+                caseInfo.setInputWay(CaseBaseConsts.INPUT_WAY_1);
+                caseInfo.setCreateTime(nowDate);
+                caseInfo.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
 
-            this.saveOrUpdate(caseInfo);
-            // 删除草稿案件
-            if(1 == registerSaveDTO.getIsDraft() ){
-                draftInfoService.removeDraftInfo(registerSaveDTO.getId());
-            }
+                CaseInfoUnfold caseInfoUnfold = new CaseInfoUnfold();
+                caseInfoUnfold.setId(utilsClient.getNewTimeId());
+                caseInfoUnfold.setCaseId(caseInfo.getId());
+                caseInfoUnfold.setCreateTime(nowDate);
+                caseInfoUnfold.setUpdateTime(nowDate);
 
+                // 删除草稿案件
+                if(1 == registerSaveDTO.getIsDraft() ){
+                    draftInfoService.removeDraftInfo(registerSaveDTO.getId());
+                }
+
+                //判断是否自行受理
+                if(1 == registerSaveDTO.getIsSelfAccept()){
+                    //todo 流程接口修改status、status_name、process、process_name
+                    caseInfoUnfold.setMediateUnitId(loginUser.getUnitId());
+                    caseInfoUnfold.setMediateUnitName(loginUser.getUnitName());
+                }
+                this.save(caseInfo);
+                caseInfoUnfoldService.save(caseInfoUnfold);
+            }else if(1 == registerSaveDTO.getOperateType()){
+                this.updateById(caseInfo);
+            }
             return registerSaveDTO.getId();
         }catch (Exception e){
             log.error("service方法[CaseInfoService.caseRegister]调用异常:"+e, e);
@@ -229,104 +246,94 @@
      * @param dagents 被申请人代理人
      * @return int
      */
-    private int saveCasePerson(RegisterSaveDTO registerSaveDTO, StringBuffer plaintiffs, StringBuffer pagents,
+    private void saveCasePerson(RegisterSaveDTO registerSaveDTO, StringBuffer plaintiffs, StringBuffer pagents,
                                StringBuffer defendants, StringBuffer dagents){
-        int peopleNum = 0;
+
+        Date now = DateUtils.getNowDate();
+
+        List<CasePerson> personList = registerSaveDTO.getPersonList();
+        List<CaseAgent> agentList = registerSaveDTO.getAgentList();
+
+        //查出已存在的当事人和代理人编号
+        List<String> oldPersonIdList = personService.listIdByCaseId(registerSaveDTO.getId());
+        List<String> oldAgentIdList = agentService.listIdByCaseId(registerSaveDTO.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<>();
-        // 保存申请人
-        List<CasePerson> plaintPersonList = registerSaveDTO.getPlaintiffList();
-        if (CollectionUtils.isNotEmpty(plaintPersonList)) {
-            for (CasePerson casePerson : plaintPersonList) {
+
+        if(CollectionUtils.isNotEmpty(personList)){
+            for(CasePerson casePerson: personList){
                 newPersonIdList.add(casePerson.getId());
                 casePerson.setCaseId(registerSaveDTO.getId());
-                casePerson.setPerType(CaseBaseConstsEnum.PERSON_TYPE_1.getIndex());
-                casePerson.setPerTypeName(CaseBaseConstsEnum.PERSON_TYPE_1.getDes());
                 casePerson.setCustId(registerSaveDTO.getCustId());
-                casePerson.setCreateTime(registerSaveDTO.getUpdateTime());
-                casePerson.setUpdateTime(registerSaveDTO.getUpdateTime());
-                //todo 绑定当事人小程序
-
-                personService.saveOrUpdate(casePerson);
-
-                if (StringUtils.isNotEmpty(plaintiffs.toString())) {
-                    plaintiffs.append(BaseConsts.COMMA);
+                casePerson.setUpdateTime(now);
+                //绑定当事人小程序
+                this.setPartyUserId(casePerson);
+                //添加申请方和被申请方人名组合
+                if(CaseBaseConstsEnum.PERSON_TYPE_1.equals(casePerson.getPerType())){
+                    //申请方
+                    if (StringUtils.isNotEmpty(plaintiffs.toString())) {
+                        plaintiffs.append(BaseConsts.COMMA);
+                    }
+                    plaintiffs.append(casePerson.getTrueName());
+                }else if(CaseBaseConstsEnum.PERSON_TYPE_2.equals(casePerson.getPerType())){
+                    //被申请方
+                    if (StringUtils.isNotEmpty(defendants.toString())) {
+                        defendants.append(BaseConsts.COMMA);
+                    }
+                    defendants.append(casePerson.getTrueName());
                 }
-                plaintiffs.append(casePerson.getTrueName());
-                peopleNum++;
+
+                //判断是否为更新(用原有的Id对比性的Id)
+                if(oldPersonIds.contains(casePerson.getId())){
+                    personService.updateById(casePerson);
+                }else{
+                    casePerson.setCreateTime(now);
+                    personService.save(casePerson);
+                }
 
             }
-            //保存代理人
-            List<CaseAgent> pagentList = registerSaveDTO.getPagentList();
-            if (CollectionUtils.isNotEmpty(pagentList)) {
-                for(CaseAgent caseAgent: pagentList){
-                    newAgentIdList.add(caseAgent.getId());
-                    caseAgent.setId(utilsClient.getNewTimeId());
-                    caseAgent.setCaseId(registerSaveDTO.getId());
-                    caseAgent.setAgentTypeName(CaseBaseConstsEnum.getDes(caseAgent.getAgentType()));
+        }
 
-                    caseAgent.setCustId(registerSaveDTO.getCustId());
-                    caseAgent.setCreateTime(registerSaveDTO.getUpdateTime());
-                    caseAgent.setUpdateTime(registerSaveDTO.getUpdateTime());
-
-                    agentService.saveOrUpdate(caseAgent);
-
+        if(CollectionUtils.isNotEmpty(agentList)) {
+            for (CaseAgent caseAgent : agentList) {
+                newAgentIdList.add(caseAgent.getId());
+                caseAgent.setCaseId(registerSaveDTO.getId());
+                caseAgent.setAgentTypeName(CaseBaseConstsEnum.getDes(caseAgent.getAgentType()));
+                caseAgent.setCustId(registerSaveDTO.getCustId());
+                caseAgent.setUpdateTime(now);
+                //绑定当事人小程序
+                this.setPartyUserId(caseAgent);
+                if(CaseBaseConstsEnum.PERSON_TYPE_3.equals(caseAgent.getPerType())) {
                     if (StringUtils.isNotEmpty(pagents.toString())) {
                         pagents.append(BaseConsts.COMMA);
                     }
                     pagents.append(caseAgent.getTrueName());
-                }
-
-                //todo 绑定当事人小程序
-            }
-        }
-        // 保存被申请人
-        List<CasePerson> defendPersonList = registerSaveDTO.getDefendantList();
-        if(CollectionUtils.isNotEmpty(defendPersonList)){
-            for (CasePerson casePerson : defendPersonList) {
-                newPersonIdList.add(casePerson.getId());
-                casePerson.setCaseId(registerSaveDTO.getId());
-                casePerson.setPerType(CaseBaseConstsEnum.PERSON_TYPE_2.getIndex());
-                casePerson.setPerTypeName(CaseBaseConstsEnum.PERSON_TYPE_2.getDes());
-                casePerson.setCustId(registerSaveDTO.getCustId());
-                casePerson.setCreateTime(registerSaveDTO.getUpdateTime());
-                casePerson.setUpdateTime(registerSaveDTO.getUpdateTime());
-                //todo 绑定当事人小程序
-                personService.saveOrUpdate(casePerson);
-                if (StringUtils.isNotEmpty(defendants.toString())) {
-                    defendants.append(BaseConsts.COMMA);
-                }
-                defendants.append(casePerson.getTrueName());
-                peopleNum++;
-            }
-            //保存代理人
-            List<CaseAgent> pagentList = registerSaveDTO.getPagentList();
-            if (CollectionUtils.isNotEmpty(pagentList)) {
-                for(CaseAgent caseAgent: pagentList){
-                    newAgentIdList.add(caseAgent.getId());
-                    caseAgent.setId(utilsClient.getNewTimeId());
-                    caseAgent.setCaseId(registerSaveDTO.getId());
-                    caseAgent.setAgentTypeName(CaseBaseConstsEnum.getDes(caseAgent.getAgentType()));
-                    caseAgent.setCustId(registerSaveDTO.getCustId());
-                    caseAgent.setCreateTime(registerSaveDTO.getUpdateTime());
-                    caseAgent.setUpdateTime(registerSaveDTO.getUpdateTime());
-                    agentService.saveOrUpdate(caseAgent);
+                }else if(CaseBaseConstsEnum.PERSON_TYPE_4.equals(caseAgent.getPerType())) {
                     if (StringUtils.isNotEmpty(dagents.toString())) {
                         dagents.append(BaseConsts.COMMA);
                     }
                     dagents.append(caseAgent.getTrueName());
-                    //todo 绑定当事人小程序
+                }
+
+                //判断是否为更新(用原有的Id对比性的Id)
+                if(oldAgentIds.contains(caseAgent.getId())){
+                    agentService.updateById(caseAgent);
+                }else{
+                    caseAgent.setCreateTime(now);
+                    agentService.save(caseAgent);
                 }
             }
-
         }
 
-        // 删除冗余的申请人
+        // 删除冗余的申请人(用新的Id对比旧的Id)
         if (CollectionUtils.isNotEmpty(newPersonIdList)) {
-            List<String> oldPersonIdList = personService.listIdByCaseId(registerSaveDTO.getId());
             for (String oldPersonId : oldPersonIdList) {
                 if (!newPersonIdList.contains(oldPersonId)) {
                     personService.removeById(oldPersonId);
+                }else{
+
                 }
             }
         }else{
@@ -336,7 +343,6 @@
         }
         //删除冗余的代理人
         if(CollectionUtils.isNotEmpty(newAgentIdList)){
-            List<String> oldAgentIdList = agentService.listIdByCaseId(registerSaveDTO.getId());
             for(String oldAgentId: oldAgentIdList){
                 if(!newAgentIdList.contains(oldAgentId)){
                     agentService.removeById(oldAgentId);
@@ -347,7 +353,104 @@
             caseAgentQueryWrapper.eq("case_id", registerSaveDTO.getId());
             agentService.remove(caseAgentQueryWrapper);
         }
+    }
 
-        return peopleNum;
+    /**
+     * PC端-查询纠纷信息
+     * @param caseId 纠纷编号
+     * @return CaseInfo 纠纷信息
+     */
+    public CaseInfoDTO getCaseInfo(String caseId){
+        CaseInfo caseInfo = mapper.selectById(caseId);
+        CaseInfoDTO caseInfoDTO = new CaseInfoDTO();
+        if (ObjectUtils.isNotEmpty(caseInfo)) {
+
+            BeanUtils.copyProperties(caseInfo, caseInfoDTO);
+            //查询所有当事人
+            QueryWrapper<CasePerson> personQueryWrapper = new QueryWrapper<>();
+            personQueryWrapper.eq("case_id", caseId);
+            List<CasePerson> casePersonList = personService.list(personQueryWrapper);
+
+            //查询所有代理人
+            QueryWrapper<CaseAgent> caseAgentQueryWrapper = new QueryWrapper<>();
+            caseAgentQueryWrapper.eq("case_id", caseId);
+            List<CaseAgent> caseAgentList = agentService.list(caseAgentQueryWrapper);
+            List<String> idList = new ArrayList<>();
+
+            idList.add(caseId);
+            idList.addAll(casePersonList.stream().map(CasePerson::getId).collect(Collectors.toList()));
+            idList.addAll(caseAgentList.stream().map(CaseAgent::getId).collect(Collectors.toList()));
+            String ids = idList.stream().map(String::valueOf).collect(Collectors.joining("','"));
+            ids = "'"+ ids + "'";
+            Map<String, Object> term = new HashMap<>();
+            term.put("ownerIds", ids);
+            //查询所有附件
+            List<FileIdTypeInfoBaseDTO> fileInfoList = sysClient.listIdTypeInfoByOwnerIdList(term, caseId);
+            for(FileIdTypeInfoBaseDTO fileInfo: fileInfoList){
+                if(caseId.equals(fileInfo.getOwnerId())){
+                    caseInfoDTO.setFileInfoList(fileInfo.getFileList());
+                }
+            }
+            for(CasePerson casePerson: casePersonList){
+                //把附件根据编号放入
+                for(FileIdTypeInfoBaseDTO fileInfo: fileInfoList){
+                    if(casePerson.getId().equals(fileInfo.getOwnerId())){
+                        casePerson.setFileInfoList(fileInfo.getFileList());
+                    }
+                }
+            }
+            for(CaseAgent caseAgent: caseAgentList){
+                for(FileIdTypeInfoBaseDTO fileInfo: fileInfoList){
+                    if(caseAgent.getId().equals(fileInfo.getOwnerId())){
+                        caseAgent.setFileInfoList(fileInfo.getFileList());
+                    }
+                }
+            }
+            caseInfoDTO.setPersonList(casePersonList);
+            caseInfoDTO.setAgentList(caseAgentList);
+        }
+        return caseInfoDTO;
+    }
+
+    /**
+     * 绑定当事人小程序
+     * @param casePerson 当事人信息
+     */
+    public void setPartyUserId(CasePerson casePerson) {
+        if (StringUtils.isEmpty(casePerson.getPartyUserId())) {
+            if (CaseBaseConstsEnum.CARD_TYPE_1.getIndex().equals(casePerson.getCertiType())) {
+                if (StringUtils.isNotEmpty(casePerson.getCertiNo())) {
+                    WechatBindCaseDTO wechatBindCaseDTO = new WechatBindCaseDTO();
+                    if (CaseBaseConstsEnum.PERSON_CLASS_1.getIndex().equals(casePerson.getPerClass())) {
+                        wechatBindCaseDTO.setTrueName(casePerson.getTrueName());
+                    } else {
+                        wechatBindCaseDTO.setTrueName(casePerson.getDeputy());
+                    }
+                    wechatBindCaseDTO.setIdcard(casePerson.getCertiNo());
+                    wechatBindCaseDTO.setCustId(casePerson.getCustId());
+                    String partyUserId = custClient.bindGetUserId(wechatBindCaseDTO);
+                    casePerson.setPartyUserId(partyUserId);
+                }
+            }
+        }
+    }
+
+    /**
+     * 绑定当事人小程序
+     * @param caseAgent 代理人人信息
+     */
+    public void setPartyUserId(CaseAgent caseAgent){
+        if (StringUtils.isEmpty(caseAgent.getPartyUserId())) {
+            if (CaseBaseConstsEnum.CARD_TYPE_1.getIndex().equals(caseAgent.getCertiType())) {
+                if (StringUtils.isNotEmpty(caseAgent.getCertiNo())) {
+                    WechatBindCaseDTO wechatBindCaseDTO = new WechatBindCaseDTO();
+                    wechatBindCaseDTO.setTrueName(caseAgent.getTrueName());
+                    wechatBindCaseDTO.setIdcard(caseAgent.getCertiNo());
+                    wechatBindCaseDTO.setCustId(caseAgent.getCustId());
+                    String partyUserId = custClient.bindGetUserId(wechatBindCaseDTO);
+                    caseAgent.setPartyUserId(partyUserId);
+                }
+            }
+        }
     }
 }

--
Gitblit v1.8.0