| | |
| | | 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.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; |
| | | import com.ycl.dto.casePool.VideoInspectParam; |
| | | import com.ycl.dto.casePool.ViolationParam; |
| | | import com.ycl.dto.cockpitManage.DelayDO; |
| | | import com.ycl.entity.caseHandler.*; |
| | | import com.ycl.entity.dict.DataDictionary; |
| | | import com.ycl.entity.resources.ImageResources; |
| | |
| | | import com.ycl.remote.dto.*; |
| | | import com.ycl.remote.service.CityPlatformService; |
| | | import com.ycl.service.caseHandler.IBaseCaseService; |
| | | import com.ycl.service.caseHandler.IDispatchHandleService; |
| | | import com.ycl.service.caseHandler.IViolationsService; |
| | | 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; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.time.Duration; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | |
| | | private CityPlatformService cityPlatformService; |
| | | private IViolationsService violationsService; |
| | | private IVideoAlarmReportService videoAlarmReportService; |
| | | |
| | | |
| | | @Value("${fdfs.fileUrl}") |
| | | private String fileUrl; |
| | |
| | | @Resource |
| | | PartyInfoMapper partyInfoMapper; |
| | | |
| | | @Resource |
| | | UtilNumber utilNumber; |
| | | |
| | | @Resource |
| | | IDispatchHandleService iDispatchHandleService; |
| | | |
| | | @Resource |
| | | IBaseCaseService baseCaseService; |
| | | |
| | | |
| | | @Override |
| | | public String uploadEvent(Integer caseId) { |
| | | public String uploadEvent(Long caseId) { |
| | | BaseCase baseCase = this.getById(caseId); |
| | | Violations violations = violationsService.getById(caseId); |
| | | String medias = ""; |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Page listViolationsPage(Page page, Integer state, Integer resource) { |
| | | public Page listViolationsPage(Integer current, Integer size, 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()); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Page listIllegalBuilding(Page page, Integer state, Integer resource) { |
| | | public Page listIllegalBuilding(Integer size, Integer current, Integer state, Integer resource) { |
| | | Integer type = 02; |
| | | Page page = new Page<>().setCurrent(current).setSize(size); |
| | | return baseCaseMapper.listIllegalBuildingsPage(page, state, type, resource); |
| | | } |
| | | |
| | |
| | | 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) { |
| | |
| | | if (baseCase.getCategory() == 1) { |
| | | Map mapV = new HashMap(); |
| | | mapV.put("id", baseCase.getId()); |
| | | Violations violations = violationsMapper.selectCondMap(mapV); |
| | | baseCase.setViolations(violations); |
| | | ViolationsVO violationsVO = violationsMapper.selectCondMap(mapV); |
| | | baseCase.setViolationsVO(violationsVO); |
| | | } else { |
| | | IllegalBuilding illegalBuilding = illegalBuildingMapper.selectById(baseCase.getId()); |
| | | LambdaQueryWrapper<DataDictionary> dict = new LambdaQueryWrapper<>(); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Page<BaseCase> selectPage(Page<BaseCase> page, String number, Integer communityId, Integer categories, String startTime, String endTime, String site) { |
| | | return baseCaseMapper.selectBaseCasePage(page, number, communityId, categories, startTime, endTime, site); |
| | | 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); |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | public List<QueryForViolationVO> selectViolationList(QueryForViolationParam queryForViolationParam) { |
| | | return baseCaseMapper.selectViolationPage(queryForViolationParam); |
| | | return baseCaseMapper.selectViolationPage(queryForViolationParam); |
| | | } |
| | | |
| | | @Override |
| | | public Page<BaseCaseVO> selectVideoInspection(Integer current) { |
| | | return baseCaseMapper.selectVideoInspection(new Page<>(current, 1)); |
| | | public Page<BaseCaseVO> selectVideoInspection(Integer current, Long gradeId, Long videoId, String beginTime, String endTime) { |
| | | return baseCaseMapper.selectVideoInspection(new Page<>(current, 1), gradeId, videoId, beginTime, endTime); |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> selectCount() { |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | Long review = baseCaseMapper.selectCount(new LambdaQueryWrapper<BaseCase>().eq(BaseCase::getState, 1)); |
| | | Long register = baseCaseMapper.selectRegisterCount(); |
| | | Long study = baseCaseMapper.selectStudyCount(); |
| | | map.put("review", review); |
| | | map.put("register", register); |
| | | map.put("study", study); |
| | | return map; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Boolean updateCase(ViolationParam violationParam) { |
| | | public Boolean updateCase(VideoInspectParam violationParam) { |
| | | BaseCase baseCase = new BaseCase(); |
| | | BeanUtils.copyProperties(violationParam, baseCase); |
| | | baseCase.setId(violationParam.getBaseId()); |
| | | baseCase.setCode(utilNumber.createCaseCode()); |
| | | baseCaseMapper.updateById(baseCase); |
| | | Violations violations = new Violations(); |
| | | BeanUtils.copyProperties(violationParam, violations); |
| | | violations.setId(violations.getId()); |
| | | violations.setId(violationParam.getBaseId()); |
| | | if (violationParam.getState() == 6) { |
| | | AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); |
| | | violationParam.setCreateUser(user.getUserId()); |
| | | DispatchInfoParam dispatchInfoParam = new DispatchInfoParam(); |
| | | BeanUtils.copyProperties(violationParam, dispatchInfoParam); |
| | | dispatchInfoParam.setBaseCaseId(violationParam.getBaseId()); |
| | | iDispatchHandleService.dispatch(dispatchInfoParam); |
| | | } |
| | | if (violationParam.getState() == 2) { |
| | | // baseCaseService.uploadEvent(violationParam.getBaseId()); |
| | | /// TODO: 2022/12/16 上报接口未实现 |
| | | } |
| | | return violationsMapper.updateById(violations) == 1 ? true : false; |
| | | } |
| | | |
| | | @Override |
| | | public Integer dayCount() { |
| | | return baseCaseMapper.dayCount(); |
| | | } |
| | | |
| | | @Override |
| | | public Integer weekCount() { |
| | | return baseCaseMapper.weekCount(); |
| | | } |
| | | |
| | | @Override |
| | | public Integer dispatchCount() { |
| | | return baseCaseMapper.dispatchCount(); |
| | | } |
| | | |
| | | @Override |
| | | public Integer alCount() { |
| | | return baseCaseMapper.alCount(); |
| | | } |
| | | |
| | | @Override |
| | | 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))); |
| | | return areaCountList; |
| | | } |
| | | |
| | | @Override |
| | | public List<DelayVO> selectDelayList() { |
| | | List<DelayDO> delayDOS = baseCaseMapper.selectDelayVOList(); |
| | | ArrayList<DelayVO> delayVOS = new ArrayList<>(); |
| | | delayDOS.stream().forEach(item -> { |
| | | DelayVO delayVO = new DelayVO(); |
| | | delayVO.setDescription(item.getDescription()); |
| | | delayVO.setCode(item.getCode()); |
| | | Duration between; |
| | | if (item.getEndTime() != null) { |
| | | between = Duration.between(item.getEndTime(), item.getLimitTime()); |
| | | } else { |
| | | between = Duration.between(LocalDateTime.now(), item.getLimitTime()); |
| | | } |
| | | 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(2, 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(2, 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(2, 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(2, 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; |
| | | } |
| | | } |