From a4047b6048ebfe09e66a765b58ea12b5bd0e2e6e Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期一, 28 十一月 2022 16:18:10 +0800 Subject: [PATCH] 店铺管理优化 --- ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java | 237 +++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 141 insertions(+), 96 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 f4069a2..5ed3ad7 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,23 +1,27 @@ package com.ycl.service.caseHandler.impl; +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.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.util.DateUtil; +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.dto.caseHandler.QueryForViolationParam; 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.dict.DataDictionary; +import com.ycl.entity.resources.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 com.ycl.mapper.resources.ImageResourcesMapper; import com.ycl.remote.dto.*; import com.ycl.remote.service.CityPlatformService; import com.ycl.service.caseHandler.IBaseCaseService; @@ -29,15 +33,16 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; 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.stream.Collectors; /** * <p> @@ -96,6 +101,10 @@ WorkflowConfigMapper workflowConfigMapper; @Resource ImageResourcesMapper imageResourcesMapper; + @Resource + DispatchInfoMapper dispatchInfoMapper; + @Resource + PartyInfoMapper partyInfoMapper; @Override @@ -112,9 +121,7 @@ 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(); + 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) { @@ -146,55 +153,30 @@ 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) { - 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); - return casePoolViolationVOPage; + Integer day = 24; + Page<CasePoolViolationVO> violationsPage = baseCaseMapper.listViolationsPage(page, state, type, resource); + violationsPage.getRecords().stream().forEach(item -> { + if (item.getCloseTime() == null) { + Duration duration = Duration.between(item.getAlarmTime(), LocalDateTime.now()); + long continueHours = duration.toHours() - (duration.toDays() * day); + long minutes = duration.toMinutes() - (duration.toHours() * hours); + String continueTime = duration.toDays() + "澶�" + continueHours + "鏃�" + minutes + "鍒嗛挓"; + item.setContinueTime(continueTime); + } else { + Duration duration = Duration.between(item.getAlarmTime(), item.getCloseTime()); + long continueHours = duration.toHours() - (duration.toDays() * day); + long minutes = duration.toMinutes() - (duration.toHours() * hours); + String continueTime = duration.toDays() + "澶�" + continueHours + "鏃�" + minutes + "鍒嗛挓"; + item.setContinueTime(continueTime); + } + }); + return violationsPage; } @Override public Page listIllegalBuilding(Page page, Integer state, Integer resource) { Integer type = 02; - Page<CasePoolIllegalBuildingDO> casePoolIllegalBuildingDTOPage = baseCaseMapper.listIllegalBuildingsPage(page, state, type, resource); - List<CasePoolIllegalBuildingVO> casePoolIllegalBuildingVOList = casePoolIllegalBuildingDTOPage - .getRecords() - .stream() - .map( - item -> { - 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()); - Page<CasePoolIllegalBuildingVO> casePoolViolationVOPage = new Page<>(); - BeanUtils.copyProperties(casePoolIllegalBuildingDTOPage, casePoolViolationVOPage); - casePoolViolationVOPage.setRecords(casePoolIllegalBuildingVOList); - return casePoolViolationVOPage; + return baseCaseMapper.listIllegalBuildingsPage(page, state, type, resource); } @Override @@ -203,14 +185,20 @@ BeanUtils.copyProperties(violationParam, violations); Integer value = 1; violations.setId(id); - setDisposeRecord(id); + setDisposeRecord(id, violationParam.getLimitTime()); return violationsMapper.insert(violations) == value ? true : false; } - private void setDisposeRecord(Long id) { - String stepName = "璋冨害"; + private void setDisposeRecord(Long id, String limitTime) { + 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()); @@ -218,6 +206,9 @@ disposeRecord.setCreateUser(userDetails.getUserId()); disposeRecord.setStartTime(LocalDateTime.now()); disposeRecord.setStepName(stepName); + if (!StringUtils.isEmpty(limitTime)) { + disposeRecord.setLimitTime(LocalDateTime.parse(limitTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + } disposeRecordMapper.insert(disposeRecord); } @@ -225,7 +216,7 @@ public Boolean saveIllegalBuildingCase(IllegalBuildingParam illegalBuildingParam, Long id) { IllegalBuilding illegalBuilding = new IllegalBuilding(); BeanUtils.copyProperties(illegalBuildingParam, illegalBuilding); - setDisposeRecord(id); + setDisposeRecord(id, illegalBuildingParam.getLimitTime()); Integer value = 1; illegalBuilding.setBaseCaseId(id); return illegalBuildingMapper.insert(illegalBuilding) == value ? true : false; @@ -249,28 +240,31 @@ baseCase.setViolations(violations); } 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()); + } 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鏌ヨ澶勭疆娴佺▼鐜妭閰嶇疆 Map mapWcs = new HashMap(); - mapWcs.put("workflowConfigId", ddlcId); + mapWcs.put("workflowConfigId", wcs.get(0).getId()); mapWcs.put("baseCaseId", baseCase.getId()); List<WorkflowConfigStep> listWcs = workflowConfigStepMapper.selectRecordByWorkflowConfigStepId(mapWcs); //澶勭悊鐢ㄧ幆鑺傛椂闂� @@ -280,11 +274,8 @@ continue; } for (DisposeRecord record : records) { - if (record != null && record.getCreateTime() != null) { - record.setLinkTime( - DateUtil.getDistanceDateTime( - DateUtil.fromLocalDateTime(baseCase.getAlarmTime()), - DateUtil.fromLocalDateTime(record.getCreateTime()))); + if (record != null && record.getEndTime() != null && record.getStartTime() != null) { + record.setLinkTime(DateUtil.getDistanceDateTime(DateUtil.fromLocalDateTime(record.getStartTime()), DateUtil.fromLocalDateTime(record.getEndTime()))); } } step.setDisposeRecords(records); @@ -295,18 +286,18 @@ //3.鏌ヨ妗堝嵎鍥剧墖淇℃伅 FilesPictureVo filesPictureVo = new FilesPictureVo(); QueryWrapper<ImageResources> wrapperIr = new QueryWrapper<>(); - wrapperIr.lambda().eq(ImageResources::getType, "01").or().eq(ImageResources::getType, "02"); + wrapperIr.lambda().eq(ImageResources::getBelongToId, baseCase.getId()); List<ImageResources> irs = imageResourcesMapper.selectList(wrapperIr); filesPictureVo.setImageResources(irs); bcd.setFilesPictureVo(filesPictureVo); //4.鏌ヨ闂澶勭悊淇℃伅 - ProblemProVo problemProVo = new ProblemProVo(); + /*ProblemProVo problemProVo = new ProblemProVo(); //4.2鏌ヨ澶勭疆娴佺▼鐜妭閰嶇疆 - mapWcs.put("workflowConfigId", wtcllcId); - List<WorkflowConfigStep> listWcsPp = workflowConfigStepMapper.selectRecordByWorkflowConfigStepId(mapWcs); + 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<>(); @@ -318,6 +309,14 @@ 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<>(); @@ -332,12 +331,8 @@ 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()); + 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()); @@ -349,23 +344,73 @@ } @Override - public void endCase(Long caseId, String result) { + public void endCase(Long caseId, String result, String opinion) { + //鑾峰彇褰撳墠鐧婚檰鐢ㄦ埛淇℃伅 AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); - Integer state = 1; - String endCaseName = "缁撴"; + String endCaseName = StepName.CLOSING_REGISTER.getName(); BaseCase baseCase = new BaseCase(); baseCase.setState(BaseCaseStatus.CLOSING_REGISTER); baseCase.setId(caseId); + baseCase.setFinalOpinion(opinion); + baseCase.setCloseTime(LocalDateTime.now()); 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().longValue()); + disposeRecord.setHandlerId(user.getUserId()); + //缁撴宸茬粨鏉� + disposeRecord.setState(1); disposeRecord.setResult(result); - disposeRecord.setState(state); - disposeRecord.setCreateTime(LocalDateTime.now()); - disposeRecordMapper.insert(disposeRecord); + disposeRecord.setEndTime(LocalDateTime.now()); + disposeRecord.setHandlerId(user.getUserId()); + disposeRecordMapper.update(disposeRecord, updateWrapper); + } + + @Override + public List<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); + } + + @Override + public Page<QueryForViolationVO> selectViolation(QueryForViolationParam queryForViolationParam) { + return baseCaseMapper.selectViolationPage( + new Page<QueryForViolationVO>() + .setSize(queryForViolationParam.getPageSize()) + .setCurrent(queryForViolationParam.getCurrent()), queryForViolationParam); + } + + @Override + public Page<BaseCaseVO> selectVideoInspection(Integer current) { + return baseCaseMapper.selectVideoInspection(new Page<>(current, 1)); + } + + @Override + public Map<String, Object> selectCount() { + HashMap<String, Object> map = new HashMap<>(); + Long review = baseCaseMapper.selectCount(new LambdaQueryWrapper<BaseCase>().eq(BaseCase::getState, 1)); + map.put("review", review); + return map; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updateCase(ViolationParam violationParam) { + BaseCase baseCase = new BaseCase(); + BeanUtils.copyProperties(violationParam, baseCase); + baseCase.setId(violationParam.getBaseId()); + baseCaseMapper.updateById(baseCase); + Violations violations = new Violations(); + BeanUtils.copyProperties(violationParam, violations); + violations.setId(violations.getId()); + return violationsMapper.updateById(violations) == 1 ? true : false; } } \ No newline at end of file -- Gitblit v1.8.0