From 630fcec2d5da618fe4ddd2bc0215c2f9017af00d Mon Sep 17 00:00:00 2001 From: mg <maokecheng@163.com> Date: 星期六, 08 十月 2022 14:46:27 +0800 Subject: [PATCH] 新增消息类 --- ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java | 213 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 179 insertions(+), 34 deletions(-) diff --git a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java index f157999..5e32871 100644 --- a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java +++ b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java @@ -1,37 +1,41 @@ package com.ycl.service.caseHandler.impl; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ycl.bo.AdminUserDetails; import com.ycl.bo.casePool.CasePoolIllegalBuildingDO; import com.ycl.bo.casePool.CasePoolViolationDO; +import com.ycl.common.util.DateUtil; import com.ycl.dto.casePool.IllegalBuildingParam; import com.ycl.dto.casePool.ViolationParam; -import com.ycl.entity.caseHandler.BaseCase; -import com.ycl.entity.caseHandler.IllegalBuilding; -import com.ycl.entity.caseHandler.Violations; +import com.ycl.entity.caseHandler.*; +import com.ycl.entity.common.ImageResources; import com.ycl.entity.video.VideoAlarmReport; -import com.ycl.mapper.caseHandler.BaseCaseMapper; -import com.ycl.mapper.caseHandler.IllegalBuildingMapper; -import com.ycl.mapper.caseHandler.ViolationsMapper; +import com.ycl.mapper.caseHandler.*; +import com.ycl.mapper.common.ImageResourcesMapper; import com.ycl.mapper.dict.DataDictionaryMapper; import com.ycl.remote.dto.*; import com.ycl.remote.service.CityPlatformService; import com.ycl.service.caseHandler.IBaseCaseService; import com.ycl.service.caseHandler.IViolationsService; import com.ycl.service.video.IVideoAlarmReportService; -import com.ycl.vo.casePool.CasePoolIllegalBuildingVO; -import com.ycl.vo.casePool.CasePoolViolationVO; +import com.ycl.vo.casePool.*; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.time.Instant; +import java.time.Duration; import java.time.LocalDateTime; -import java.time.ZoneOffset; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -75,6 +79,23 @@ ViolationsMapper violationsMapper; @Resource IllegalBuildingMapper illegalBuildingMapper; + + @Resource + ArrivalSituationMapper arrivalSituationMapper; + @Resource + InvestigationMapper investigationMapper; + @Resource + WritMapper writMapper; + @Resource + DisposeRecordMapper disposeRecordMapper; + + @Resource + WorkflowConfigStepMapper workflowConfigStepMapper; + @Resource + WorkflowConfigMapper workflowConfigMapper; + @Resource + ImageResourcesMapper imageResourcesMapper; + @Override public String uploadEvent(Integer caseId) { @@ -123,27 +144,29 @@ @Override public Page listViolationsPage(Page page, Integer state, Integer resource) { Integer type = 01; + Integer hours = 60; Page<CasePoolViolationDO> violationsPage = baseCaseMapper.listViolationsPage(page, state, type, resource); - List<CasePoolViolationVO> violationVOList = violationsPage.getRecords().stream().map(item -> { - CasePoolViolationVO casePoolViolationVO = new CasePoolViolationVO(); - BeanUtils.copyProperties(item, casePoolViolationVO); - if (item.getCloseTime() == null) { - long nowTime = System.currentTimeMillis(); - long alarmTime = item.getAlarmTime().toEpochSecond(ZoneOffset.ofHours(8)); - LocalDateTime continueTimes = Instant.ofEpochMilli(nowTime - alarmTime).atZone(ZoneOffset.ofHours(8)).toLocalDateTime(); - String continueTime = continueTimes.getHour() + "鏃�" + continueTimes.getSecond() + "鍒嗛挓"; - casePoolViolationVO.setContinueTime(continueTime); - } else { - long closeTime = item.getCloseTime().toEpochSecond(ZoneOffset.ofHours(8)); - long alarmTime = item.getAlarmTime().toEpochSecond(ZoneOffset.ofHours(8)); - LocalDateTime continueTimes = Instant.ofEpochMilli(closeTime - alarmTime).atZone(ZoneOffset.ofHours(8)).toLocalDateTime(); - String continueTime = continueTimes.getHour() + "鏃�" + continueTimes.getSecond() + "鍒嗛挓"; - casePoolViolationVO.setContinueTime(continueTime); - } - casePoolViolationVO.setCategory(dataDictionaryMapper.selectById(item.getCategoryId()).getName()); - casePoolViolationVO.setType(dataDictionaryMapper.selectById(item.getTypeId()).getName()); - return casePoolViolationVO; - }).collect(Collectors.toList()); + List<CasePoolViolationVO> violationVOList = violationsPage + .getRecords() + .stream() + .map(item -> { + CasePoolViolationVO casePoolViolationVO = new CasePoolViolationVO(); + BeanUtils.copyProperties(item, casePoolViolationVO); + if (item.getCloseTime() == null) { + Duration duration = Duration.between(item.getAlarmTime(), LocalDateTime.now()); + long minutes = duration.toMinutes() - (duration.toHours() * hours); + String continueTime = duration.toHours() + "鏃�" + minutes + "鍒嗛挓"; + casePoolViolationVO.setContinueTime(continueTime); + } else { + Duration duration = Duration.between(item.getAlarmTime(), item.getCloseTime()); + long minutes = duration.toMinutes() - (duration.toHours() * hours); + String continueTime = duration.toHours() + "鏃�" + minutes + "鍒嗛挓"; + casePoolViolationVO.setContinueTime(continueTime); + } + casePoolViolationVO.setCategory(dataDictionaryMapper.selectById(item.getCategoryId()).getName()); + casePoolViolationVO.setType(dataDictionaryMapper.selectById(item.getTypeId()).getName()); + return casePoolViolationVO; + }).collect(Collectors.toList()); Page<CasePoolViolationVO> casePoolViolationVOPage = new Page<>(); BeanUtils.copyProperties(violationsPage, casePoolViolationVOPage); casePoolViolationVOPage.setRecords(violationVOList); @@ -173,9 +196,7 @@ @Override public Boolean saveViolationCase(ViolationParam violationParam, Integer id) { - BaseCase baseCase = new BaseCase(); Violations violations = new Violations(); - BeanUtils.copyProperties(violationParam, baseCase); BeanUtils.copyProperties(violationParam, violations); violations.setId(id); Integer value = 1; @@ -184,12 +205,136 @@ @Override public Boolean saveIllegalBuildingCase(IllegalBuildingParam illegalBuildingParam, Integer id) { - BaseCase baseCase = new BaseCase(); IllegalBuilding illegalBuilding = new IllegalBuilding(); - BeanUtils.copyProperties(illegalBuilding, baseCase); BeanUtils.copyProperties(illegalBuilding, illegalBuildingParam); illegalBuilding.setBaseCaseId(id); Integer value = 1; return illegalBuildingMapper.insert(illegalBuilding) == value ? true : false; } + + @Override + public BaseCaseDetail baseCaseDetail(String code) { + BaseCaseDetail bcd = new BaseCaseDetail(); + //1.鏌ヨ妗堜欢鍩烘湰淇℃伅 + QueryWrapper<BaseCase> wrapper = new QueryWrapper<>(); + wrapper.lambda().eq(BaseCase::getCode, code); + BaseCase baseCase = baseCaseMapper.selectOne(wrapper); + if (baseCase == null) { + return null; + } + bcd.setBaseCase(baseCase); + //2.鏌ヨ鍔炵悊缁忚繃淇℃伅 + //2.1鏌ヨ澶勭疆娴佺▼閰嶇疆 + HandlePassVo handlePassVo = new HandlePassVo(); + QueryWrapper<WorkflowConfig> wrapperWc = new QueryWrapper<>(); + wrapperWc.lambda().eq(WorkflowConfig::getCode, "ddlc").or().eq(WorkflowConfig::getCode, "wtcllc"); + List<WorkflowConfig> wcs = workflowConfigMapper.selectList(wrapperWc); + Integer ddlcId = 0, wtcllcId = 0; + for (WorkflowConfig wc : wcs) { + if ("ddlc".equals(wc.getCode())) { + ddlcId = wc.getId(); + } + if ("wtcllc".equals(wc.getCode())) { + wtcllcId = wc.getId(); + } + } + //2.2鏌ヨ澶勭疆娴佺▼鐜妭閰嶇疆 + Map mapWcs = new HashMap(); + mapWcs.put("workflowConfigId", ddlcId); + mapWcs.put("baseCaseId", ddlcId); + List<WorkflowConfigStep> listWcs = workflowConfigStepMapper.selectRecordByWorkflowConfigStepId(mapWcs); + //澶勭悊鐢ㄧ幆鑺傛椂闂� + for (WorkflowConfigStep step : listWcs) { + List<DisposeRecord> records = step.getDisposeRecords(); + if (records == null) { + continue; + } + for (DisposeRecord record : records) { + record.setLinkTime( + DateUtil.getDistanceDateTime( + DateUtil.fromLocalDateTime(baseCase.getAlarmTime()), + DateUtil.fromLocalDateTime(record.getCreateTime()))); + } + step.setDisposeRecords(records); + } + //2.3璁剧疆璋冨害娴佺▼ + handlePassVo.setWorkflowConfigSteps(listWcs); + bcd.setHandlePassVo(handlePassVo); + //3.鏌ヨ妗堝嵎鍥剧墖淇℃伅 + FilesPictureVo filesPictureVo = new FilesPictureVo(); + QueryWrapper<ImageResources> wrapperIr = new QueryWrapper<>(); + wrapperIr.lambda().eq(ImageResources::getType, "01").or().eq(ImageResources::getType, "02"); + List<ImageResources> irs = imageResourcesMapper.selectList(wrapperIr); + filesPictureVo.setImageResources(irs); + bcd.setFilesPictureVo(filesPictureVo); + //4.鏌ヨ闂澶勭悊淇℃伅 + ProblemProVo problemProVo = new ProblemProVo(); + //4.2鏌ヨ澶勭疆娴佺▼鐜妭閰嶇疆 + mapWcs.put("workflowConfigId", wtcllcId); + List<WorkflowConfigStep> listWcsPp = workflowConfigStepMapper.selectRecordByWorkflowConfigStepId(mapWcs); + //4.3璁剧疆璋冨害娴佺▼ + problemProVo.setWorkflowConfigSteps(listWcsPp); + bcd.setProblemProVo(problemProVo); + //5.鏌ヨ鐜板満鎯呭喌淇℃伅 + CurrentSitVo currentSitVo = new CurrentSitVo(); + QueryWrapper<ArrivalSituation> wrapperAs = new QueryWrapper<>(); + wrapperAs.lambda().eq(ArrivalSituation::getBaseCaseId, baseCase.getId()); + //璁剧疆鍒拌揪鐜板満鎯呭喌 + ArrivalSituation as = arrivalSituationMapper.selectOne(wrapperAs); + currentSitVo.setArrivalSituation(as); + //璁剧疆璋冩煡鍙栬瘉 + QueryWrapper<Investigation> wrapperI = new QueryWrapper<>(); + wrapperI.lambda().eq(Investigation::getBaseCaseId, baseCase.getId()); + Investigation investigation = investigationMapper.selectOne(wrapperI); + currentSitVo.setInvestigation(investigation); + //璁剧疆鍛婄煡杩濇硶 + QueryWrapper<Writ> wrapperW = new QueryWrapper<>(); + wrapperW.lambda().eq(Writ::getBaseCaseId, baseCase.getId()); + Writ writ = writMapper.selectOne(wrapperW); + currentSitVo.setWrit(writ); + bcd.setCurrentSitVo(currentSitVo); + return bcd; + } + + @Override + public ArrayList<String> listCaseImages(Integer id, Integer type) { + Integer illegalBuildingType = 02; + ArrayList<String> caseImages = new ArrayList<>(); + caseImages.add(investigationMapper + .selectOne(new LambdaQueryWrapper<Investigation>() + .eq(Investigation::getBaseCaseId, id)).getPic()); + caseImages.add(arrivalSituationMapper + .selectOne(new LambdaQueryWrapper<ArrivalSituation>() + .eq(ArrivalSituation::getBaseCaseId, id)).getSituationPic()); + if (type == illegalBuildingType) { + Writ writ = writMapper.selectOne(new LambdaQueryWrapper<Writ>().eq(Writ::getBaseCaseId, id)); + caseImages.add(writ.getWritPic()); + caseImages.add(writ.getOriginalPic()); + caseImages.add(writ.getOtherPic()); + caseImages.add(writ.getRectifiedPic()); + } + return caseImages; + } + + @Override + public void endCase(Integer caseId, String result) { + AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + Integer endCaseState = 6; + Integer state = 2; + String endCaseName = "缁撴"; + BaseCase baseCase = new BaseCase(); + baseCase.setState(endCaseState); + baseCase.setId(caseId); + baseCaseMapper.updateById(baseCase); + DisposeRecord disposeRecord = new DisposeRecord(); + disposeRecord.setBaseCaseId(caseId); + disposeRecord.setWorkflowConfigStepId(workflowConfigStepMapper + .selectOne(new LambdaQueryWrapper<WorkflowConfigStep>().eq(WorkflowConfigStep::getName, endCaseName)) + .getWorkflowConfigId()); + disposeRecord.setCreateUser(user.getUserId().intValue()); + disposeRecord.setResult(result); + disposeRecord.setState(state); + disposeRecord.setCreateTime(LocalDateTime.now()); + disposeRecordMapper.insert(disposeRecord); + } } \ No newline at end of file -- Gitblit v1.8.0