forked from gzzfw/backEnd/gz-dyh

wangwh
2024-09-11 a3524b95bc1f180df80ba19c1d6558cb614555a5
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java
@@ -1,9 +1,7 @@
package cn.huge.module.cases.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.base.common.utils.ObjectUtils;
import cn.huge.base.common.utils.*;
import cn.huge.module.cases.domain.dto.*;
import cn.huge.module.cases.domain.po.CaseAgent;
@@ -16,12 +14,13 @@
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.mediate.constant.*;
import cn.huge.module.cust.dto.CtUserDTO;
import cn.huge.module.draft.service.CasedraftInfoService;
import cn.huge.module.mediate.constant.CaseProcessBaseConstsEnum;
import cn.huge.module.mediate.dto.WechatBindCaseDTO;
import cn.huge.module.sys.dto.FileIdTypeInfoBaseDTO;
import cn.huge.module.sys.dto.QueAddrBaseDTO;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -78,6 +77,10 @@
    @Autowired
    private CaseTaskService caseTaskService;
    @Autowired
    private CaseEvaluateService caseEvaluateService;
    /**
    * 更新对象
@@ -533,10 +536,6 @@
            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();
@@ -553,22 +552,75 @@
            caseInfo.setUpdateTime(nowDate);
            caseInfo.setVisitTime(nowDate);
            caseInfo.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
            caseInfo.setProcess(1);
            caseInfo.setProcessName("来访登记");
            //todo case_ref生成、case_title生成
            //坐标转换
            if(ObjectUtils.isNotEmpty(caseInfo.getLat()) && ObjectUtils.isNotEmpty(caseInfo.getLng())){
                PointXY pointXY = MapUtils.gcj02tobd09(Double.valueOf(caseInfo.getLng()), Double.valueOf(caseInfo.getLat()));
                caseInfo.setLat(pointXY.getLat()+"");
                caseInfo.setLng(pointXY.getLon()+"");
            }
            //todo case_title生成
            caseInfo.setCaseRef(utilsClient.createCaseRef());
            // 为了演示先兼容小程序没属地问题,写死属地
            if (ObjectUtils.isEmpty(caseInfo.getQueProv())) {
//                caseInfo.setQueProv("19");
//                caseInfo.setQueProvName("广东");
//                caseInfo.setQueCity("1601");
//                caseInfo.setQueCityName("广州市");
//                caseInfo.setQueArea("50258");
//                caseInfo.setQueAreaName("白云区");
//                caseInfo.setQueRoad("62857");
//                caseInfo.setQueRoadName("新市街道");
                // 根据经纬度查询问题属地
                QueAddrBaseDTO queAddrBaseDTO = sysClient.getQueAddrByBaiduiLngLat(caseInfo.getLng(), caseInfo.getLat());
                caseInfo.setQueProv(queAddrBaseDTO.getQueProv());
                caseInfo.setQueProvName(queAddrBaseDTO.getQueProvName());
                caseInfo.setQueCity(queAddrBaseDTO.getQueCity());
                caseInfo.setQueCityName(queAddrBaseDTO.getQueCityName());
                caseInfo.setQueArea(queAddrBaseDTO.getQueArea());
                caseInfo.setQueAreaName(queAddrBaseDTO.getQueAreaName());
                caseInfo.setQueRoad(queAddrBaseDTO.getQueRoad());
                caseInfo.setQueRoadName(queAddrBaseDTO.getQueRoadName());
            }
            caseInfoUnfold.setId(caseInfo.getId());
            caseInfoUnfold.setCreateTime(nowDate);
            caseInfoUnfold.setUpdateTime(nowDate);
            StringBuffer plaintiffs = new StringBuffer();
            StringBuffer defendants = new StringBuffer();
            StringBuffer pagents = new StringBuffer();
            StringBuffer dagents = new StringBuffer();
            // 常规登记-保存当事人
            this.saveCasePersonWechat(registerSaveDTO, plaintiffs, pagents, defendants, dagents,loginUser);
            int peopleNum = this.saveCasePersonWechat(registerSaveDTO, plaintiffs, pagents, defendants, dagents,loginUser);
            caseInfo.setVisitPeopleNum(peopleNum);
            caseInfo.setPlaintiffs(plaintiffs.toString());
            caseInfo.setPagents(pagents.toString());
            caseInfo.setDefendants(defendants.toString());
            caseInfo.setDagents(dagents.toString());
            //todo case_title生成
//            caseInfo.setCaseTitle(this.createCaseTitle(plaintiffs.toString(), defendants.toString(), caseInfo.getCaseTypeName()));
            caseInfo.setInfoProcess(CaseInfoProcessBaseConstsEnum.CASE_INFO_PROCESS_1.getIndex());
            caseInfo.setInfoProcessName(CaseInfoProcessBaseConstsEnum.CASE_INFO_PROCESS_1.getDes());
            caseInfo.setProcess(CaseProcessBaseConstsEnum.CASE_PROCESS_1.getIndex());
            caseInfo.setProcessName(CaseProcessBaseConstsEnum.CASE_PROCESS_1.getDes());
            caseInfo.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_1.getIndex());
            caseInfo.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_1.getDes());
            caseInfo.setCaseLevel(3);
            caseInfo.setCanal(CaseBaseConstsEnum.CASE_CANAL_2.getIndex());
            caseInfo.setCanalName(CaseBaseConstsEnum.CASE_CANAL_2.getDes());
            caseInfo.setCaseRef(utilsClient.createCaseRef());
            caseInfo.setVisitWay(CaseBaseConstsEnum.VISIT_WAY_2.getIndex());
            caseInfo.setVisitWayName(CaseBaseConstsEnum.VISIT_WAY_2.getDes());
            // 临时加上一级纠纷类型
            caseInfo.setCaseTypeFirst("24_01-2");
            caseInfo.setCaseTypeFirstName("劳动社保");
            this.saveOrUpdate(caseInfo);
            caseInfoUnfoldService.saveOrUpdate(caseInfoUnfold);
            // 启动工作流-自动调度流程
            caseTaskService.webStartFlowLFDJ(caseInfo);
            return registerSaveDTO.getId();
@@ -576,6 +628,36 @@
            log.error("service方法[CaseInfoService.caseRegisterWechat]调用异常:"+e, e);
            throw new ServiceException("CaseInfoService.caseRegisterWechat", e);
        }
    }
    /**
     * 生成调解案件标题
     * @param plaintiffs 申请人
     * @param defendants 被申请人
     * @param caseTypeName 纠纷类型
     * @return String
     */
    public String createCaseTitle(String plaintiffs, String defendants, String caseTypeName){
        StringBuffer caseTitle = new StringBuffer();
        if (plaintiffs.indexOf(BaseConsts.COMMA) != -1){
            caseTitle.append(plaintiffs.split(BaseConsts.COMMA)[0]).append("等");
        }else {
            caseTitle.append(plaintiffs.split(BaseConsts.COMMA)[0]);
        }
        if (StringUtils.isNotEmpty(defendants)) {
            caseTitle.append("和");
            if (defendants.indexOf(BaseConsts.COMMA) != -1) {
                caseTitle.append(defendants.split(BaseConsts.COMMA)[0]).append("等");
            } else {
                caseTitle.append(defendants.split(BaseConsts.COMMA)[0]);
            }
        }
        caseTitle.append("的");
        if (StringUtils.isNotEmpty(caseTypeName)){
            caseTitle.append(caseTypeName);
        }
        caseTitle.append("案件");
        return caseTitle.toString();
    }
    /**
@@ -604,13 +686,13 @@
                personService.saveOrUpdate(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);
@@ -632,16 +714,22 @@
                    caseAgent.setCreateTime(registerSaveDTO.getUpdateTime());
                    caseAgent.setUpdateTime(registerSaveDTO.getUpdateTime());
                    agentService.saveOrUpdate(caseAgent);
                    if (StringUtils.isNotEmpty(pagents.toString())) {
                        pagents.append(BaseConsts.COMMA);
                    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.getIndex().equals(caseAgent.getPerType())){
                        if (StringUtils.isNotEmpty(dagents.toString())) {
                            dagents.append(BaseConsts.COMMA);
                        }
                        dagents.append(caseAgent.getTrueName());
                    }
                    pagents.append(caseAgent.getTrueName());
                }
                //todo 绑定当事人小程序
            }
        }
        return peopleNum;
    }
@@ -702,6 +790,15 @@
                BeanUtils.copyProperties(caseInfo, caseInfoWeChatDTO);
                caseInfoWeChatDTO.setProcessStatus(caseInfo.getInfoProcess());
                caseInfoWeChatDTO.setProcessStatusName(caseInfo.getInfoProcessName());
                //扩展信息
                CaseInfoUnfold caseInfoUnfold = caseInfoUnfoldService.getById(caseInfo.getId());
                if(ObjectUtils.isNotEmpty(caseInfoUnfold)){
                    caseInfoWeChatDTO.setMediResult(caseInfoUnfold.getMediResult());
                    caseInfoWeChatDTO.setMediResultName(caseInfoUnfold.getMediResultName());
                    caseInfoWeChatDTO.setMediateDeptId(caseInfoUnfold.getMediateDeptId());
                    caseInfoWeChatDTO.setMediateDeptName(caseInfoUnfold.getMediateDeptName());
                }
                QueryWrapper<CasePerson> personWrapper1 = new QueryWrapper<>();
                personWrapper1.eq("case_id", caseInfo.getId());
                List<CasePerson> casePersonList1 = personService.list(personWrapper1);
@@ -720,6 +817,18 @@
                }
                caseInfoWeChatDTO.setDefendantList(defendantList);
                caseInfoWeChatDTO.setPlaintiffList(plaintiffList);
                //评价信息
                Map<String, Object> evaluateTerms = new HashMap<>();
                evaluateTerms.put("caseId", caseInfo.getId());
                evaluateTerms.put("deleteStatus", BaseConsts.DELETE_STATUS_0);
                evaluateTerms.put("evaluateUserId", loginUser.getId());
                long evaluateCount = caseEvaluateService.countTerms(evaluateTerms);
                if(evaluateCount > 0){
                    caseInfoWeChatDTO.setIsEvaluate("1");
                }else{
                    caseInfoWeChatDTO.setIsEvaluate("0");
                }
                list.add(caseInfoWeChatDTO);
            }
        }