yanghui
2022-11-29 3da01b2a6cf247f90aed86fc37d8cb0ab51a4b4c
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java
@@ -41,6 +41,7 @@
import org.springframework.web.bind.annotation.RequestParam;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import static java.util.Objects.isNull;
@@ -96,6 +97,7 @@
        Boolean isExpertCheck=false;
        Long expertId=null;
        Boolean isStretAccount = isStreetAccount(loginUserInfoVO);
//        comEvent.setAppId(loginUserInfoVO.getAppId());
        if (nonNull(comEvent.getUserType())){
            if (comEvent.getUserType().equals(1)){
                //个人账号权限
@@ -256,6 +258,7 @@
                    comEvent.setArchive(0);
                    comEvent.setConciliation(0);
                    comEvent.setChangeExpert(0);
                    comEvent.setDistribution(0);
                } else if(comEvent.getEventProcessStatus().equals(2)){
                    //待分配和待验证状态,可以受理,分配专家
                    //关闭调解和归档
@@ -300,7 +303,7 @@
                    comEvent.setSolve(0);
                    comEvent.setArchive(0);
                    comEvent.setDistribution(0);
                } else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventResult().equals(1)){
                } else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventResult().equals(1) && !comEvent.getIsEnd().equals(1)){
                    //上报并且调解失败,此时事件的状态为6,事件结果为调解失败
                    //comEvent.setDistribution(0);
                    comEvent.setEventResult(null);
@@ -323,8 +326,11 @@
                    //关闭所有权限
                    comEvent.setDistribution(0);
                    comEvent.setSolve(0);
                    comEvent.setArchive(0);
                    //comEvent.setArchive(0);
                    comEvent.setChangeExpert(0);
                    comEvent.setConciliation(0);
                }
            }
            else{
                //已上报到街道或三说会堂,社区没有分配和受理权限权限
@@ -366,20 +372,22 @@
                    //调解中,可以查看,调解,更换专家,删除
                    comEvent.setDistribution(0);
                    comEvent.setArchive(0);
                }  else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventResult().equals(1)){
                    comEvent.setSolve(0);
                }else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventResult().equals(1) && !comEvent.getIsEnd().equals(1)){
                    //调解完成,可以归档,查看
                    comEvent.setEventResult(null);
                    comEvent.setEventProcessStatus(2);
                    comEvent.setSolve(0);
                    comEvent.setDistribution(0);
                    //comEvent.setChangeExpert(0);
                    comEvent.setArchive(0);
                }
                else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventSucceed().equals(2)){
                    //comEvent.setArchive(0);
                    comEvent.setConciliation(0);
                }else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventSucceed().equals(2)){
                    //调解完成,可以归档,查看
                    comEvent.setSolve(0);
                    comEvent.setDistribution(0);
                    comEvent.setChangeExpert(0);
                    comEvent.setConciliation(0);
                }
            }else if (comEvent.getCurrentProcessType().equals(5)){
                //根据事件状态决定权限
@@ -421,11 +429,12 @@
            }
            else{
                //未上上报到行业分中心,或者已上报到区三说会堂,仅查看
                comEvent.setArchive(0);
                //comEvent.setArchive(0);
                comEvent.setSolve(0);
                comEvent.setDistribution(0);
                comEvent.setChangeExpert(0);
                //comEvent.setConciliation(0);
                comEvent.setConciliation(0);
            }
        }else if (userType.equals(5)  || isStreet){
            //街道权限,操作街道下属社区的所有事件
@@ -463,7 +472,7 @@
                    comEvent.setEventResult(null);
                    comEvent.setEventProcessStatus(1);
                }
                else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventResult().equals(1)){
                else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventResult().equals(1) && !comEvent.getIsEnd().equals(1)){
                    //设置为待受理
                    comEvent.setEventResult(null);
                    comEvent.setEventProcessStatus(2);
@@ -531,7 +540,7 @@
                    comEvent.setDistribution(0);
                    comEvent.setSolve(0);
                    comEvent.setArchive(0);
                } else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventResult().equals(1)){
                } else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventResult().equals(1) && !comEvent.getIsEnd().equals(1)){
                    //失败后转交三说会堂
                    comEvent.setSolve(0);
                    comEvent.setDistribution(0);
@@ -617,12 +626,15 @@
            comEvent.setCurrentOrgId(community.getCommunityId().toString());
            comEvent.setCurrentProcessType(5);
        }
        if (!StringUtils.isEmpty(comEvent.getCenterId())) {
        if (!StringUtils.isEmpty(comEvent.getCenterId()))   {
            //创建时处理级别都是专家
            ComSanshuoIndustryCenter center = comSanShuoIndustryCenterService.getById(comEvent.getCenterId());
            comEvent.setCurrentOrgName(center.getName());
            comEvent.setCurrentOrgId(center.getId().toString());
            comEvent.setCurrentProcessType(5);
        }
        if (StringUtils.isNotEmpty(comEvent.getCenterId())){
            comEvent.setRequestUserCommunity(null);
        }
        comEvent.setUserEventStatus(2);
        //设置为未上报
@@ -650,17 +662,20 @@
        return R.ok(ReturnMsgConstants.SAVE_SUCCESS);
    }
    public void sendMessage(Long expertId,ComEvent comEvent){
        if (nonNull(comEvent.getRequestUserCommunity()) && comEvent.getRequestUserCommunity().equals(10172)){
            return;
        }
        //获取专家的openId
        ComSanshuoExpert expert = comSanShuoExpertService.getById(expertId);
        SysUser sysUser = sysUserDao.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getPhone, expert.getPhone()).eq(SysUser::getType, 1));
        SysUser sysUser = sysUserDao.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getPhone, expert.getPhone()).eq(SysUser::getType, 1).eq(SysUser::getAppId,"wx0cef797390444b75" ));
        SanShuoMessageVO vo=new SanShuoMessageVO();
        if (nonNull(sysUser)){
            if (isNull(sysUser.getOpenid())){
                log.info("专家未登陆APP,无法推送");
                return;
            }
        if (isNull(sysUser)){
            return;
        }
        if (isNull(sysUser.getOpenid())){
           log.info("专家未登陆APP,无法推送");
           return;
        }
        vo.setTouser(sysUser.getOpenid());
        vo.setThing1(commediateTypeService.getById(comEvent.getEventCategory()).getName());
@@ -809,6 +824,11 @@
                //已是最高上报级别,无法上报
            }
        }
        //是否为已完成并且不上报
        if (!comEventConciliationVO.getReportSuperior() && comEventConciliationVO.getEventSucceed().equals(2)){
            comEvent.setIsEnd(1);
        }
        int flag = baseMapper.updateById(comEvent);
        comEventTransferRecord.setEventId(comEvent.getId());
        comEventTransferRecord.setSave(true);
@@ -849,7 +869,7 @@
                || comEvent.getEventProcessStatus() == SanShuoEventStatusEnum.VALID.getCode().intValue()) {
            comEvent.setId(id);
            comEvent.setUserEventStatus(4);
            comEvent.setEventProcessStatus(8);
            comEvent.setEventProcessStatus(9);
            comEvent.setRevokeDes("用户手动取消");
            comEvent.setRevokeDate(new Date());
            int flag = baseMapper.updateById(comEvent);
@@ -896,8 +916,23 @@
        List<ComEventResource> resource = comEventResourceService.list(new QueryWrapper<ComEventResource>().lambda().eq(ComEventResource::getRefId, id)
                .eq(ComEventResource::getStatus, 5));
        map.put("archiveImage", resource);
        map.put("contact", getPhone(comEvent));
        return map;
    }
    public String getPhone(ComEvent comEvent){
        if (isNull(comEvent.getRequestUserCommunity())){
            return comSanShuoIndustryCenterService.getById(comEvent.getCenterId()).getPhone();
        }else {
            String contactsPhone = comActDAO.selectById(comEvent.getRequestUserCommunity()).getContactsPhone();
            if (isNull(contactsPhone)){
                return null;
            }
            return contactsPhone;
        }
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -924,14 +959,15 @@
        comEvent.setSpecialistName(specter.getName());
        comEvent.setEventProcessStatus(SanShuoEventStatusEnum.VALID.getCode());
        int flag = baseMapper.updateById(comEvent);
        sendMessage(specialistId,comEvent );
        ComEvent comEvent1 = comEventMapper.selectById(id);
        sendMessage(specialistId,comEvent1 );
        //添加一条对应记录
        comEventMapper.insertEventAndExpertRecord(id, specialistId,1);
        return flag > 0 ? R.ok() : R.fail(ReturnMsgConstants.UPDATE_FALSE);
    }
    @Override
    public R calculate(LoginUserInfoVO loginUserInfoVO) {
    public R calculate(LoginUserInfoVO loginUserInfoVO,Integer level,Long id) {
        ComEvent comEvent=new ComEvent();
        Boolean isExpertCheck=false;
        Long expertId=null;
@@ -983,6 +1019,17 @@
            }
        }
        log.info("当前userType===="+comEvent.getUserType());
        //comEvent.setAppId(loginUserInfoVO.getAppId());
        R<LoginUserInfoVO> r = userService.detailUser(loginUserInfoVO.getUserId());
        LoginUserInfoVO user = r.getData();
        if (nonNull(user.getAppId())){
            comEvent.setAppId(user.getAppId());
        }
        if (nonNull(level) && nonNull(id)){
            comEvent.setLevel(level);
            comEvent.setSearchId(id);
            comEvent.setUserType(null);
        }
        List<ComEventCalculateVO> calculateList = baseMapper.calculate(comEvent);
        ComEventCalculateVO comEventCalculateVO =new ComEventCalculateVO();
        comEventCalculateVO.setStatus("0");
@@ -1039,7 +1086,12 @@
        if (nonNull(vo.getSuccess()) && !vo.getSuccess().equals(0)){
            if (nonNull(vo.getAccepted()) && !vo.getAccepted().equals(0)){
                //计算成功率
                vo.setSuccessRate(NumberUtil.div(vo.getSuccess(),vo.getAccepted(),2));
                try {
                    vo.setSuccessRate(NumberUtil.div(vo.getSuccess(),vo.getAccepted(),2));
                }catch (NullPointerException e){
                    vo.setSuccessRate(new BigDecimal(0));
                }
            }
        }
        vo.setExpert(comSanshuoExpertDao.selectExpertCount(indexDataDTO));
@@ -1066,9 +1118,19 @@
        if (type.equals(1)){
            //受理级别占比
            List<EventRateVO> eventRateVOS = comEventMapper.eventRate();
            //获取专家受理的数量
            Integer expertCount=comEventMapper.expertSolveCountCommunity();
            //获取行业分中心受理数量
            Integer centerCount=comEventMapper.expertSolveCountCenter();
            for (EventRateVO eventRateVO : eventRateVOS) {
                if (nonNull(eventRateVO)){
                    eventRateVO.setName(typeToName(eventRateVO.getCurrentProcessType()));
                    eventRateVO.setName(typeToName(eventRateVO.getType()));
//                    if (eventRateVO.getCurrentProcessType().equals(2)){
//                        eventRateVO.setCount(eventRateVO.getCount()+expertCount);
//                    }
//                    if (eventRateVO.getCurrentProcessType().equals(1)){
//                        eventRateVO.setCount(eventRateVO.getCount()+centerCount);
//                    }
                    if (nonNull(eventCount) && !eventCount.equals(0)){
                        //计算占比
                        eventRateVO.setRate(NumberUtil.div(eventRateVO.getCount(),eventCount,2));
@@ -1125,11 +1187,11 @@
            case 1:
                return "行业分中心受理";
            case 3:
                return "街道调解站受理";
                return "镇/街道受理案件";
            case 2:
                return "社区调解站受理";
                return "村/社区受理案件";
            case 4:
                return "区三说会堂受理";
                return "区三说会堂中心受理";
        }
        return null;
    }
@@ -1137,13 +1199,13 @@
    public String typeToNameExpert(Integer type){
        switch (type){
            case 1:
                return "区三说会堂专家";
                return "区三说会堂中心专家";
            case 2:
                return "行业分中心专家";
            case 3:
                return "街道调解站专家";
                return "镇/街道调解专家";
            case 4:
                return "社区调解站专家";
                return "村/社区调解专家";
        }
        return null;
    }