张天森
2022-10-19 e93e68bfe605817d19b8f55a3f19c6c3049281d0
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java
@@ -12,6 +12,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.constants.Constants;
import com.panzhihua.common.constants.ReturnMsgConstants;
import com.panzhihua.common.enums.SanShuoEventStatusEnum;
import com.panzhihua.common.model.dtos.community.sanshuo.IndexDateDTO;
@@ -27,6 +28,7 @@
import com.panzhihua.service_community.api.ComSanShuoEventTransferRecordController;
import com.panzhihua.service_community.dao.ComActDAO;
import com.panzhihua.service_community.dao.ComEventMapper;
import com.panzhihua.service_community.dao.ComSanshuoExpertDao;
import com.panzhihua.service_community.dao.ComStreetDAO;
import com.panzhihua.service_community.entity.*;
import com.panzhihua.service_community.model.dos.ComActDO;
@@ -34,8 +36,10 @@
import com.panzhihua.service_community.service.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.RandomUtils;
import org.checkerframework.checker.units.qual.A;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestParam;
import javax.annotation.Resource;
import java.util.*;
@@ -81,10 +85,12 @@
    @Resource
    private CommediateTypeService commediateTypeService;
    @Resource
    private ComSanshuoExpertDao comSanshuoExpertDao;
    @Override
    public R pageByComEvent(ComEvent comEvent, Page pagination,LoginUserInfoVO loginUserInfoVO) {
        log.info("=================当前登陆的用户信息,用户类型"+loginUserInfoVO.getType()+"社区id"+loginUserInfoVO.getCommunityId());
        Boolean isExpertCheck=false;
        Long expertId=null;
        Boolean isStretAccount = isStreetAccount(loginUserInfoVO);
@@ -127,14 +133,12 @@
                comEvent.setCommunityIds(cids);
            }
        }
//        if (nonNull(loginUserInfoVO.getAccount())){
//            if (loginUserInfoVO.getAccount().equals("admin")){
//                comEvent.setUserType(null);
//            }
//        }
        if (nonNull(loginUserInfoVO.getAccount())){
            if (loginUserInfoVO.getAccount().equals("admin")){
                comEvent.setUserType(9);
            }
        }
        IPage<ComEvent> list=null;
        log.info("=====================当前的userType"+comEvent.getUserType());
        log.info("=====================是否专家账号查看"+isExpertCheck);
        //是否为专家查看自己发布的事件
        if (isExpertCheck && comEvent.getUserType()!=1){
            if (nonNull(comEventMapper.listEventIds(expertId))){
@@ -143,7 +147,6 @@
        }else{
            list = baseMapper.pageByComEvent(comEvent, pagination);
        }
        if (list.getRecords().size() < 1) {
            return R.ok(Collections.emptyList());
        }
@@ -157,10 +160,8 @@
            ComMediateType category = commediateTypeService.getById(comEvent1.getEventCategory());
            comEvent1.setEventCategoryName(category.getName());
            comEvent1.setHasPerm(hasPermission(comEvent1,loginUserInfoVO ));
            if (!comEvent.getUserType().equals(1)){
                this.accountMenu(comEvent1,comEvent.getUserType(),loginUserInfoVO,isStretAccount);
            }
        });
            this.accountMenu(comEvent1,comEvent.getUserType(),loginUserInfoVO,isStretAccount);
            });
        return R.ok(list);
    }
@@ -186,7 +187,7 @@
    public void accountMenu(ComEvent comEvent,Integer userType,LoginUserInfoVO loginUserInfoVO,Boolean isStreet){
        //四个账号级别
        Boolean isAdmin=false;
        if (isNull(userType)){
        if (userType.equals(9)){
            isAdmin=true;
        }
        comEvent.setDelete(1);
@@ -222,12 +223,13 @@
                comEvent.setSolve(0);
                return;
            }//未上报,根据状态决定权限
            if (comEvent.getEventProcessStatus().equals(1) || comEvent.getEventProcessStatus().equals(2)){
            if (comEvent.getEventProcessStatus().equals(1)){
                //待受理和待验证状态,仅有查看和受理权限,可能为用户选择该专家或上级单位分配给该专家
                //关闭调解和归档
                comEvent.setArchive(0);
                comEvent.setConciliation(0);
            } else if (comEvent.getEventProcessStatus().equals(5)){
            }
            else if (comEvent.getEventProcessStatus().equals(5)){
                //调解中,可以查看,调解
                comEvent.setArchive(0);
                comEvent.setSolve(0);
@@ -246,13 +248,23 @@
            //如果未上报到街道,当前事件权限和专家一样
            if (comEvent.getCurrentProcessType().equals(5)){
                //根据事件状态决定权限
                if (comEvent.getEventProcessStatus().equals(1) || comEvent.getEventProcessStatus().equals(2)){
                if (comEvent.getEventProcessStatus().equals(1) ){
                    //待受理和待验证状态,可以受理,分配专家
                    //关闭调解和归档
                    comEvent.setArchive(0);
                    comEvent.setConciliation(0);
                    comEvent.setChangeExpert(0);
                } else if (comEvent.getEventProcessStatus().equals(5)){
                } else if(comEvent.getEventProcessStatus().equals(2)){
                    //待分配和待验证状态,可以受理,分配专家
                    //关闭调解和归档
                    comEvent.setArchive(0);
                    comEvent.setConciliation(0);
                    comEvent.setChangeExpert(0);
                    if (comEvent.getSpecialistName().equals("待分配")){
                        comEvent.setSolve(0);
                    }
                }
                else if (comEvent.getEventProcessStatus().equals(5)){
                    //调解中,可以查看,调解,更换专家,删除
                    comEvent.setDistribution(0);
                    comEvent.setSolve(0);
@@ -272,7 +284,16 @@
                    comEvent.setArchive(0);
                    comEvent.setConciliation(0);
                    comEvent.setDistribution(0);
                } else if (comEvent.getEventProcessStatus().equals(5)){
                }
                else if (comEvent.getEventProcessStatus().equals(3)){
                    //分配新专家后
                    comEvent.setDistribution(0);
                    comEvent.setArchive(0);
                    comEvent.setChangeExpert(0);
                    comEvent.setSolve(0);
                    comEvent.setEventResult(null);
                    comEvent.setEventProcessStatus(1);
                }else if (comEvent.getEventProcessStatus().equals(5)){
                    //调解中,可以查看,调解,更换专家,删除
                    comEvent.setSolve(0);
                    comEvent.setArchive(0);
@@ -314,14 +335,32 @@
        }else if (userType.equals(3)){
            //分配行业分中心操作权限
            //是否上报到行业分中心
            if (comEvent.getReportCenter().equals(1) || comEvent.getCurrentProcessType().equals(1)){
            if (comEvent.getCurrentProcessType().equals(1)){
                //已经报到行业分中心
                if (comEvent.getEventProcessStatus().equals(1) || comEvent.getEventProcessStatus().equals(2)){
                if (comEvent.getEventProcessStatus().equals(1) ){
                    //待受理和待验证状态,可以受理,分配专家
                    //关闭调解和归档
                    comEvent.setArchive(0);
                    comEvent.setConciliation(0);
                } else if (comEvent.getEventProcessStatus().equals(5)){
                }else if(comEvent.getEventProcessStatus().equals(2)){
                    //待分配和待验证状态,可以受理,分配专家
                    //关闭调解和归档
                    comEvent.setArchive(0);
                    comEvent.setConciliation(0);
                    comEvent.setChangeExpert(0);
                    if (comEvent.getSpecialistName().equals("待分配")){
                        comEvent.setSolve(0);
                    }
                }
                else if (comEvent.getEventProcessStatus().equals(3)){
                    //分配新专家后
                    comEvent.setDistribution(0);
                    comEvent.setArchive(0);
                    comEvent.setChangeExpert(0);
                    comEvent.setSolve(0);
                    comEvent.setEventResult(null);
                    comEvent.setEventProcessStatus(1);
                }else if (comEvent.getEventProcessStatus().equals(5)){
                    //调解中,可以查看,调解,更换专家,删除
                    comEvent.setDistribution(0);
                    comEvent.setArchive(0);
@@ -349,9 +388,9 @@
        }else if (userType.equals(5)  || isStreet){
            //街道权限,操作街道下属社区的所有事件
            //是否上报到街道
            if (comEvent.getReportStreet().equals(1) || comEvent.getCurrentProcessType().equals(3)){
            if (comEvent.getCurrentProcessType().equals(3)){
                //已上报到街道
                if (comEvent.getEventProcessStatus().equals(1) || comEvent.getEventProcessStatus().equals(2)){
                if (comEvent.getEventProcessStatus().equals(1) ){
                    //待受理和待验证状态,可以受理,分配专家
                    //关闭调解和归档
                    comEvent.setArchive(0);
@@ -359,15 +398,26 @@
                    comEvent.setChangeExpert(0);
                    //comEvent.setDistribution(0);
                    comEvent.setSolve(0);
                } else if (comEvent.getEventProcessStatus().equals(5)){
                } else if(comEvent.getEventProcessStatus().equals(2)){
                    //待分配和待验证状态,可以受理,分配专家
                    //关闭调解和归档
                    comEvent.setArchive(0);
                    comEvent.setConciliation(0);
                    comEvent.setChangeExpert(0);
                    if (comEvent.getSpecialistName().equals("待分配")){
                        comEvent.setSolve(0);
                    }
                }else if (comEvent.getEventProcessStatus().equals(5)){
                    //调解中,可以查看,调解,更换专家,删除
                    comEvent.setDistribution(0);
                    comEvent.setArchive(0);
                    comEvent.setSolve(0);
                }else if (comEvent.getEventProcessStatus().equals(3)){
                    //分配新专家后
                    comEvent.setDistribution(0);
                    comEvent.setArchive(0);
                    comEvent.setChangeExpert(0);
                    comEvent.setSolve(0);
                    comEvent.setEventResult(null);
                    comEvent.setEventProcessStatus(1);
                }
@@ -390,8 +440,14 @@
                    comEvent.setChangeExpert(0);
                    comEvent.setConciliation(0);
                }
            }else{
            }else if (comEvent.getCurrentProcessType().equals(4)){
                //未上报到街道,仅查看
                comEvent.setSolve(0);
                comEvent.setDistribution(0);
                comEvent.setChangeExpert(0);
                comEvent.setConciliation(0);
            }else {
                comEvent.setArchive(0);
                comEvent.setSolve(0);
                comEvent.setDistribution(0);
@@ -403,17 +459,48 @@
            // 是否上报到三说会堂
            if (comEvent.getCurrentProcessType().equals(4) || comEvent.getReportHall().equals(1)){
                //已上报到三说会堂,可以操作
                if (comEvent.getEventProcessStatus().equals(1) || comEvent.getEventProcessStatus().equals(2)){
                if (comEvent.getEventProcessStatus().equals(1)){
                    //待受理和待验证状态,可以受理,分配专家
                    //关闭调解和归档
                    comEvent.setArchive(0);
                    comEvent.setSolve(0);
                    comEvent.setConciliation(0);
                } else if (comEvent.getEventProcessStatus().equals(5)){
                    //调解中,可以查看,调解,更换专家,删除
                    comEvent.setChangeExpert(0);
                }
                else if(comEvent.getEventProcessStatus().equals(2)){
                    //待分配和待验证状态,可以受理,分配专家
                    //关闭调解和归档
                    comEvent.setArchive(0);
                    comEvent.setConciliation(0);
                    comEvent.setChangeExpert(0);
                    if (comEvent.getSpecialistName().equals("待分配")){
                        comEvent.setSolve(0);
                    }
                }else if (comEvent.getEventProcessStatus().equals(3)){
                    //新分配给专家并且专家还未受理
                    comEvent.setDistribution(0);
                    comEvent.setArchive(0);
                } else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventSucceed().equals(2)){
                    //comEvent.setConciliation(0);
                    comEvent.setChangeExpert(0);
                    comEvent.setSolve(0);
                }
                else if (comEvent.getEventProcessStatus().equals(5)){
                    //调解中,可以查看,调解,更换专家,删除
                    comEvent.setDistribution(0);
                    comEvent.setSolve(0);
                    comEvent.setArchive(0);
                } else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventResult().equals(1)){
                    //失败后转交三说会堂
                    comEvent.setSolve(0);
                    comEvent.setDistribution(0);
                    //comEvent.setConciliation(0);
                    comEvent.setEventProcessStatus(2);
                    comEvent.setArchive(0);
                    //comEvent.setChangeExpert(0);
                }
                else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventSucceed().equals(2)){
                    //调解完成,可以归档,查看
                    comEvent.setConciliation(0);
                    comEvent.setSolve(0);
                    comEvent.setDistribution(0);
                    comEvent.setChangeExpert(0);
@@ -424,6 +511,7 @@
                comEvent.setSolve(0);
                comEvent.setDistribution(0);
                comEvent.setChangeExpert(0);
                comEvent.setConciliation(0);
            }
        }
    }
@@ -714,15 +802,17 @@
        comEventDetailVO.setImages(comEventRequestImageVO);
        map.put("specter", specter);
        map.put("eventDetail", comEventDetailVO);
        List<ComEventTransferRecord> archiveLog=new ArrayList<>();
        List<ComEventTransferRecord> transferRecord = comEventTransferRecordService.list(new QueryWrapper<ComEventTransferRecord>().lambda().eq(ComEventTransferRecord::getEventId, id).orderByDesc(ComEventTransferRecord::getCreateAt));
        transferRecord.forEach(comEventTransferRecord -> {
            List<ComEventResource> list = comEventResourceService.list(new QueryWrapper<ComEventResource>().lambda().eq(ComEventResource::getRefId, comEvent.getId()).notIn(ComEventResource::getStatus,(1)).eq(ComEventResource::getTransferId, comEventTransferRecord.getId()));
            List<ComEventRequestImageVO> ImageVO = CopyUtil.deepCopyListObject(list, ComEventRequestImageVO.class);
            comEventTransferRecord.setImages(ImageVO);
            if (comEventTransferRecord.getEventStatus().equals(7)){
                map.put("archiveLog", comEventTransferRecord);
                archiveLog.add(comEventTransferRecord);
            }
        });
        map.put("archiveLog", archiveLog);
        //迭代器迭代删除归档记录
        Iterator<ComEventTransferRecord> iterator = transferRecord.iterator();
        while (iterator.hasNext()){
@@ -771,26 +861,24 @@
    @Override
    public R calculate(LoginUserInfoVO loginUserInfoVO) {
        ComEvent comEvent=new ComEvent();
        comEvent.setUserType(3);
        Boolean isExpertCheck=false;
        Long expertId=null;
        Boolean isStretAccount = isStreetAccount(loginUserInfoVO);
        if (nonNull(comEvent.getUserType())){
             if (loginUserInfoVO.getType().equals(13) || loginUserInfoVO.getType().equals(11)){
        if (loginUserInfoVO.getType().equals(13) || loginUserInfoVO.getType().equals(11)){
                ComSanshuoExpert expert=new ComSanshuoExpert();
                //专家账号权限(后台)
                if (nonNull(loginUserInfoVO.getPhone())){
                //专家后台账号
            if (nonNull(loginUserInfoVO.getPhone())){
                    expert = comSanShuoExpertService.getOne(new QueryWrapper<ComSanshuoExpert>().lambda().eq(ComSanshuoExpert::getPhone, loginUserInfoVO.getPhone()));
                }else{
            }else{
                    //账号获取
                    expert = comSanShuoExpertService.getOne(new QueryWrapper<ComSanshuoExpert>().lambda().eq(ComSanshuoExpert::getAccount, loginUserInfoVO.getAccount()));
                }
                comEvent.setUserType(2);
                if (nonNull(expert)){
            }
            comEvent.setUserType(2);
            if (nonNull(expert)){
                    comEvent.setSpecialistId(expert.getId());
                    isExpertCheck=true;
                    expertId=expert.getId();
                }
            }
            }else if (loginUserInfoVO.getType().equals(12)){
                //行业分中心权限
                comEvent.setUserType(3);
@@ -809,20 +897,20 @@
                List<Long> cids = comActDAO.selectCommunityByStreetId(loginUserInfoVO.getStreetId());
                comEvent.setUserType(5);
                comEvent.setCommunityIds(cids);
            }
        }
        if (isExpertCheck && comEvent.getUserType()!=1){
            if (nonNull(comEventMapper.listEventIds(expertId))){
         }
        if (isExpertCheck){
            if(nonNull(comEventMapper.listEventIds(expertId))){
                List<Long> eventIds = comEventMapper.listEventIds(expertId);
                //获取该专家的所有事件
                comEvent.setEventIds(eventIds);
            }
        }
        if (nonNull(loginUserInfoVO.getAccount())){
            if (loginUserInfoVO.getAccount().equals("admin")){
                comEvent.setUserType(null);
                comEvent.setUserType(9);
            }
        }
        log.info("当前userType===="+comEvent.getUserType());
        List<ComEventCalculateVO> calculateList = baseMapper.calculate(comEvent);
        ComEventCalculateVO comEventCalculateVO =new ComEventCalculateVO();
        comEventCalculateVO.setStatus("0");
@@ -882,6 +970,8 @@
                vo.setSuccessRate(NumberUtil.div(vo.getSuccess(),vo.getAccepted(),2));
            }
        }
        vo.setExpert(comSanshuoExpertDao.selectExpertCount(indexDataDTO));
        //查询当前级别下的专家
        //折线图X轴
        List<Date> dates = pastTwelveMoth();
        vo.setX(getYAndM(dates));
@@ -900,13 +990,13 @@
    @Override
    public R eventIndexData(Integer type) {
        //获取事件总数
        Integer eventCount = comEventMapper.selectCount(new QueryWrapper<ComEvent>().notIn("event_process_status", (7), (8)));
        Integer eventCount = comEventMapper.selectCount(new QueryWrapper<ComEvent>().notIn("event_process_status",(9)));
        if (type.equals(1)){
            //受理级别占比
            List<EventRateVO> eventRateVOS = comEventMapper.eventRate();
            for (EventRateVO eventRateVO : eventRateVOS) {
                if (nonNull(eventRateVO)){
                    eventRateVO.setName(typeToName(eventRateVO.getType()));
                    eventRateVO.setName(typeToName(eventRateVO.getCurrentProcessType()));
                    if (nonNull(eventCount) && !eventCount.equals(0)){
                        //计算占比
                        eventRateVO.setRate(NumberUtil.div(eventRateVO.getCount(),eventCount,2));
@@ -948,13 +1038,23 @@
        comEventMapper.updateLog(id,comEvent.getSpecialistId());
    }
    @Override
    public R listStreetScreen() {
        return R.ok(comStreetDAO.selectList(new QueryWrapper<ComStreetDO>().eq("app_id", "wx0cef797390444b75")));
    }
    @Override
    public R listCommunityScreen() {
        return R.ok(comActDAO.selectList(new QueryWrapper<ComActDO>().lambda().eq(ComActDO::getAppId, "wx0cef797390444b75")));
    }
    public String typeToName(Integer type){
        switch (type){
            case 1:
                return "行业分中心受理";
            case 2:
                return "街道调解站受理";
            case 3:
                return "街道调解站受理";
            case 2:
                return "社区调解站受理";
            case 4:
                return "区三说会堂受理";