From 1cad14bca191807e18705c3a5526eda8151be439 Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期一, 14 四月 2025 23:10:22 +0800 Subject: [PATCH] 批量审核和图片保存bug --- ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java | 249 ++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 214 insertions(+), 35 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 79ba342..863e7f6 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,17 +1,19 @@ package com.ycl.service.caseHandler.impl; +import cn.hutool.core.collection.CollUtil; import com.alibaba.druid.util.StringUtils; 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.core.conditions.update.UpdateWrapper; +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.ycl.bo.AdminUserDetails; -import com.ycl.controller.video.common.constant.BaseCaseStatus; -import com.ycl.controller.video.common.constant.StepName; -import com.ycl.controller.video.common.util.DateUtil; -import com.ycl.controller.video.common.util.UtilNumber; +import com.ycl.common.constant.BaseCaseStatus; +import com.ycl.common.constant.StepName; +import com.ycl.common.util.DateUtil; +import com.ycl.common.util.UtilNumber; import com.ycl.dto.caseHandler.DispatchInfoParam; import com.ycl.dto.caseHandler.QueryForViolationParam; import com.ycl.dto.casePool.IllegalBuildingParam; @@ -31,10 +33,12 @@ import com.ycl.service.caseHandler.IBaseCaseService; import com.ycl.service.caseHandler.IDispatchHandleService; import com.ycl.service.caseHandler.IViolationsService; +import com.ycl.service.resources.IImageResourcesService; import com.ycl.service.video.IVideoAlarmReportService; import com.ycl.vo.casePool.*; import com.ycl.vo.cockpit.enforcementEvents.DelayVO; import com.ycl.vo.cockpit.enforcementEvents.EventVO; +import com.ycl.vo.cockpit.enforcementEvents.StatisticsVO; import com.ycl.vo.cockpit.enforcementEvents.VideoAndAreaVO; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -42,17 +46,14 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import sun.util.resources.cldr.dyo.LocaleNames_dyo; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.Duration; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * <p> @@ -125,7 +126,8 @@ @Resource IBaseCaseService baseCaseService; - + @Autowired + IImageResourcesService imageResourcesService; @Override public String uploadEvent(Long caseId) { @@ -141,12 +143,13 @@ medias = stringBuilder.toString(); } } + eventDesc += "[澶у崕瑙嗛鎺ュ叆娴嬭瘯]"; EventAddParamDto dto = EventAddParamDto.builder().y84(baseCase.getLatitude() != null ? baseCase.getLatitude().toString() : "").x84(baseCase.getLongitude() != null ? baseCase.getLongitude().toString() : "").source(11).address(baseCase.getSite()).eventDesc(eventDesc).eventSign(baseCase.getCode()).medias(medias).build(); String msg = cityPlatformService.addEvent(dto); ResultResponseDto result = JSONObject.parseObject(msg, ResultResponseDto.class); if (result.getCode() == 0) { - EventAddResponseDto responseDto = JSONObject.parseObject(result.getResult(), EventAddResponseDto.class); - baseCase.setTaskCode(responseDto.getTaskcode()); +// EventAddResponseDto responseDto = JSONObject.parseObject(result.getResult(), EventAddResponseDto.class); + baseCase.setTaskCode(result.getResult()); this.updateById(baseCase); return null; } else { @@ -170,11 +173,12 @@ } @Override - public Page listViolationsPage(Page page, Integer state, Integer resource) { + public Page listViolationsPage(Integer current, Integer size, List<Integer> state, Integer resource, String code, String categoryBig, String categorySmall, Integer street, String site, String startTime, String endTime, Integer violationsTypeId, Integer videoId) { Integer type = 01; Integer hours = 60; Integer day = 24; - Page<CasePoolViolationVO> violationsPage = baseCaseMapper.listViolationsPage(page, state, type, resource); + Page page = new Page<>().setCurrent(current).setSize(size); + Page<CasePoolViolationVO> violationsPage = baseCaseMapper.listViolationsPage(page, state, type, resource, code, categoryBig, categorySmall, street, site, startTime, endTime, violationsTypeId, videoId); violationsPage.getRecords().stream().forEach(item -> { if (item.getCloseTime() == null) { Duration duration = Duration.between(item.getAlarmTime(), LocalDateTime.now()); @@ -194,8 +198,9 @@ } @Override - public Page listIllegalBuilding(Page page, Integer state, Integer resource) { + public Page listIllegalBuilding(Integer current, Integer size, List<Integer> state, Integer resource) { Integer type = 02; + Page page = new Page<>().setCurrent(current).setSize(size); return baseCaseMapper.listIllegalBuildingsPage(page, state, type, resource); } @@ -206,7 +211,7 @@ Integer value = 1; violations.setId(id); setDisposeRecord(id, violationParam.getLimitTime()); - return violationsMapper.insert(violations) == value ? true : false; + return violationsMapper.insert(violations) == value; } private void setDisposeRecord(Long id, String limitTime) { @@ -259,13 +264,15 @@ baseCase.setViolationsVO(violationsVO); } else { IllegalBuilding illegalBuilding = illegalBuildingMapper.selectById(baseCase.getId()); - LambdaQueryWrapper<DataDictionary> dict = new LambdaQueryWrapper<>(); - dict.eq(DataDictionary::getId, illegalBuilding.getCategoryId()); - DataDictionary dictionary = dataDictionaryMapper.selectOne(dict); - if (dictionary != null) { - illegalBuilding.setCategoryText(dictionary.getName()); + if(illegalBuilding!=null) { + LambdaQueryWrapper<DataDictionary> dict = new LambdaQueryWrapper<>(); + dict.eq(DataDictionary::getId, illegalBuilding.getCategoryId()); + DataDictionary dictionary = dataDictionaryMapper.selectOne(dict); + if (dictionary != null) { + illegalBuilding.setCategoryText(dictionary.getName()); + } + baseCase.setIllegalBuilding(illegalBuilding); } - baseCase.setIllegalBuilding(illegalBuilding); } //鑾峰彇璋冨害淇℃伅 Map mapD = new HashMap(); @@ -394,10 +401,65 @@ disposeRecordMapper.update(disposeRecord, updateWrapper); } + @Override - public Page<BaseCase> selectPage(Page<BaseCase> page, String number, Integer streetId, Integer categories, String startTime, String endTime, String site) { - return baseCaseMapper.selectBaseCasePage(page, number, streetId, categories, startTime, endTime, site); + public Page<BaseCase> selectPage(Page<BaseCase> page, String number, Integer communityId, Integer categories, String startTime, String endTime, String site, Integer state, Integer streetId, Integer time) { + LocalDateTime start = null; + LocalDateTime end = null; + LocalDateTime now = LocalDateTime.now(); + if (Objects.nonNull(time) && time == 0) { + end = now; + start = now.minusWeeks(1); + + } + if (Objects.nonNull(time) && time == 1) { + end = now; + start = now.minusMonths(1); + + } + if (Objects.nonNull(time) && time == 2) { + end = now; + start = now.minusMonths(3); + } + Page<BaseCase> baseCasePage = baseCaseMapper.selectBaseCasePage(page, number, communityId, categories, start, end, site, state, streetId); + if (!Objects.isNull(baseCasePage) && CollUtil.isNotEmpty(baseCasePage.getRecords())) { + List<BaseCase> records = baseCasePage.getRecords(); + //TODO:灏嗙姸鎬乻tate鏀逛负鐘舵�佸悕stateName + records.stream().forEach(baseCase -> { + Integer stateInt = baseCase.getState(); + if (stateInt == 0) { + baseCase.setStateName("寰呭鐞�"); + } else if (stateInt == 1) { + baseCase.setStateName("鎶ヨ"); + } else if (stateInt == 2) { + baseCase.setStateName("涓婃姤"); + } else if (stateInt == 3) { + baseCase.setStateName("鍦ㄥ涔�"); + } else if (stateInt == 4) { + baseCase.setStateName("鏆備笉澶勭悊"); + } else if (stateInt == 5) { + baseCase.setStateName("绔嬫"); + } else if (stateInt == 6) { + baseCase.setStateName("璋冨害"); + } else if (stateInt == 7) { + baseCase.setStateName("澶勭疆"); + } else if (stateInt == 8) { + baseCase.setStateName("鏍告煡"); + } else if (stateInt == 9) { + baseCase.setStateName("缁撴"); + } else if (stateInt == 10) { + baseCase.setStateName("寰呬笂鎶�"); + } + }); + Set<Long> caseIds = records.stream().map(BaseCase::getId).collect(Collectors.toSet()); + Map<Long, String> urlMap = imageResourcesService.getUrlMap(caseIds, "01"); + records.stream().forEach(item -> { + item.setUrl(urlMap.get(item.getId())); + }); + } + return baseCasePage; } + @Override public Page<QueryForViolationVO> selectViolation(QueryForViolationParam queryForViolationParam) { @@ -413,8 +475,8 @@ } @Override - public Page<BaseCaseVO> selectVideoInspection(Integer current) { - return baseCaseMapper.selectVideoInspection(new Page<>(current, 1)); + public Page<BaseCaseVO> selectVideoInspection(Integer current, Integer pageSize, Long gradeId, Long videoId, String beginTime, String endTime, Integer type) { + return baseCaseMapper.selectVideoInspection(new Page<>(current, pageSize), gradeId, videoId, beginTime, endTime, type); } @Override @@ -422,7 +484,7 @@ HashMap<String, Object> map = new HashMap<>(); Long review = baseCaseMapper.selectCount(new LambdaQueryWrapper<BaseCase>().eq(BaseCase::getState, 1)); Long register = baseCaseMapper.selectRegisterCount(); - Long study = baseCaseMapper.selectCount(new LambdaQueryWrapper<BaseCase>().eq(BaseCase::getState, 3)); + Long study = baseCaseMapper.selectStudyCount(); map.put("review", review); map.put("register", register); map.put("study", study); @@ -449,7 +511,8 @@ iDispatchHandleService.dispatch(dispatchInfoParam); } if (violationParam.getState() == 2) { - baseCaseService.uploadEvent(violationParam.getBaseId()); +// baseCaseService.uploadEvent(violationParam.getBaseId()); + /// TODO: 2022/12/16 涓婃姤鎺ュ彛鏈疄鐜� } return violationsMapper.updateById(violations) == 1 ? true : false; } @@ -475,15 +538,22 @@ } @Override - public List<EventVO> selectEventList(String beginTime, String endTime) { - return baseCaseMapper.selectEventList(beginTime, endTime); + public IPage<EventVO> selectEventList(String beginTime, String endTime, Integer pageIndex, Integer pageSize) { + if (pageIndex == null) { + pageIndex = 1; + } + if (pageSize == null) { + pageSize = 50; + } + IPage<EventVO> page = new Page<>(pageIndex, pageSize); + return baseCaseMapper.selectEventList(page, beginTime, endTime); } @Override public List<VideoAndAreaVO> areaCount() { List<VideoAndAreaVO> areaCountList = baseCaseMapper.areaCount(); Long allCount = baseCaseMapper.selectCount(new LambdaQueryWrapper<>()); - areaCountList.stream().forEach(item -> item.setRatio(new BigDecimal(item.getCount() * 1.0 / allCount).setScale(2, BigDecimal.ROUND_HALF_UP))); + areaCountList.stream().forEach(item -> item.setRatio(new BigDecimal(item.getCount() * 1.0 / allCount).setScale(4, BigDecimal.ROUND_HALF_UP))); return areaCountList; } @@ -491,21 +561,130 @@ public List<DelayVO> selectDelayList() { List<DelayDO> delayDOS = baseCaseMapper.selectDelayVOList(); ArrayList<DelayVO> delayVOS = new ArrayList<>(); - delayDOS.stream().forEach(item->{ + delayDOS.stream().forEach(item -> { DelayVO delayVO = new DelayVO(); delayVO.setDescription(item.getDescription()); delayVO.setCode(item.getCode()); Duration between; - if (item.getEndTime()!=null){ + if (item.getEndTime() != null) { between = Duration.between(item.getEndTime(), item.getLimitTime()); - }else { + } else { between = Duration.between(LocalDateTime.now(), item.getLimitTime()); } - if (between.isNegative()){ + if (between.isNegative()) { delayVO.setDuration(between.toMinutes()); delayVOS.add(delayVO); } }); return delayVOS; } + + @Override + public Map<String, Object> statistics() { + Map<String, Object> map = new HashMap<>(); + Long reportCount = baseCaseMapper.selectCount(new LambdaQueryWrapper<BaseCase>().eq(BaseCase::getState, BaseCaseStatus.REPORT)); + StatisticsVO report = new StatisticsVO(); + report.setCount(reportCount); + ArrayList<Integer> reportState = new ArrayList<>(); + reportState.add(BaseCaseStatus.REPORT); + Long reportLastMonthCount = baseCaseMapper.selectLastMonthCount(reportState); + Long reportRecentlyMonthCount = baseCaseMapper.selectRecentlyMonthCount(reportState); + Double v = (reportRecentlyMonthCount - reportLastMonthCount) * 1.0 / reportLastMonthCount; + if (reportLastMonthCount == 0) { + report.setRatio(null); + } else { + report.setRatio(new BigDecimal(v).setScale(4, BigDecimal.ROUND_HALF_UP).abs()); + } + if (v < 0) { + report.setUp(false); + } else { + report.setUp(true); + } + + Long disposeCount = baseCaseMapper.selectCount(new LambdaQueryWrapper<BaseCase>().in(BaseCase::getState, BaseCaseStatus.DISPATCH, BaseCaseStatus.DISPOSE, BaseCaseStatus.CHECK, BaseCaseStatus.CLOSING_REGISTER)); + StatisticsVO dispose = new StatisticsVO(); + dispose.setCount(disposeCount); + ArrayList<Integer> disposeState = new ArrayList<>(); + disposeState.add(BaseCaseStatus.DISPATCH); + disposeState.add(BaseCaseStatus.DISPOSE); + disposeState.add(BaseCaseStatus.CHECK); + disposeState.add(BaseCaseStatus.CLOSING_REGISTER); + Long disposeLastMonthCount = baseCaseMapper.selectLastMonthCount(disposeState); + Long disposeRecentlyMonthCount = baseCaseMapper.selectRecentlyMonthCount(disposeState); + Double v1 = (disposeRecentlyMonthCount - disposeLastMonthCount) * 1.0 / disposeLastMonthCount; + if (disposeLastMonthCount == 0) { + dispose.setRatio(null); + } else { + dispose.setRatio(new BigDecimal(v1).setScale(4, BigDecimal.ROUND_HALF_UP).abs()); + } + if (v1 < 0) { + dispose.setUp(false); + } else { + dispose.setUp(true); + } + + StatisticsVO onTimeDispose = new StatisticsVO(); + onTimeDispose.setCount(baseCaseMapper.selectOnTimeCaseCount()); + Long onTimeCaseLastMonthCount = baseCaseMapper.selectOnTimeCaseLastMonthCount(); + Long timeCaseRecentlyMonthCount = baseCaseMapper.selectOnTimeCaseRecentlyMonthCount(); + Double v2 = (timeCaseRecentlyMonthCount - onTimeCaseLastMonthCount) * 1.0 / onTimeCaseLastMonthCount; + if (onTimeCaseLastMonthCount == 0) { + onTimeDispose.setRatio(null); + } else { + onTimeDispose.setRatio(new BigDecimal(v2).setScale(4, BigDecimal.ROUND_HALF_UP).abs()); + } + if (v2 < 0) { + onTimeDispose.setUp(false); + } else { + onTimeDispose.setUp(true); + } + + Long registerCount = baseCaseMapper.selectCount(new LambdaQueryWrapper<BaseCase>().in(BaseCase::getState, BaseCaseStatus.DISPATCH, BaseCaseStatus.DISPOSE, BaseCaseStatus.CHECK, BaseCaseStatus.CLOSING_REGISTER, BaseCaseStatus.REPORT)); + StatisticsVO register = new StatisticsVO(); + register.setCount(registerCount); + ArrayList<Integer> registerState = new ArrayList<>(); + registerState.add(BaseCaseStatus.DISPATCH); + registerState.add(BaseCaseStatus.DISPOSE); + registerState.add(BaseCaseStatus.CHECK); + registerState.add(BaseCaseStatus.CLOSING_REGISTER); + registerState.add(BaseCaseStatus.REPORT); + Long registerLastMonthCount = baseCaseMapper.selectLastMonthCount(registerState); + Long registerRecentlyMonthCount = baseCaseMapper.selectRecentlyMonthCount(registerState); +// System.out.println(disposeRecentlyMonthCount); + Double v3 = (registerRecentlyMonthCount - registerLastMonthCount) * 1.0 / registerLastMonthCount; + if (disposeLastMonthCount == 0) { + register.setRatio(null); + } else { + register.setRatio(new BigDecimal(v3).setScale(4, BigDecimal.ROUND_HALF_UP).abs()); + } + if (v3 < 0) { + register.setUp(false); + } else { + register.setUp(true); + } + map.put("reported", report); + map.put("disposition", dispose); + map.put("dispositionInTime", onTimeDispose); + map.put("register", register); + return map; + } + + @Override + public IPage<WorkOrderVO> getWorkOrder(Integer pageIndex, Integer pageSize, String keyword) { + if (pageIndex == null) { + pageIndex = 1; + } + if (pageSize == null) { + pageSize = 20; + } + IPage<WorkOrderVO> page = new Page<>(pageIndex, pageSize); + return baseCaseMapper.getWorkOrder(page, keyword); + } + + @Override + public List<WorkOrderVO> getWorkOrderList(String keyword) { + IPage<WorkOrderVO> page = new Page<>(1, 5000); + IPage<WorkOrderVO> page1 = baseCaseMapper.getWorkOrder(page, keyword); + return page1.getRecords(); + } } \ No newline at end of file -- Gitblit v1.8.0