From 3c884ccd7b51edf3b36840bf99de5edaa41a38a7 Mon Sep 17 00:00:00 2001 From: 张天森 <1292933220@qq.com> Date: 星期三, 12 十月 2022 19:05:28 +0800 Subject: [PATCH] 三说会堂事件流程处理 --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java | 213 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 178 insertions(+), 35 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java index 24a63b3..a696575 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java @@ -2,7 +2,9 @@ import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.generator.SnowflakeGenerator; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.RandomUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -18,6 +20,7 @@ import com.panzhihua.common.utlis.DateUtils; import com.panzhihua.common.utlis.Snowflake; import com.panzhihua.common.utlis.StringUtils; +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.ComStreetDAO; @@ -73,9 +76,52 @@ @Resource private CommediateTypeService commediateTypeService; + @Override - public R pageByComEvent(ComEvent comEvent, Page pagination) { - IPage<ComEvent> list = baseMapper.pageByComEvent(comEvent, pagination); + public R pageByComEvent(ComEvent comEvent, Page pagination,LoginUserInfoVO loginUserInfoVO) { + log.info("当前登陆的用户信息,用户类型"+loginUserInfoVO.getType()+"社区id"+loginUserInfoVO.getCommunityId()); + Boolean isExpertCheck=false; + Long expertId=null; + if (nonNull(comEvent.getUserType())){ + if (comEvent.getUserType().equals(1)){ + //个人账号权限 + comEvent.setRequestUserId(loginUserInfoVO.getUserId()); + }else if (comEvent.getUserType().equals(2) || loginUserInfoVO.getType().equals(13)){ + ComSanshuoExpert expert=new ComSanshuoExpert(); + //专家账号权限(小程序和后台) + if (nonNull(loginUserInfoVO.getPhone())){ + expert = comSanShuoExpertService.getOne(new QueryWrapper<ComSanshuoExpert>().lambda().eq(ComSanshuoExpert::getPhone, loginUserInfoVO.getPhone())); + }else{ + //账号获取 + expert = comSanShuoExpertService.getOne(new QueryWrapper<ComSanshuoExpert>().lambda().eq(ComSanshuoExpert::getAccount, loginUserInfoVO.getAccount())); + } + comEvent.setUserType(2); + if (nonNull(expert)){ + comEvent.setSpecialistId(expert.getId()); + isExpertCheck=true; + expertId=expert.getId(); + } + }else if (loginUserInfoVO.getType().equals(12)){ + //行业分中心权限 + comEvent.setUserType(3); + //获取行业分中心id + ComSanshuoIndustryCenter center = comSanShuoIndustryCenterService.getOne(new QueryWrapper<ComSanshuoIndustryCenter>().lambda().eq(ComSanshuoIndustryCenter::getAccount, loginUserInfoVO.getAccount())); + if (nonNull(center)){ + comEvent.setCenterId(center.getId().toString()); + } + }else if (loginUserInfoVO.getType().equals(3)){ + //社区后台权限 + comEvent.setUserType(4); + comEvent.setCommunityId(loginUserInfoVO.getCommunityId()); + } + } + IPage<ComEvent> list=null; + if (isExpertCheck){ + list = comEventMapper.pageByComEventExpert(comEventMapper.listEventIds(expertId), comEvent, pagination); + }else{ + list = baseMapper.pageByComEvent(comEvent, pagination); + } + if (list.getRecords().size() < 1) { return R.ok(Collections.emptyList()); } @@ -83,16 +129,24 @@ List<ComEventResource> resourceList = comEventResourceService.list(new QueryWrapper<ComEventResource>().lambda().eq(ComEventResource::getRefId, comEvent1.getId())); List<ComEventRequestImageVO> comEventRequestImageVO = CopyUtil.deepCopyListObject(resourceList, ComEventRequestImageVO.class); comEvent1.setImages(comEventRequestImageVO); - comEvent1.setIcon(userService.getUserInfoByUserId(comEvent1.getRequestUserId().toString()).getData().getImageUrl()); + if (nonNull(userService.getUserInfoByUserId(comEvent1.getRequestUserId().toString()).getData().getImageUrl())){ + comEvent1.setIcon(userService.getUserInfoByUserId(comEvent1.getRequestUserId().toString()).getData().getImageUrl()); + } ComMediateType category = commediateTypeService.getById(comEvent1.getEventCategory()); comEvent1.setEventCategoryName(category.getName()); + //当前账号能否操作此条记录,根据事件流转记录是否有归档的记录决定当前用户能否对添加归档记录 + ComEventTransferRecord archiveRecord = comEventTransferRecordService.getOne(new QueryWrapper<ComEventTransferRecord>().lambda().eq(ComEventTransferRecord::getEventId, comEvent1.getId()).eq(ComEventTransferRecord::getFromUserId, loginUserInfoVO.getUserId()).eq(ComEventTransferRecord::getEventStatus, 7)); + comEvent1.setIsArchive(1); + if(nonNull(archiveRecord)){ + comEvent1.setIsArchive(0); + } }); return R.ok(list); } @Override - public List<ComEvent> listByComEvent(ComEvent comEvent) { - List<ComEvent> list = baseMapper.listByComEvent(comEvent); + public List<ComEvent> listByComEvent(ComEvent comEvent,LoginUserInfoVO loginUserInfoVO) { + List<ComEvent> list = baseMapper.listByComEvent(comEvent,null); if (list.size() < 1) { return Collections.emptyList(); } @@ -104,18 +158,22 @@ public R insertComEvent(ComEvent comEvent) { ComSanshuoExpert expert = comSanShuoExpertService.getById(comEvent.getSpecialistId()); if (comEvent.getRequestUserCommunity() != null) { + //创建时处理级别都是专家 ComActDO community = comActDAO.selectById(comEvent.getRequestUserCommunity()); comEvent.setCurrentOrgName(community.getName()); comEvent.setCurrentOrgId(community.getCommunityId().toString()); - comEvent.setCurrentProcessType(2); + comEvent.setCurrentProcessType(5); } if (!StringUtils.isEmpty(comEvent.getCenterId())) { + //创建时处理级别都是专家 ComSanshuoIndustryCenter center = comSanShuoIndustryCenterService.getById(comEvent.getCenterId()); comEvent.setCurrentOrgName(center.getName()); comEvent.setCurrentOrgId(center.getId().toString()); - comEvent.setCurrentProcessType(1); + comEvent.setCurrentProcessType(5); } comEvent.setUserEventStatus(2); + //设置为未上报 + comEvent.setReportLevel(0); comEvent.setEventProcessStatus(SanShuoEventStatusEnum.UNDO.getCode()); comEvent.setSpecialistName(expert.getName()); comEvent.setOrderSn(DateUtils.getDateFormatString(new Date(), "yyyyMMddHHmmss") + RandomUtils.nextLong(1, 10000)); @@ -127,9 +185,12 @@ comEvent.setUpdateBy(comEvent.getRequestUserId()); comEvent.setUpdateAt(new Date()); boolean flag = save(comEvent); + //添加一条对应记录 + comEventMapper.insertEventAndExpertRecord(comEvent.getId(),expert.getId(),0); if (!flag) { return R.fail(ReturnMsgConstants.DATA_EXIST); } + //提交不视为一次流转记录,不保存图片 saveEventImageList(comEvent.getImages(), comEvent.getId(),null,1); return R.ok(ReturnMsgConstants.SAVE_SUCCESS); } @@ -162,6 +223,9 @@ /* if (checkExist(comEvent.getOrderSn(), comEvent.getId())) { return R.fail(ReturnMsgConstants.DATA_EXIST); }*/ + //清除专家信息 + comEvent.setSpecialistId(null); + comEvent.setSpecialistName(null); int flag = baseMapper.updateById(comEvent); return flag > 0 ? R.ok(comEvent, ReturnMsgConstants.UPDATE_SUCCESS) : R.fail(ReturnMsgConstants.UPDATE_FALSE); } @@ -181,35 +245,81 @@ @Override @Transactional(rollbackFor = Exception.class) public R conciliationEvent(ComEventConciliationVO comEventConciliationVO, LoginUserInfoVO loginUserInfo) { - saveEventImageList(comEventConciliationVO.getImages(), comEventConciliationVO.getId(),null,4); ComEvent comEvent = baseMapper.selectById(comEventConciliationVO.getId()); comEvent.setEventSucceed(comEventConciliationVO.getEventSucceed()); comEvent.setEventResult(comEventConciliationVO.getEventResult()); comEvent.setReportSuperior(comEventConciliationVO.getReportSuperior()); - if(comEventConciliationVO.getEventSucceed() ==2){ + ComEventTransferRecord comEventTransferRecord = new ComEventTransferRecord(); + if(comEventConciliationVO.getEventSucceed().equals(2)){ comEvent.setEventProcessStatus(6); } comEvent.setCurrentEventProcessResult(comEventConciliationVO.getCurrentEventProcessResult()); //如果当前请求,需要上报上级进行处理 if (comEventConciliationVO.getReportSuperior()) { - if (comEvent.getCurrentProcessType() == 2) { - //查询街道的账号 - comEvent.setCurrentProcessType(3); - ComActDO comActDO = comActDAO.selectById(comEvent.getCurrentOrgId()); - comEvent.setCurrentOrgId(comActDO.getStreetId().toString()); - } else { - //查询街道的上级区域账号 - comEvent.setCurrentProcessType(4); - try { - ComStreetDO street = comStreetDAO.selectById(comEvent.getCurrentOrgId()); - comEvent.setCurrentOrgId(street.getAreaCode().toString()); - } catch (Exception e) { - e.printStackTrace(); + //判断当前的处理级别 + if (comEvent.getCurrentProcessType() == 5) { + //获取专家账号级别决定上报的级别 + ComSanshuoExpert expert = comSanShuoExpertService.getById(comEvent.getSpecialistId()); + if (expert.getLevel().equals(4)){ + //上报到社区 + //查询社区账号,由专家转交到社区 + comEvent.setCurrentProcessType(2); + ComActDO comActDO = comActDAO.selectById(expert.getCommunityId()); + comEvent.setCurrentOrgId(comActDO.getStreetId().toString()); + //生成一次流转记录 + comEvent.setCurrentEventProcessResult("专家上报到社区"); + comEventTransferRecord.setFromId(comEvent.getSpecialistId()); + comEventTransferRecord.setToId(Long.parseLong(comEvent.getCurrentOrgId())); + comEventTransferRecord.setReportLevel(4); + comEvent.setReportLevel(4); + }else if (expert.getLevel().equals(2)){ + //上报到行业分中心 + comEvent.setCurrentProcessType(1); + comEvent.setCurrentOrgId(expert.getIndustryCenterId().toString()); + //生成一次流转记录 + comEvent.setCurrentEventProcessResult("专家上报到行业分中心"); + comEventTransferRecord.setFromId(comEvent.getSpecialistId()); + comEventTransferRecord.setToId(expert.getIndustryCenterId()); + comEventTransferRecord.setReportLevel(3); + comEvent.setReportLevel(3); } + }else if (comEvent.getCurrentProcessType() == 1){ + //行业分中心上报到区三说会堂 + comEvent.setCurrentProcessType(4); + comEvent.setCurrentOrgId("99999"); + //生成一次流转记录 + comEvent.setCurrentEventProcessResult("行业分中心上报到区三说会堂"); + comEventTransferRecord.setFromId(comEvent.getSpecialistId()); + comEventTransferRecord.setToId(99999L); + comEventTransferRecord.setReportLevel(5); + comEvent.setReportLevel(5); + }else if(comEvent.getCurrentProcessType() == 2){ + //社区上报到街道 + comEvent.setCurrentProcessType(3); + //获取街道id + ComActDO comActDO = comActDAO.selectOne(new QueryWrapper<ComActDO>().lambda().eq(ComActDO::getCommunityId, comEvent.getRequestUserCommunity()).eq(ComActDO::getAppId, "wx0cef797390444b75")); + comEvent.setCurrentOrgId(comActDO.getStreetId().toString()); + //生成一次流转记录 + comEvent.setCurrentEventProcessResult("社区报到街道"); + comEventTransferRecord.setFromId(comEvent.getRequestUserCommunity()); + comEventTransferRecord.setToId(comActDO.getStreetId()); + comEventTransferRecord.setReportLevel(2); + comEvent.setReportLevel(2); + }else if(comEvent.getCurrentProcessType() == 3){ + //街道上报到区三说会堂 + comEvent.setCurrentProcessType(4); + comEvent.setCurrentOrgId("99999"); + //生成一次流转记录 + comEvent.setCurrentEventProcessResult("街道上报到区三说会堂"); + comEventTransferRecord.setFromId(comEvent.getSpecialistId()); + comEventTransferRecord.setToId(99999L); + comEventTransferRecord.setReportLevel(1); + comEvent.setReportLevel(1); + }else { + //已是最高上报级别,无法上报 } } int flag = baseMapper.updateById(comEvent); - ComEventTransferRecord comEventTransferRecord = new ComEventTransferRecord(); comEventTransferRecord.setEventId(comEvent.getId()); comEventTransferRecord.setSave(true); comEventTransferRecord.setProcessResult(comEvent.getCurrentEventProcessResult()); @@ -225,9 +335,20 @@ comEventTransferRecord.setSpecialistName(comEvent.getSpecialistName()); comEventTransferRecord.setEventResult(comEvent.getEventSucceed()); comEventTransferRecord.setEventStatus(comEvent.getEventProcessStatus()); - saveEventImageList(comEvent.getImages(),comEvent.getId(),comEventTransferRecord.getId(),4); + //雪花id失效,使用eventId随机生成 + comEventTransferRecord.setId(Snowflake.getId()); + //saveEventImageList(comEvent.getImages(),comEvent.getId(),comEventTransferRecord.getId(),4); + saveEventImageList(comEventConciliationVO.getImages(), comEventConciliationVO.getId(),comEventTransferRecord.getId(),4); comEventTransferRecordService.insertComEventTransferRecord(comEventTransferRecord); return flag > 0 ? R.ok() : R.fail(ReturnMsgConstants.UPDATE_FALSE); + } + + /** + * 创建上报记录 + * */ + public void createTransferLog(ComEventTransferRecord record) { + record.setId(Snowflake.getId()); + comEventTransferRecordService.insertComEventTransferRecord(record); } @Override @@ -238,8 +359,9 @@ || comEvent.getEventProcessStatus() == SanShuoEventStatusEnum.VALID.getCode().intValue()) { comEvent.setId(id); comEvent.setUserEventStatus(4); - comEvent.setEventProcessStatus(SanShuoEventStatusEnum.CANCEL.getCode()); + comEvent.setEventProcessStatus(8); comEvent.setRevokeDes("用户手动取消"); + comEvent.setRevokeDate(new Date()); int flag = baseMapper.updateById(comEvent); return flag > 0 ? R.ok() : R.fail(ReturnMsgConstants.UPDATE_FALSE); } else { @@ -254,18 +376,30 @@ ComEvent comEvent = baseMapper.selectById(id); ComSanshuoExpert specter = comSanShuoExpertService.getById(comEvent.getSpecialistId()); CopyUtil.copyProperties(comEvent, comEventDetailVO); + comEventDetailVO.setCategoryName(commediateTypeService.getById(comEventDetailVO.getEventCategory()).getName()); List<ComEventResource> resourceList = comEventResourceService.list(new QueryWrapper<ComEventResource>().lambda().eq(ComEventResource::getRefId, id) .eq(ComEventResource::getStatus,1)); List<ComEventRequestImageVO> comEventRequestImageVO = CopyUtil.deepCopyListObject(resourceList, ComEventRequestImageVO.class); comEventDetailVO.setImages(comEventRequestImageVO); map.put("specter", specter); map.put("eventDetail", comEventDetailVO); - List<ComEventTransferRecord> transferRecord = comEventTransferRecordService.list(new QueryWrapper<ComEventTransferRecord>().lambda().eq(ComEventTransferRecord::getEventId, id)); + List<ComEventTransferRecord> transferRecord = comEventTransferRecordService.list(new QueryWrapper<ComEventTransferRecord>().lambda().eq(ComEventTransferRecord::getEventId, id).orderByAsc(ComEventTransferRecord::getCreateAt)); transferRecord.forEach(comEventTransferRecord -> { - List<ComEventResource> list = comEventResourceService.list(new QueryWrapper<ComEventResource>().lambda().eq(ComEventResource::getTransferId, comEventTransferRecord.getId())); + 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); + } }); + //迭代器迭代删除归档记录 + Iterator<ComEventTransferRecord> iterator = transferRecord.iterator(); + while (iterator.hasNext()){ + ComEventTransferRecord comEventTransferRecord = iterator.next(); + if (comEventTransferRecord.getEventStatus().equals(7)){ + iterator.remove(); + } + } map.put("transferLog", transferRecord); List<ComEventResource> resource = comEventResourceService.list(new QueryWrapper<ComEventResource>().lambda().eq(ComEventResource::getRefId, id) .eq(ComEventResource::getStatus, 5)); @@ -282,7 +416,7 @@ ComSanshuoExpert specter = comSanShuoExpertService.getById(specterId); comEvent.setSpecialistAcceptTime(new Date()); comEvent.setSpecialistName(specter.getName()); - comEvent.setEventProcessStatus(SanShuoEventStatusEnum.ACCEPT.getCode()); + comEvent.setEventProcessStatus(SanShuoEventStatusEnum.conciliation.getCode()); int flag = baseMapper.updateById(comEvent); return flag > 0 ? R.ok() : R.fail(ReturnMsgConstants.UPDATE_FALSE); } @@ -298,6 +432,8 @@ comEvent.setSpecialistName(specter.getName()); comEvent.setEventProcessStatus(SanShuoEventStatusEnum.ACCEPT.getCode()); int flag = baseMapper.updateById(comEvent); + //添加一条对应记录 + comEventMapper.insertEventAndExpertRecord(id, specialistId,1); return flag > 0 ? R.ok() : R.fail(ReturnMsgConstants.UPDATE_FALSE); } @@ -306,20 +442,22 @@ List<ComEventCalculateVO> calculateList = baseMapper.calculate(); ComEventCalculateVO comEventCalculateVO =new ComEventCalculateVO(); comEventCalculateVO.setStatus("0"); - comEventCalculateVO.setSum(baseMapper.selectCount(new QueryWrapper<ComEvent>().lambda()).toString()); + comEventCalculateVO.setSum(baseMapper.selectCount(new QueryWrapper<ComEvent>().lambda().notIn(ComEvent::getEventProcessStatus,(9))).toString()); calculateList.add(comEventCalculateVO); return R.ok(calculateList); } + @Override @Transactional(rollbackFor = Exception.class) public R archiveRequest(ComEventArchiveVO comEventArchiveVO, LoginUserInfoVO sysUser) { ComEvent comEvent = baseMapper.selectById(comEventArchiveVO.getId()); - if (comEvent.getEventSucceed() == 2) { - comEvent.setEventProcessStatus(7); - } else { - comEvent.setEventProcessStatus(6); - } + //不再设置已归档状态 +// if (comEvent.getEventSucceed() == 2) { +// comEvent.setEventProcessStatus(7); +// } else { +// comEvent.setEventProcessStatus(6); +// } comEvent.setResult(comEventArchiveVO.getResult()); baseMapper.updateById(comEvent); ComEventTransferRecord comEventTransferRecord = new ComEventTransferRecord(); @@ -337,10 +475,15 @@ comEventTransferRecord.setSpecialistLevel(comEvent.getSpecialistLevel()); comEventTransferRecord.setSpecialistName(comEvent.getSpecialistName()); comEventTransferRecord.setEventResult(comEvent.getEventSucceed()); - comEventTransferRecord.setEventStatus(comEvent.getEventProcessStatus()); + comEventTransferRecord.setFromUserId(sysUser.getUserId()); + //归档操作统一设置为7 + comEventTransferRecord.setEventStatus(7); + comEventTransferRecord.setId(Snowflake.getId()); + saveEventImageList(comEventArchiveVO.getImages(), comEvent.getId(), comEventTransferRecord.getId(), 5); return comEventTransferRecordService.insertComEventTransferRecord(comEventTransferRecord); } + /** * 大屏事件统计 * @param indexDataDTO 查询入参 -- Gitblit v1.7.1