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.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.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.*; 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.Duration; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** *

* 案件基本信息 服务实现类 *

* * @author wl * @since 2022-09-24 */ @Service public class BaseCaseServiceImpl extends ServiceImpl implements IBaseCaseService { private CityPlatformService cityPlatformService; private IViolationsService violationsService; private IVideoAlarmReportService videoAlarmReportService; @Value("${fdfs.fileUrl}") private String fileUrl; @Autowired public void setCityPlatformService(CityPlatformService cityPlatformService) { this.cityPlatformService = cityPlatformService; } @Autowired public void setViolationsService(IViolationsService violationsService) { this.violationsService = violationsService; } @Autowired public void setVideoAlarmReportService(IVideoAlarmReportService videoAlarmReportService) { this.videoAlarmReportService = videoAlarmReportService; } @Resource BaseCaseMapper baseCaseMapper; @Resource DataDictionaryMapper dataDictionaryMapper; @Resource 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) { BaseCase baseCase = this.getById(caseId); Violations violations = violationsService.getById(caseId); String medias = ""; String eventDesc = ""; if (violations != null) { eventDesc = violations.getDescription(); VideoAlarmReport videoAlarmReport = videoAlarmReportService.getById(violations.getVideoAlarmReportId()); if (videoAlarmReport != null) { StringBuilder stringBuilder = new StringBuilder().append("[{'mediaURL':'").append(fileUrl).append(videoAlarmReport.getPicData()).append("'}]"); medias = stringBuilder.toString(); } } 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()); this.updateById(baseCase); return null; } else { return result.getMsg(); } } @Override public String processEvent(Integer caseId) { BaseCase baseCase = this.getById(caseId); EventProcessParamDto paramDto = EventProcessParamDto.builder().eventSign(baseCase.getCode()).taskcode(baseCase.getTaskCode()).build(); String msg = cityPlatformService.getEventProcess(paramDto); ResultResponseDto responseDto = JSONObject.parseObject(msg, ResultResponseDto.class); if (responseDto.getCode() == 0) { EventProcessResponseDto eventProcessResponseDto = JSONObject.parseObject(responseDto.getResult(), EventProcessResponseDto.class); /*********** 未处理市平台返回数据 ***************/ return null; } else { return responseDto.getMsg(); } } @Override public Page listViolationsPage(Page page, Integer state, Integer resource) { Integer type = 01; Integer hours = 60; Page violationsPage = baseCaseMapper.listViolationsPage(page, state, type, resource); List 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 casePoolViolationVOPage = new Page<>(); BeanUtils.copyProperties(violationsPage, casePoolViolationVOPage); casePoolViolationVOPage.setRecords(violationVOList); return casePoolViolationVOPage; } @Override public Page listIllegalBuilding(Page page, Integer state, Integer resource) { Integer type = 02; Page casePoolIllegalBuildingDTOPage = baseCaseMapper.listIllegalBuildingsPage(page, state, type, resource); List casePoolIllegalBuildingVOList = casePoolIllegalBuildingDTOPage .getRecords() .stream() .map( item -> { CasePoolIllegalBuildingVO casePoolIllegalBuildingVO = new CasePoolIllegalBuildingVO(); BeanUtils.copyProperties(item, casePoolIllegalBuildingVO); casePoolIllegalBuildingVO.setCategory(dataDictionaryMapper.selectById(item.getCategoryId()).getName()); return casePoolIllegalBuildingVO; } ).collect(Collectors.toList()); Page casePoolViolationVOPage = new Page<>(); BeanUtils.copyProperties(casePoolIllegalBuildingDTOPage, casePoolViolationVOPage); casePoolViolationVOPage.setRecords(casePoolIllegalBuildingVOList); return casePoolViolationVOPage; } @Override public Boolean saveViolationCase(ViolationParam violationParam, Integer id) { Violations violations = new Violations(); BeanUtils.copyProperties(violationParam, violations); violations.setId(id); Integer value = 1; return violationsMapper.insert(violations) == value ? true : false; } @Override public Boolean saveIllegalBuildingCase(IllegalBuildingParam illegalBuildingParam, Integer id) { IllegalBuilding illegalBuilding = new IllegalBuilding(); 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 wrapper = new QueryWrapper<>(); wrapper.lambda().eq(BaseCase::getCode, code); BaseCase baseCase = baseCaseMapper.selectOne(wrapper); bcd.setBaseCase(baseCase); //2.查询办理经过信息 //2.1查询处置流程配置 HandlePassVo handlePassVo = new HandlePassVo(); QueryWrapper wrapperWc = new QueryWrapper<>(); wrapperWc.lambda().eq(WorkflowConfig::getCode, "ddlc").or().eq(WorkflowConfig::getCode, "wtcllc"); List 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 listWcs = workflowConfigStepMapper.selectRecordByWorkflowConfigStepId(ddlcId); //2.3设置调度流程 handlePassVo.setWorkflowConfigSteps(listWcs); bcd.setHandlePassVo(handlePassVo); //3.查询案卷图片信息 FilesPictureVo filesPictureVo = new FilesPictureVo(); QueryWrapper wrapperIr = new QueryWrapper<>(); wrapperIr.lambda().eq(ImageResources::getType, "01").or().eq(ImageResources::getType, "02"); List irs = imageResourcesMapper.selectList(wrapperIr); filesPictureVo.setImageResources(irs); bcd.setFilesPictureVo(filesPictureVo); //4.查询问题处理信息 ProblemProVo problemProVo = new ProblemProVo(); //4.2查询处置流程环节配置 List listWcsPp = workflowConfigStepMapper.selectRecordByWorkflowConfigStepId(wtcllcId); //4.3设置调度流程 problemProVo.setWorkflowConfigSteps(listWcsPp); bcd.setProblemProVo(problemProVo); //5.查询现场情况信息 CurrentSitVo currentSitVo = new CurrentSitVo(); QueryWrapper wrapperAs = new QueryWrapper<>(); //设置到达现场情况 ArrivalSituation as = arrivalSituationMapper.selectOne(wrapperAs); currentSitVo.setArrivalSituation(as); //设置调查取证 QueryWrapper wrapperI = new QueryWrapper<>(); wrapperI.lambda().eq(Investigation::getBaseCaseId, baseCase.getId()); Investigation investigation = investigationMapper.selectOne(wrapperI); currentSitVo.setInvestigation(investigation); //设置告知违法 QueryWrapper 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 listCaseImages(Integer id, Integer type) { Integer illegalBuildingType = 02; ArrayList caseImages = new ArrayList<>(); caseImages.add(investigationMapper .selectOne(new LambdaQueryWrapper() .eq(Investigation::getBaseCaseId, id)).getPic()); caseImages.add(arrivalSituationMapper .selectOne(new LambdaQueryWrapper() .eq(ArrivalSituation::getBaseCaseId, id)).getSituationPic()); if (type == illegalBuildingType) { Writ writ = writMapper.selectOne(new LambdaQueryWrapper().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().eq(WorkflowConfigStep::getName, endCaseName)) .getWorkflowConfigId()); disposeRecord.setCreateUser(user.getUserId().intValue()); disposeRecord.setResult(result); disposeRecord.setState(state); disposeRecord.setCreateTime(LocalDateTime.now()); disposeRecordMapper.insert(disposeRecord); } }