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/cases/service/CaseInfoService.java |  360 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 333 insertions(+), 27 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 381b422..d3a50d2 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,30 +3,28 @@
 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.dto.*;
+
 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;
 import cn.huge.module.constant.BaseConsts;
+import cn.huge.module.cust.dto.PaUserDTO;
 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.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.alibaba.fastjson.JSON;
 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;
@@ -77,6 +75,9 @@
 
     @Autowired
     private SysClientImpl sysClient;
+
+    @Autowired
+    private CaseTaskService caseTaskService;
 
     /**
     * 更新对象
@@ -197,8 +198,10 @@
             caseInfo.setDagents(dagents.toString());
             caseInfo.setCaseRef(utilsClient.createCaseRef());
             caseInfo.setCanal(CaseBaseConstsEnum.CASE_CANAL_1.getIndex());
-            caseInfo.setCaseDes(CaseBaseConstsEnum.CASE_CANAL_1.getDes());
-            //todo case_title生成、经纬度转换、来访形式
+            caseInfo.setCanalName(CaseBaseConstsEnum.CASE_CANAL_1.getDes());
+            caseInfo.setVisitWay(CaseBaseConstsEnum.VISIT_WAY_1.getIndex());
+            caseInfo.setVisitWayName(CaseBaseConstsEnum.VISIT_WAY_1.getDes());
+            //todo case_title生成、经纬度转换
             if(0 == registerSaveDTO.getOperateType()){
                 caseInfo.setInputUnitId(loginUser.getUnitId());
                 caseInfo.setInputUnitName(loginUser.getUnitName());
@@ -207,26 +210,27 @@
                 caseInfo.setInputWay(CaseBaseConsts.INPUT_WAY_1);
                 caseInfo.setCreateTime(nowDate);
                 caseInfo.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
-
-                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);
+                // 新增纠纷信息扩展表
+                CaseInfoUnfold caseInfoUnfold = new CaseInfoUnfold();
+                caseInfoUnfold.setId(caseInfo.getId());
+                caseInfoUnfold.setCreateTime(nowDate);
+                caseInfoUnfold.setUpdateTime(nowDate);
                 caseInfoUnfoldService.save(caseInfoUnfold);
+                // 启动工作流
+                // 判断是否自行受理
+                if(1 == registerSaveDTO.getIsSelfAccept()){
+                    // 自行受理流程
+                    caseTaskService.webStartFlowZXSL(caseInfo, loginUser);
+                }else {
+                    // 自动调度流程
+                    caseTaskService.webStartFlowLFDJ(caseInfo);
+                }
             }else if(1 == registerSaveDTO.getOperateType()){
                 this.updateById(caseInfo);
             }
@@ -271,13 +275,13 @@
                 //绑定当事人小程序
                 this.setPartyUserId(casePerson);
                 //添加申请方和被申请方人名组合
-                if(CaseBaseConstsEnum.PERSON_TYPE_1.equals(casePerson.getPerType())){
+                if(CaseBaseConstsEnum.PERSON_TYPE_1.getIndex().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())){
+                }else if(CaseBaseConstsEnum.PERSON_TYPE_2.getIndex().equals(casePerson.getPerType())){
                     //被申请方
                     if (StringUtils.isNotEmpty(defendants.toString())) {
                         defendants.append(BaseConsts.COMMA);
@@ -305,12 +309,12 @@
                 caseAgent.setUpdateTime(now);
                 //绑定当事人小程序
                 this.setPartyUserId(caseAgent);
-                if(CaseBaseConstsEnum.PERSON_TYPE_3.equals(caseAgent.getPerType())) {
+                if(CaseBaseConstsEnum.PERSON_TYPE_3.getIndex().equals(caseAgent.getPerType())) {
                     if (StringUtils.isNotEmpty(pagents.toString())) {
                         pagents.append(BaseConsts.COMMA);
                     }
                     pagents.append(caseAgent.getTrueName());
-                }else if(CaseBaseConstsEnum.PERSON_TYPE_4.equals(caseAgent.getPerType())) {
+                }else if(CaseBaseConstsEnum.PERSON_TYPE_4.getIndex().equals(caseAgent.getPerType())) {
                     if (StringUtils.isNotEmpty(dagents.toString())) {
                         dagents.append(BaseConsts.COMMA);
                     }
@@ -383,9 +387,68 @@
             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, caseId);
+            List<FileIdTypeInfoBaseDTO> fileInfoList = sysClient.listIdTypeInfoByOwnerIdList(term);
+            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;
+    }
+
+    /**
+     * PC端-查询纠纷信息
+     * @param caseId 纠纷编号
+     * @return CaseInfo 纠纷信息
+     */
+    public CaseInfoDTO getCaseArchivesInfo(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("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());
@@ -453,4 +516,247 @@
             }
         }
     }
+
+    /**
+     * PC端-纠纷登记-保存纠纷信息-正常案件
+     * @param registerSaveDTO 纠纷信息
+     * @param userId 用户编号
+     * @return String 纠纷编号
+     */
+    public String caseRegisterWechat(RegisterSaveDTO registerSaveDTO, String userId){
+        try {
+            // 获取当前登录用户
+            PaUserDTO loginUser = custClient.paclientGetUser(userId);
+            if(ObjectUtils.isEmpty(registerSaveDTO.getCustId())){
+                registerSaveDTO.setCustId(loginUser.getCustId());
+            }
+
+            Date nowDate = DateUtils.getNowDate();
+            registerSaveDTO.setUpdateTime(nowDate);
+            StringBuffer plaintiffs = new StringBuffer();
+            StringBuffer defendants = new StringBuffer();
+            StringBuffer pagents = new StringBuffer();
+            StringBuffer dagents = new StringBuffer();
+
+            CaseInfo caseInfo = new CaseInfo();
+            CaseInfoUnfold caseInfoUnfold = new CaseInfoUnfold();
+            BeanUtils.copyProperties(registerSaveDTO, caseInfo);
+            if(ObjectUtils.isEmpty(caseInfo.getId())){
+                caseInfo.setId(utilsClient.getNewTimeCaseId());
+            }
+//            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.setVisitTime(nowDate);
+            caseInfo.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
+            caseInfo.setProcess(1);
+            caseInfo.setProcessName("来访登记");
+            //todo case_ref生成、case_title生成
+
+            caseInfoUnfold.setId(caseInfo.getId());
+            caseInfoUnfold.setCreateTime(nowDate);
+            caseInfoUnfold.setUpdateTime(nowDate);
+
+            // 常规登记-保存当事人
+            this.saveCasePersonWechat(registerSaveDTO, plaintiffs, pagents, defendants, dagents,loginUser);
+            caseInfo.setPlaintiffs(plaintiffs.toString());
+            caseInfo.setPagents(pagents.toString());
+            caseInfo.setDefendants(defendants.toString());
+            caseInfo.setDagents(dagents.toString());
+            this.saveOrUpdate(caseInfo);
+
+            // 启动工作流-自动调度流程
+            caseTaskService.webStartFlowLFDJ(caseInfo);
+            return registerSaveDTO.getId();
+        }catch (Exception e){
+            log.error("service方法[CaseInfoService.caseRegisterWechat]调用异常:"+e, e);
+            throw new ServiceException("CaseInfoService.caseRegisterWechat", e);
+        }
+    }
+
+    /**
+     * pc端-常规登记-保存正式案件-保存人员信息
+     * @param registerSaveDTO 纠纷信息
+     * @param plaintiffs 申请人
+     * @param pagents 申请人代理人
+     * @param defendants 被申请人
+     * @param dagents 被申请人代理人
+     * @return int
+     */
+    private int saveCasePersonWechat(RegisterSaveDTO registerSaveDTO, StringBuffer plaintiffs, StringBuffer pagents,
+                               StringBuffer defendants, StringBuffer dagents,PaUserDTO loginUser){
+        int peopleNum = 0;
+        // 保存申请人
+        List<CasePerson> personList = registerSaveDTO.getPersonList();
+        if (CollectionUtils.isNotEmpty(personList)) {
+            for (CasePerson casePerson : personList) {
+                casePerson.setId(utilsClient.getNewTimeCaseId());
+                casePerson.setCaseId(registerSaveDTO.getId());
+                casePerson.setPartyUserId(loginUser.getId());
+                casePerson.setCustId(registerSaveDTO.getCustId());
+                casePerson.setCreateTime(registerSaveDTO.getUpdateTime());
+                casePerson.setUpdateTime(registerSaveDTO.getUpdateTime());
+                //todo 绑定当事人小程序
+                personService.saveOrUpdate(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());
+                }
+                peopleNum++;
+
+            }
+            //保存代理人
+            List<CaseAgent> agentList = registerSaveDTO.getAgentList();
+            if (CollectionUtils.isNotEmpty(agentList)) {
+                for(CaseAgent caseAgent: agentList){
+                    caseAgent.setId(utilsClient.getNewTimeCaseId());
+                    caseAgent.setPartyUserId(loginUser.getId());
+                    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 (StringUtils.isNotEmpty(pagents.toString())) {
+                        pagents.append(BaseConsts.COMMA);
+                    }
+                    pagents.append(caseAgent.getTrueName());
+                }
+                //todo 绑定当事人小程序
+            }
+        }
+
+        return peopleNum;
+    }
+
+    public RegisterSaveDTO getCaseInfoWechat(String id){
+        RegisterSaveDTO registerSaveDTO = new RegisterSaveDTO();
+        CaseInfo caseInfo = this.getById(id);
+        if(ObjectUtils.isNotEmpty(caseInfo)){
+            BeanUtils.copyProperties(caseInfo, registerSaveDTO);
+        }
+        QueryWrapper<CasePerson> casePersonQueryWrapper = new QueryWrapper<>();
+        casePersonQueryWrapper.eq("case_id", registerSaveDTO.getId());
+        List<CasePerson>  personList = personService.list(casePersonQueryWrapper);
+        registerSaveDTO.setPersonList(personList);
+
+        QueryWrapper<CaseAgent> caseAgentQueryWrapper = new QueryWrapper<>();
+        caseAgentQueryWrapper.eq("case_id", registerSaveDTO.getId());
+        List<CaseAgent> agentList = agentService.list(caseAgentQueryWrapper);
+        registerSaveDTO.setAgentList(agentList);
+
+        return registerSaveDTO;
+    }
+
+    /**
+     * 按条件分页查询-小程序查询
+     * @param page 分页对象
+     * @param terms 条件
+     * @return Page
+     */
+    public Page<CaseInfoWeChatDTO> pageQueryWechat(String userId, PageRequest page, Map<String, Object> terms){
+        PaUserDTO loginUser = custClient.paclientGetUser(userId);
+        List<CaseInfoWeChatDTO> list = new ArrayList<>();
+        String personType = terms.get("personType")+"";
+        if(ObjectUtils.isEmpty(personType)){
+            throw new RuntimeException("请选择人员类型");
+        }
+        if(ObjectUtils.isEmpty(loginUser.getIdcard())){
+            return new PageImpl<CaseInfoWeChatDTO>(list, page, 0);
+        }
+        QueryWrapper<CasePerson> personWrapper = new QueryWrapper<>();
+        personWrapper.select("case_id");
+        personWrapper.eq("certi_no", loginUser.getIdcard());
+        if("1".equals(personType)){
+            personWrapper.eq("per_type",CaseBaseConstsEnum.PERSON_TYPE_1.getIndex());
+        }else {
+            personWrapper.eq("per_type",CaseBaseConstsEnum.PERSON_TYPE_2.getIndex());
+        }
+        List<CasePerson> casePersonList = personService.list(personWrapper);
+        if(ObjectUtils.isEmpty(casePersonList)){
+            return new PageImpl<CaseInfoWeChatDTO>(list, page, 0);
+        }
+        List<String> ids = casePersonList.stream().map(CasePerson::getCaseId).collect(Collectors.toList());
+        terms.put("ids",ids);
+        long total = mapper.countTerms(terms);
+        List<CaseInfo> content = mapper.pageTerms(page, terms);
+        if(ObjectUtils.isNotEmpty(content)){
+            for(CaseInfo caseInfo: content){
+                CaseInfoWeChatDTO caseInfoWeChatDTO = new CaseInfoWeChatDTO();
+                BeanUtils.copyProperties(caseInfo, caseInfoWeChatDTO);
+                caseInfoWeChatDTO.setProcessStatus(caseInfo.getInfoProcess());
+                caseInfoWeChatDTO.setProcessStatusName(caseInfo.getInfoProcessName());
+                QueryWrapper<CasePerson> personWrapper1 = new QueryWrapper<>();
+                personWrapper1.eq("case_id", caseInfo.getId());
+                List<CasePerson> casePersonList1 = personService.list(personWrapper1);
+                //申请人集合
+                List<CasePersonWechatDTO> plaintiffList = new ArrayList<>();
+                //被申请人集合
+                List<CasePersonWechatDTO> defendantList = new ArrayList<>();
+                for (CasePerson casePerson : casePersonList1) {
+                    CasePersonWechatDTO casePersonWechatDTO = new CasePersonWechatDTO();
+                    BeanUtils.copyProperties(casePerson, casePersonWechatDTO);
+                    if(CaseBaseConstsEnum.PERSON_TYPE_1.getIndex().equals(casePerson.getPerType())){
+                        plaintiffList.add(casePersonWechatDTO);
+                    }else if(CaseBaseConstsEnum.PERSON_TYPE_2.getIndex().equals(casePerson.getPerType())){
+                        defendantList.add(casePersonWechatDTO);
+                    }
+                }
+                caseInfoWeChatDTO.setDefendantList(defendantList);
+                caseInfoWeChatDTO.setPlaintiffList(plaintiffList);
+                list.add(caseInfoWeChatDTO);
+            }
+        }
+        return new PageImpl<CaseInfoWeChatDTO>(list, page, total);
+    }
+
+    /**
+     * 按条件分页查询-综合查询
+     * @param page 分页对象
+     * @param terms 条件
+     * @return Page
+     */
+    public Page<CasePageDTO> pageQueryAll(PageRequest page, Map<String, Object> terms){
+        long total = mapper.countTermsAll(terms);
+        List<CasePageDTO> content = mapper.pageTermsAll(page, terms);
+        if(ObjectUtils.isNotEmpty(content)){
+            for (CasePageDTO casePageDTO : content) {
+                QueryWrapper<CasePerson> personWrapper1 = new QueryWrapper<>();
+                personWrapper1.eq("case_id", casePageDTO.getId());
+                List<CasePerson> casePersonList1 = personService.list(personWrapper1);
+                //申请人集合
+                List<CasePersonWeDTO> plaintiffList = new ArrayList<>();
+                //被申请人集合
+                List<CasePersonWeDTO> defendantList = new ArrayList<>();
+                for (CasePerson casePerson : casePersonList1) {
+                    CasePersonWeDTO casePersonWechatDTO = new CasePersonWeDTO();
+                    BeanUtils.copyProperties(casePerson, casePersonWechatDTO);
+                    if(CaseBaseConstsEnum.PERSON_TYPE_1.getIndex().equals(casePerson.getPerType())){
+                        plaintiffList.add(casePersonWechatDTO);
+                    }else if(CaseBaseConstsEnum.PERSON_TYPE_2.getIndex().equals(casePerson.getPerType())){
+                        defendantList.add(casePersonWechatDTO);
+                    }
+                }
+                casePageDTO.setDefendantList(defendantList);
+                casePageDTO.setPlaintiffList(plaintiffList);
+            }
+        }
+        return new PageImpl<CasePageDTO>(content, page, total);
+    }
 }

--
Gitblit v1.8.0