| | |
| | | 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.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.constant.BaseCaseStatus; |
| | | import com.ycl.common.constant.StepName; |
| | | import com.ycl.common.util.DateUtil; |
| | | import com.ycl.dto.casePool.IllegalBuildingParam; |
| | | import com.ycl.dto.casePool.ViolationParam; |
| | | import com.ycl.entity.caseHandler.*; |
| | | import com.ycl.entity.common.ImageResources; |
| | | import com.ycl.entity.video.VideoAlarmReport; |
| | | import com.ycl.exception.ApiException; |
| | | import com.ycl.mapper.caseHandler.*; |
| | | import com.ycl.mapper.common.ImageResourcesMapper; |
| | | import com.ycl.mapper.dict.DataDictionaryMapper; |
| | |
| | | import java.time.Duration; |
| | | import java.time.LocalDateTime; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | WorkflowConfigMapper workflowConfigMapper; |
| | | @Resource |
| | | ImageResourcesMapper imageResourcesMapper; |
| | | @Resource |
| | | DispatchInfoMapper dispatchInfoMapper; |
| | | @Resource |
| | | PartyInfoMapper partyInfoMapper; |
| | | |
| | | |
| | | @Override |
| | |
| | | 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) { |
| | | 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()); |
| | | 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()); |
| | | casePoolViolationVO.setStreet(dataDictionaryMapper.selectById(item.getStreetId()).getName()); |
| | | return casePoolViolationVO; |
| | | }).collect(Collectors.toList()); |
| | | Page<CasePoolViolationVO> casePoolViolationVOPage = new Page<>(); |
| | | BeanUtils.copyProperties(violationsPage, casePoolViolationVOPage); |
| | | casePoolViolationVOPage.setRecords(violationVOList); |
| | |
| | | CasePoolIllegalBuildingVO casePoolIllegalBuildingVO = new CasePoolIllegalBuildingVO(); |
| | | BeanUtils.copyProperties(item, casePoolIllegalBuildingVO); |
| | | casePoolIllegalBuildingVO.setCategory(dataDictionaryMapper.selectById(item.getCategoryId()).getName()); |
| | | casePoolIllegalBuildingVO.setCommunity(dataDictionaryMapper.selectById(item.getCommunityId()).getName()); |
| | | return casePoolIllegalBuildingVO; |
| | | } |
| | | ).collect(Collectors.toList()); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Boolean saveViolationCase(ViolationParam violationParam, Integer id) { |
| | | public Boolean saveViolationCase(ViolationParam violationParam, Long id) { |
| | | Violations violations = new Violations(); |
| | | BeanUtils.copyProperties(violationParam, violations); |
| | | violations.setId(id); |
| | | Integer value = 1; |
| | | violations.setId(id); |
| | | setDisposeRecord(id); |
| | | return violationsMapper.insert(violations) == value ? true : false; |
| | | } |
| | | |
| | | private void setDisposeRecord(Long id) { |
| | | String stepName = StepName.DISPATCH.getName(); |
| | | QueryWrapper<WorkflowConfigStep> stepQuery = new QueryWrapper<>(); |
| | | stepQuery.eq("name", stepName); |
| | | WorkflowConfigStep workflowConfigStep = workflowConfigStepMapper.selectOne(stepQuery); |
| | | |
| | | Integer state = 0; |
| | | DisposeRecord disposeRecord = new DisposeRecord(); |
| | | disposeRecord.setWorkflowConfigStepId(workflowConfigStep.getId()); |
| | | disposeRecord.setHandlerRoleId(workflowConfigStep.getRoleId()); |
| | | disposeRecord.setBaseCaseId(id); |
| | | disposeRecord.setState(state); |
| | | disposeRecord.setCreateTime(LocalDateTime.now()); |
| | | AdminUserDetails userDetails = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); |
| | | disposeRecord.setCreateUser(userDetails.getUserId()); |
| | | disposeRecord.setStartTime(LocalDateTime.now()); |
| | | disposeRecord.setStepName(stepName); |
| | | disposeRecordMapper.insert(disposeRecord); |
| | | } |
| | | |
| | | @Override |
| | | public Boolean saveIllegalBuildingCase(IllegalBuildingParam illegalBuildingParam, Integer id) { |
| | | public Boolean saveIllegalBuildingCase(IllegalBuildingParam illegalBuildingParam, Long id) { |
| | | IllegalBuilding illegalBuilding = new IllegalBuilding(); |
| | | BeanUtils.copyProperties(illegalBuilding, illegalBuildingParam); |
| | | illegalBuilding.setBaseCaseId(id); |
| | | BeanUtils.copyProperties(illegalBuildingParam, illegalBuilding); |
| | | setDisposeRecord(id); |
| | | Integer value = 1; |
| | | illegalBuilding.setBaseCaseId(id); |
| | | return illegalBuildingMapper.insert(illegalBuilding) == value ? true : false; |
| | | } |
| | | |
| | |
| | | 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); |
| | | Map map = new HashMap(); |
| | | map.put("code", code); |
| | | BaseCase baseCase = baseCaseMapper.selectCondMap(map); |
| | | if (baseCase == null) { |
| | | return null; |
| | | } |
| | | //查询案件违规信息 |
| | | if (baseCase.getCategory() == 1) { |
| | | Map mapV = new HashMap(); |
| | | mapV.put("id", baseCase.getId()); |
| | | Violations violations = violationsMapper.selectCondMap(mapV); |
| | | baseCase.setViolations(violations); |
| | | } else { |
| | | IllegalBuilding illegalBuilding = illegalBuildingMapper.selectById(baseCase.getId()); |
| | | baseCase.setIllegalBuilding(illegalBuilding); |
| | | } |
| | | //获取调度信息 |
| | | Map mapD = new HashMap(); |
| | | mapD.put("baseCaseId",baseCase.getId()); |
| | | DispatchInfo dispatchInfo = dispatchInfoMapper.selectCondMap(mapD); |
| | | baseCase.setDispatchInfo(dispatchInfo); |
| | | 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"); |
| | | wrapperWc.lambda().eq(WorkflowConfig::getCode, "ddlc"); |
| | | 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查询处置流程环节配置 |
| | | List<WorkflowConfigStep> listWcs = workflowConfigStepMapper.selectRecordByWorkflowConfigStepId(ddlcId); |
| | | Map mapWcs = new HashMap(); |
| | | mapWcs.put("workflowConfigId", wcs.get(0).getId()); |
| | | mapWcs.put("baseCaseId", baseCase.getId()); |
| | | List<WorkflowConfigStep> listWcs = workflowConfigStepMapper.selectRecordByWorkflowConfigStepId(mapWcs); |
| | | //处理用环节时间 |
| | | for (WorkflowConfigStep step : listWcs) { |
| | | List<DisposeRecord> records = step.getDisposeRecords(); |
| | | if (records == null) { |
| | | continue; |
| | | } |
| | | for (DisposeRecord record : records) { |
| | | if (record != null && record.getEndTime() != null) { |
| | | record.setLinkTime( |
| | | DateUtil.getDistanceDateTime( |
| | | DateUtil.fromLocalDateTime(baseCase.getAlarmTime()), |
| | | DateUtil.fromLocalDateTime(record.getEndTime()))); |
| | | } |
| | | } |
| | | step.setDisposeRecords(records); |
| | | } |
| | | //2.3设置调度流程 |
| | | handlePassVo.setWorkflowConfigSteps(listWcs); |
| | | bcd.setHandlePassVo(handlePassVo); |
| | |
| | | filesPictureVo.setImageResources(irs); |
| | | bcd.setFilesPictureVo(filesPictureVo); |
| | | //4.查询问题处理信息 |
| | | ProblemProVo problemProVo = new ProblemProVo(); |
| | | /*ProblemProVo problemProVo = new ProblemProVo(); |
| | | //4.2查询处置流程环节配置 |
| | | List<WorkflowConfigStep> listWcsPp = workflowConfigStepMapper.selectRecordByWorkflowConfigStepId(wtcllcId); |
| | | List<WorkflowConfigStep> listWcsPp = new ArrayList<>(); |
| | | //4.3设置调度流程 |
| | | problemProVo.setWorkflowConfigSteps(listWcsPp); |
| | | bcd.setProblemProVo(problemProVo); |
| | | 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); |
| | | if (investigation != null && investigation.getPartyId() != null) { |
| | | //获取当事人信息 |
| | | Map mapP = new HashMap(); |
| | | mapP.put("id", investigation.getPartyId()); |
| | | PartyInfo partyInfo = partyInfoMapper.selectCondMap(mapP); |
| | | //填充当事人 |
| | | investigation.setPartyInfo(partyInfo); |
| | | } |
| | | currentSitVo.setInvestigation(investigation); |
| | | //设置告知违法 |
| | | QueryWrapper<Writ> wrapperW = new QueryWrapper<>(); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public void endCase(Integer caseId, String result) { |
| | | public void endCase(Long caseId, String result,String opinion) { |
| | | //获取当前登陆用户信息 |
| | | AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); |
| | | Integer endCaseState = 6; |
| | | Integer state = 2; |
| | | String endCaseName = "结案"; |
| | | String endCaseName = StepName.CLOSING_REGISTER.getName(); |
| | | BaseCase baseCase = new BaseCase(); |
| | | baseCase.setState(endCaseState); |
| | | baseCase.setState(BaseCaseStatus.CLOSING_REGISTER); |
| | | baseCase.setId(caseId); |
| | | baseCase.setFinalOpinion(opinion); |
| | | baseCaseMapper.updateById(baseCase); |
| | | |
| | | QueryWrapper<WorkflowConfigStep> stepQurey = new QueryWrapper<>(); |
| | | stepQurey.eq("name", endCaseName); |
| | | WorkflowConfigStep workflowConfigStep = workflowConfigStepMapper.selectOne(stepQurey); |
| | | if (workflowConfigStep == null) { |
| | | throw new ApiException("未查询到该流程环节"); |
| | | } |
| | | UpdateWrapper<DisposeRecord> updateWrapper = new UpdateWrapper<>(); |
| | | updateWrapper.eq("base_case_id", baseCase.getId()).eq("workflow_config_step_id",workflowConfigStep.getId()); |
| | | |
| | | //修改结案记录 |
| | | 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); |
| | | disposeRecord.setHandlerId(user.getUserId()); |
| | | //结案已结束 |
| | | disposeRecord.setState(1); |
| | | disposeRecord.setEndTime(LocalDateTime.now()); |
| | | disposeRecord.setHandlerId(user.getUserId()); |
| | | disposeRecordMapper.update(disposeRecord, updateWrapper); |
| | | } |
| | | } |