From ffb18ccfe6750f4a65bce6e02e7f6edb54a5d76f Mon Sep 17 00:00:00 2001 From: manailin <261030956@qq.com> Date: 星期六, 24 九月 2022 23:45:38 +0800 Subject: [PATCH] [修改] 三说代码事件流程代码提交 --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java | 404 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 395 insertions(+), 9 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 cded5bb..24a63b3 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 @@ -1,22 +1,39 @@ package com.panzhihua.service_community.service.impl; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.ReturnMsgConstants; +import com.panzhihua.common.enums.SanShuoEventStatusEnum; +import com.panzhihua.common.model.dtos.community.sanshuo.IndexDateDTO; +import com.panzhihua.common.model.vos.LoginUserInfoVO; import com.panzhihua.common.model.vos.R; +import com.panzhihua.common.model.vos.sanshuo.*; +import com.panzhihua.common.service.user.UserService; +import com.panzhihua.common.utlis.CopyUtil; +import com.panzhihua.common.utlis.DateUtils; import com.panzhihua.common.utlis.Snowflake; +import com.panzhihua.common.utlis.StringUtils; +import com.panzhihua.service_community.dao.ComActDAO; import com.panzhihua.service_community.dao.ComEventMapper; -import com.panzhihua.service_community.entity.ComEvent; -import com.panzhihua.service_community.service.IComEventService; +import com.panzhihua.service_community.dao.ComStreetDAO; +import com.panzhihua.service_community.entity.*; +import com.panzhihua.service_community.model.dos.ComActDO; +import com.panzhihua.service_community.model.dos.ComStreetDO; +import com.panzhihua.service_community.service.*; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.RandomUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Collections; -import java.util.Date; -import java.util.List; +import javax.annotation.Resource; +import java.util.*; + +import static java.util.Objects.nonNull; /** * Description 三说会堂事件表业务层实现类 @@ -29,12 +46,47 @@ @Service("comEventService") public class ComEventServiceImpl extends ServiceImpl<ComEventMapper, ComEvent> implements IComEventService { + @Resource + private IComEventTransferRecordService comEventTransferRecordService; + + @Resource + private ComSanShuoExpertService comSanShuoExpertService; + + @Resource + private IComEventResourceService comEventResourceService; + + @Resource + private ComActDAO comActDAO; + + @Resource + private ComStreetDAO comStreetDAO; + + @Resource + private ComSanShuoIndustryCenterService comSanShuoIndustryCenterService; + + @Resource + private ComEventMapper comEventMapper; + + @Resource + private UserService userService; + + @Resource + private CommediateTypeService commediateTypeService; + @Override public R pageByComEvent(ComEvent comEvent, Page pagination) { IPage<ComEvent> list = baseMapper.pageByComEvent(comEvent, pagination); if (list.getRecords().size() < 1) { return R.ok(Collections.emptyList()); } + list.getRecords().forEach(comEvent1 -> { + 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()); + ComMediateType category = commediateTypeService.getById(comEvent1.getEventCategory()); + comEvent1.setEventCategoryName(category.getName()); + }); return R.ok(list); } @@ -50,25 +102,66 @@ @Override @Transactional(rollbackFor = Exception.class) public R insertComEvent(ComEvent comEvent) { - if (checkExist( comEvent.getOrderSn(), null)) { - return R.fail(ReturnMsgConstants.DATA_EXIST); + 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); } + if (!StringUtils.isEmpty(comEvent.getCenterId())) { + ComSanshuoIndustryCenter center = comSanShuoIndustryCenterService.getById(comEvent.getCenterId()); + comEvent.setCurrentOrgName(center.getName()); + comEvent.setCurrentOrgId(center.getId().toString()); + comEvent.setCurrentProcessType(1); + } + comEvent.setUserEventStatus(2); + comEvent.setEventProcessStatus(SanShuoEventStatusEnum.UNDO.getCode()); + comEvent.setSpecialistName(expert.getName()); + comEvent.setOrderSn(DateUtils.getDateFormatString(new Date(), "yyyyMMddHHmmss") + RandomUtils.nextLong(1, 10000)); + comEvent.setInvalid(true); comEvent.setId(Snowflake.getId()); + comEvent.setSubmitDate(new Date()); comEvent.setCreateAt(new Date()); + comEvent.setCreateBy(comEvent.getRequestUserId()); + comEvent.setUpdateBy(comEvent.getRequestUserId()); comEvent.setUpdateAt(new Date()); boolean flag = save(comEvent); if (!flag) { return R.fail(ReturnMsgConstants.DATA_EXIST); } + saveEventImageList(comEvent.getImages(), comEvent.getId(),null,1); return R.ok(ReturnMsgConstants.SAVE_SUCCESS); + } + + @Transactional(rollbackFor = Exception.class) + public Boolean saveEventImageList(List<ComEventRequestImageVO> images, Long id,Long transferId,Integer status) { + List<ComEventResource> comEventResourceList = new ArrayList<>(); + if (!StringUtils.isEmpty(images)) { + List<ComEventRequestImageVO> imagesList = images; + imagesList.forEach(comEventRequestImageVO -> { + ComEventResource comEventResource = new ComEventResource(); + comEventResource.setId(Snowflake.getId()); + comEventResource.setRefId(id); + comEventResource.setTransferId(transferId); + comEventResource.setStatus(status); + comEventResource.setType(1); + comEventResource.setResourceName(comEventRequestImageVO.getName()); + comEventResource.setResourceSize(comEventRequestImageVO.getSize()); + comEventResource.setUrl(comEventRequestImageVO.getUrl()); + comEventResource.setDeleteFlag(false); + comEventResourceList.add(comEventResource); + }); + } + return comEventResourceService.saveBatch(comEventResourceList); } @Override @Transactional(rollbackFor = Exception.class) public R updateComEvent(ComEvent comEvent) { - if (checkExist(comEvent.getOrderSn(), null)) { +/* if (checkExist(comEvent.getOrderSn(), comEvent.getId())) { return R.fail(ReturnMsgConstants.DATA_EXIST); - } + }*/ int flag = baseMapper.updateById(comEvent); return flag > 0 ? R.ok(comEvent, ReturnMsgConstants.UPDATE_SUCCESS) : R.fail(ReturnMsgConstants.UPDATE_FALSE); } @@ -85,6 +178,299 @@ return flag ? R.ok(comEvent, ReturnMsgConstants.UPDATE_SUCCESS) : R.fail(ReturnMsgConstants.UPDATE_FALSE); } + @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){ + 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(); + } + } + } + int flag = baseMapper.updateById(comEvent); + ComEventTransferRecord comEventTransferRecord = new ComEventTransferRecord(); + comEventTransferRecord.setEventId(comEvent.getId()); + comEventTransferRecord.setSave(true); + comEventTransferRecord.setProcessResult(comEvent.getCurrentEventProcessResult()); + comEventTransferRecord.setProcessResultData(new Date().toString()); + comEventTransferRecord.setProcessDate(new Date()); + comEventTransferRecord.setProcessBy(loginUserInfo.getUserId()); + comEventTransferRecord.setProcessByName(loginUserInfo.getName()); + comEventTransferRecord.setProcessType(1); + comEventTransferRecord.setCreateAt(new Date()); + comEventTransferRecord.setSpecialistId(comEvent.getSpecialistId()); + comEventTransferRecord.setSpecialistOrg(comEvent.getCurrentOrgId()); + comEventTransferRecord.setSpecialistLevel(comEvent.getSpecialistLevel()); + comEventTransferRecord.setSpecialistName(comEvent.getSpecialistName()); + comEventTransferRecord.setEventResult(comEvent.getEventSucceed()); + comEventTransferRecord.setEventStatus(comEvent.getEventProcessStatus()); + saveEventImageList(comEvent.getImages(),comEvent.getId(),comEventTransferRecord.getId(),4); + comEventTransferRecordService.insertComEventTransferRecord(comEventTransferRecord); + return flag > 0 ? R.ok() : R.fail(ReturnMsgConstants.UPDATE_FALSE); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public R cancelRequest(Long id) { + ComEvent comEvent = baseMapper.selectById(id); + if (comEvent.getEventProcessStatus() == SanShuoEventStatusEnum.UNDO.getCode().intValue() + || comEvent.getEventProcessStatus() == SanShuoEventStatusEnum.VALID.getCode().intValue()) { + comEvent.setId(id); + comEvent.setUserEventStatus(4); + comEvent.setEventProcessStatus(SanShuoEventStatusEnum.CANCEL.getCode()); + comEvent.setRevokeDes("用户手动取消"); + int flag = baseMapper.updateById(comEvent); + return flag > 0 ? R.ok() : R.fail(ReturnMsgConstants.UPDATE_FALSE); + } else { + return R.fail("当前申请已经受理,不能取消!"); + } + } + + @Override + public HashMap detail(String id) { + HashMap map = new HashMap(3); + ComEventDetailVO comEventDetailVO = new ComEventDetailVO(); + ComEvent comEvent = baseMapper.selectById(id); + ComSanshuoExpert specter = comSanShuoExpertService.getById(comEvent.getSpecialistId()); + CopyUtil.copyProperties(comEvent, comEventDetailVO); + 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)); + transferRecord.forEach(comEventTransferRecord -> { + List<ComEventResource> list = comEventResourceService.list(new QueryWrapper<ComEventResource>().lambda().eq(ComEventResource::getTransferId, comEventTransferRecord.getId())); + List<ComEventRequestImageVO> ImageVO = CopyUtil.deepCopyListObject(list, ComEventRequestImageVO.class); + comEventTransferRecord.setImages(ImageVO); + }); + map.put("transferLog", transferRecord); + List<ComEventResource> resource = comEventResourceService.list(new QueryWrapper<ComEventResource>().lambda().eq(ComEventResource::getRefId, id) + .eq(ComEventResource::getStatus, 5)); + map.put("archiveImage", resource); + return map; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public R acceptRequest(Long id, Long specterId) { + ComEvent comEvent = new ComEvent(); + comEvent.setId(id); + comEvent.setSpecialistId(specterId); + ComSanshuoExpert specter = comSanShuoExpertService.getById(specterId); + comEvent.setSpecialistAcceptTime(new Date()); + comEvent.setSpecialistName(specter.getName()); + comEvent.setEventProcessStatus(SanShuoEventStatusEnum.ACCEPT.getCode()); + int flag = baseMapper.updateById(comEvent); + return flag > 0 ? R.ok() : R.fail(ReturnMsgConstants.UPDATE_FALSE); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public R reappoint(Long id, Long specialistId) { + ComEvent comEvent = new ComEvent(); + comEvent.setId(id); + comEvent.setSpecialistId(specialistId); + ComSanshuoExpert specter = comSanShuoExpertService.getById(specialistId); + comEvent.setSpecialistAcceptTime(new Date()); + comEvent.setSpecialistName(specter.getName()); + comEvent.setEventProcessStatus(SanShuoEventStatusEnum.ACCEPT.getCode()); + int flag = baseMapper.updateById(comEvent); + return flag > 0 ? R.ok() : R.fail(ReturnMsgConstants.UPDATE_FALSE); + } + + @Override + public R calculate() { + List<ComEventCalculateVO> calculateList = baseMapper.calculate(); + ComEventCalculateVO comEventCalculateVO =new ComEventCalculateVO(); + comEventCalculateVO.setStatus("0"); + comEventCalculateVO.setSum(baseMapper.selectCount(new QueryWrapper<ComEvent>().lambda()).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); + } + comEvent.setResult(comEventArchiveVO.getResult()); + baseMapper.updateById(comEvent); + ComEventTransferRecord comEventTransferRecord = new ComEventTransferRecord(); + comEventTransferRecord.setEventId(comEvent.getId()); + comEventTransferRecord.setSave(true); + comEventTransferRecord.setProcessResult(comEventArchiveVO.getResult()); + comEventTransferRecord.setProcessResultData(new Date().toString()); + comEventTransferRecord.setProcessDate(new Date()); + comEventTransferRecord.setProcessBy(sysUser.getUserId()); + comEventTransferRecord.setProcessByName(sysUser.getName()); + comEventTransferRecord.setProcessType(1); + comEventTransferRecord.setCreateAt(new Date()); + comEventTransferRecord.setSpecialistId(comEvent.getSpecialistId()); + comEventTransferRecord.setSpecialistOrg(comEvent.getCurrentOrgId()); + comEventTransferRecord.setSpecialistLevel(comEvent.getSpecialistLevel()); + comEventTransferRecord.setSpecialistName(comEvent.getSpecialistName()); + comEventTransferRecord.setEventResult(comEvent.getEventSucceed()); + comEventTransferRecord.setEventStatus(comEvent.getEventProcessStatus()); + return comEventTransferRecordService.insertComEventTransferRecord(comEventTransferRecord); + } + + /** + * 大屏事件统计 + * @param indexDataDTO 查询入参 + * */ + @Override + public R indexData(IndexDateDTO indexDataDTO) { + IndexDateVO vo = comEventMapper.dateAnalysis(indexDataDTO,DateUtil.beginOfMonth(new Date()),DateUtil.endOfMonth(new Date())); + //计算率 + 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)); + } + } + //折线图X轴 + List<Date> dates = pastTwelveMoth(); + vo.setX(getYAndM(dates)); + //新增 + List<Integer> Y1=new ArrayList<>(); + List<Integer> Y2=new ArrayList<>(); + for (Date date : dates) { + Y1.add(comEventMapper.dateAnalysisY(date,DateUtil.endOfMonth(date),indexDataDTO)); + Y2.add(comEventMapper.dateAnalysisYTwo(date,DateUtil.endOfMonth(date),indexDataDTO)); + } + vo.setY1(Y1); + vo.setY2(Y2); + return R.ok(vo); + } + + @Override + public R eventIndexData(Integer type) { + //获取事件总数 + Integer eventCount = comEventMapper.selectCount(new QueryWrapper<ComEvent>().notIn("event_process_status", (7), (8))); + if (type.equals(1)){ + //受理级别占比 + List<EventRateVO> eventRateVOS = comEventMapper.eventRate(); + for (EventRateVO eventRateVO : eventRateVOS) { + if (nonNull(eventRateVO)){ + eventRateVO.setName(typeToName(eventRateVO.getType())); + if (nonNull(eventCount) && !eventCount.equals(0)){ + //计算占比 + eventRateVO.setRate(NumberUtil.div(eventRateVO.getCount(),eventCount,2)); + } + } + } + return R.ok(eventRateVOS); + }else if (type.equals(2)){ + //专家级别 + List<EventRateVO> eventRateVOS = comEventMapper.expertRate(); + for (EventRateVO eventRateVO : eventRateVOS) { + if (nonNull(eventRateVO)){ + eventRateVO.setName(typeToNameExpert(eventRateVO.getType())); + if (nonNull(eventCount) && !eventCount.equals(0)){ + //计算占比 + eventRateVO.setRate(NumberUtil.div(eventRateVO.getCount(),eventCount,2)); + } + } + } + return R.ok(eventRateVOS); + }else{ + //事件类型占比 + List<EventRateVO> eventRateVOS = comEventMapper.mediateTypeRate(); + for (EventRateVO eventRateVO : eventRateVOS) { + if (nonNull(eventRateVO)){ + if (nonNull(eventCount) && !eventCount.equals(0)){ + //计算占比 + eventRateVO.setRate(NumberUtil.div(eventRateVO.getCount(),eventCount,2)); + } + } + } + return R.ok(eventRateVOS); + } + } + public String typeToName(Integer type){ + switch (type){ + case 1: + return "行业分中心受理"; + case 2: + return "街道调解站受理"; + case 3: + return "社区调解站受理"; + case 4: + return "区三说会堂受理"; + } + return null; + } + + public String typeToNameExpert(Integer type){ + switch (type){ + case 1: + return "区三说会堂专家"; + case 2: + return "行业分中心专家"; + case 3: + return "街道调解站专家"; + case 4: + return "社区调解站专家"; + } + return null; + } + + /** + * 过去12个月的月份 + * */ + private List<Date> pastTwelveMoth(){ + List<Date> list=new ArrayList<>(); + Date now = new Date(); + for (int i = 0; i < 12; i++) { + //本月 + DateTime dateTime = DateUtil.beginOfMonth(now); + DateUtil.format(dateTime,"yyyy-MM-dd"); + list.add(dateTime); + //减一天进入下一个月 + now=DateUtil.offsetDay(dateTime,-1); + } + return list; + } + + /** + * 截取年,月 + * */ + private List<String> getYAndM(List<Date> dateList){ + List<String> list=new ArrayList<>(); + for (Date date : dateList) { + list.add(DateUtil.format(date,"yyyy-MM").toString()); + } + return list; + } + + private Boolean checkExist(String sn, Long id) { ComEvent comEvent = new ComEvent(); comEvent.setOrderSn(sn); -- Gitblit v1.7.1