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/DisposeRecordServiceImpl.java | 298 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 278 insertions(+), 20 deletions(-) diff --git a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/DisposeRecordServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/DisposeRecordServiceImpl.java index 1777567..f2f4c28 100644 --- a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/DisposeRecordServiceImpl.java +++ b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/DisposeRecordServiceImpl.java @@ -1,19 +1,41 @@ package com.ycl.service.caseHandler.impl; +import cn.hutool.core.util.PageUtil; +import com.alibaba.druid.sql.PagerUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +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.entity.caseHandler.BaseCase; -import com.ycl.entity.caseHandler.DisposeRecord; +import com.ycl.api.CommonResult; +import com.ycl.bo.AdminUserDetails; +import com.ycl.common.constant.BaseCaseStatus; +import com.ycl.common.constant.StepName; +import com.ycl.dto.dispatch.UploadDisposingResultParam; +import com.ycl.entity.caseHandler.*; +import com.ycl.entity.resources.ImageResources; +import com.ycl.exception.ApiException; import com.ycl.mapper.caseHandler.BaseCaseMapper; import com.ycl.mapper.caseHandler.DisposeRecordMapper; -import com.ycl.service.caseHandler.IDisposeRecordService; +import com.ycl.mapper.caseHandler.WorkflowConfigStepMapper; +import com.ycl.service.caseHandler.*; +import com.ycl.service.resources.IImageResourcesService; import com.ycl.vo.MyBacklogVO; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +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.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; +import java.util.Objects; /** * <p> @@ -24,29 +46,265 @@ * @since 2022-09-24 */ @Service +@Slf4j public class DisposeRecordServiceImpl extends ServiceImpl<DisposeRecordMapper, DisposeRecord> implements IDisposeRecordService { @Resource BaseCaseMapper baseCaseMapper; - @Resource DisposeRecordMapper disposeRecordMapper; + @Resource + WorkflowConfigStepMapper workflowConfigStepMapper; + @Autowired + IInvestigationService iInvestigationService; + @Autowired + IArrivalSituationService iArrivalSituationService; + @Autowired + IPartyInfoService iPartyInfoService; + @Autowired + IWritService iWritService; + @Autowired + IBaseCaseService baseCaseService; + @Autowired + IDisposeRecordService iDisposeRecordService; + @Autowired + IImageResourcesService iImageResourcesService; + public final static Short LAST_WEEK = 0; + public final static Short LAST_MONTH = 1; + public final static Short LAST_THREEMONTH = 2; @Override - public List<MyBacklogVO> listMyTask(Integer caseId, Long userId) { - return disposeRecordMapper.selectList( - new LambdaQueryWrapper<DisposeRecord>() - .eq(DisposeRecord::getHandlerId, userId.intValue()) - .isNull(DisposeRecord::getEndTime)) - .stream() - .map(item -> { - MyBacklogVO myBacklogVO = new MyBacklogVO(); - BeanUtils.copyProperties(item, myBacklogVO); - BaseCase baseCase = baseCaseMapper.selectById(caseId); - myBacklogVO.setCategory(baseCase.getCategory()); - myBacklogVO.setEventSource(baseCase.getEventSource()); - myBacklogVO.setCode(baseCase.getCode()); - return myBacklogVO; - }).collect(Collectors.toList()); + public Page<MyBacklogVO> listMyTask(String num, Long userId, Short type, Short source, Short time, Integer current, Integer pageSize) { + LocalDateTime alarmTimeStart = null; + LocalDateTime alarmTimeEnd = null; + if (Objects.equals(time, LAST_WEEK)) { + alarmTimeStart = LocalDateTime.now().minusDays(7); + alarmTimeEnd = LocalDateTime.now(); + } else if (Objects.equals(time, LAST_MONTH)) { + alarmTimeStart = LocalDateTime.now().minusMonths(1); + alarmTimeEnd = LocalDateTime.now(); + } else if (Objects.equals(time, LAST_THREEMONTH)) { + alarmTimeStart = LocalDateTime.now().minusMonths(3); + alarmTimeEnd = LocalDateTime.now(); + } + Integer pageIndex = PageUtil.getStart(current - 1, pageSize); + List<MyBacklogVO> list = disposeRecordMapper.selectMyBackList(userId, num, alarmTimeStart, alarmTimeEnd, source, type, pageIndex, pageSize); + Long total = disposeRecordMapper.selectMyBackListTotal(userId, num, alarmTimeStart, alarmTimeEnd, source, type); + + list.forEach(o -> { + if (o.getPictureList() != null && o.getPictureList().size() > 0) { + o.setPicture(o.getPictureList().get(0).getUrl()); + } + }); + Page<MyBacklogVO> page = new Page<>(); + page.setRecords(list); + page.setTotal(total); + return page; + } + + @Override + public Long listMyTaskCount(String num, Long userId, Short type, Short source, Short time) { + LocalDateTime alarmTimeStart = null; + LocalDateTime alarmTimeEnd = null; + if (Objects.equals(time, LAST_WEEK)) { + alarmTimeStart = LocalDateTime.now().minusDays(7); + alarmTimeEnd = LocalDateTime.now(); + } else if (Objects.equals(time, LAST_MONTH)) { + alarmTimeStart = LocalDateTime.now().minusMonths(1); + alarmTimeEnd = LocalDateTime.now(); + } else if (Objects.equals(time, LAST_THREEMONTH)) { + alarmTimeStart = LocalDateTime.now().minusMonths(3); + alarmTimeEnd = LocalDateTime.now(); + } + return disposeRecordMapper.selectMyBackListTotal(userId, num, alarmTimeStart, alarmTimeEnd, source, type); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult saveOrUpdateUpload(UploadDisposingResultParam uploadDisposingResultParam) { + log.info("鍙傛暟------------------>{}", uploadDisposingResultParam); + if (uploadDisposingResultParam.getArrivalTime() != null) { + uploadDisposingResultParam.setArrivalTime(uploadDisposingResultParam.getArrivalTime().replace("/", "-")); + } + if (uploadDisposingResultParam.getInvestigationTime() != null) { + uploadDisposingResultParam.setInvestigationTime(uploadDisposingResultParam.getInvestigationTime().replace("/", "-")); + } + + List<String> pics = new ArrayList<>(); + uploadDisposingResultParam.getPic().forEach(o -> { + pics.add(o.replace("/sccg/API/img?fileUrl=", "")); + }); + uploadDisposingResultParam.setPic(pics); + + List<String> situationPics = new ArrayList<>(); + uploadDisposingResultParam.getSituationPic().forEach(o -> { + situationPics.add(o.replace("/sccg/API/img?fileUrl=", "")); + }); + uploadDisposingResultParam.setSituationPic(situationPics); + + AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + List<ArrivalSituation> list = iArrivalSituationService.list(new LambdaQueryWrapper<ArrivalSituation>().eq(ArrivalSituation::getBaseCaseId, uploadDisposingResultParam.getCaseId())); + if (!list.isEmpty()) { + //TODO:杩濊娌℃湁褰撲簨浜篒D,杩濆缓鎵嶆湁 + if (uploadDisposingResultParam.getPartyInfoId() != null) { + //褰撲簨浜� + PartyInfo partyInfo = new PartyInfo(); + BeanUtils.copyProperties(uploadDisposingResultParam, partyInfo); + //TODO:鍓嶇鍥炴樉鍙湁褰撲簨浜哄鍚嶉渶瑕佸湪璇︽儏杩斿洖 + //TODO:鍚庡彴涓婃姤褰撲簨浜轰俊鎭~涓嶈繘鍘� + partyInfo.setId(uploadDisposingResultParam.getPartyInfoId()); + iPartyInfoService.updateById(partyInfo); + //璋冩煡鍙栬瘉 + Investigation investigation = new Investigation(); + BeanUtils.copyProperties(uploadDisposingResultParam, investigation); + investigation.setBaseCaseId(uploadDisposingResultParam.getCaseId()); + investigation.setPartyId(partyInfo.getId()); + //TODO:鏀逛负闆嗗悎鐨勫瓧绗︿覆褰㈠紡 + investigation.setPic(String.join(",", uploadDisposingResultParam.getPic())); + //TODO:灏忕▼搴忓墠绔〉闈㈡病鏈夎皟鏌ユ椂闂达紝鏆傛椂涓嶅~ + //investigation.setInvestigationTime(LocalDateTime.parse(uploadDisposingResultParam.getInvestigationTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + investigation.setId(uploadDisposingResultParam.getInvestigationId()); + iInvestigationService.updateById(investigation); + } + //鍒拌揪 + ArrivalSituation arrivalSituation = new ArrivalSituation(); + BeanUtils.copyProperties(uploadDisposingResultParam, arrivalSituation); + arrivalSituation.setBaseCaseId(uploadDisposingResultParam.getCaseId()); + arrivalSituation.setArrivalTime(LocalDateTime.parse(uploadDisposingResultParam.getArrivalTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + arrivalSituation.setId(uploadDisposingResultParam.getArrivalSituationId()); + //TODO:鏀逛负闆嗗悎鐨勫瓧绗︿覆褰㈠紡 + arrivalSituation.setSituationPic(String.join(",", uploadDisposingResultParam.getSituationPic())); + iArrivalSituationService.updateById(arrivalSituation); + //鏂囦功 + String handType = "02"; + iImageResourcesService.deleteByCaseId(uploadDisposingResultParam.getCaseId(), handType); + ImageResources imageResources = new ImageResources(); + imageResources.setType(handType); + imageResources.setBelongToId(uploadDisposingResultParam.getCaseId()); + imageResources.setUrl(StringUtils.joinWith(",", + String.join(",", uploadDisposingResultParam.getPic()), + String.join(",", uploadDisposingResultParam.getSituationPic()))); + iImageResourcesService.save(imageResources); + if (uploadDisposingResultParam.getWritCode() != null && uploadDisposingResultParam.getWritType() != null) { + Writ writ = new Writ(); + BeanUtils.copyProperties(uploadDisposingResultParam, writ); + writ.setBaseCaseId(uploadDisposingResultParam.getCaseId()); + writ.setIllegalBuildingId(uploadDisposingResultParam.getCaseId()); + writ.setLimitTime(LocalDateTime.parse(uploadDisposingResultParam.getLimitTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + writ.setRectifyTime(LocalDateTime.parse(uploadDisposingResultParam.getRectifyTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + writ.setSendTime(LocalDateTime.parse(uploadDisposingResultParam.getSendTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + iWritService.updateById(writ); + imageResources.setUrl(StringUtils + .joinWith(",", uploadDisposingResultParam.getPic() + , uploadDisposingResultParam.getSituationPic() + , uploadDisposingResultParam.getOriginalPic() + , uploadDisposingResultParam.getOtherPic() + , uploadDisposingResultParam.getRectifiedPic() + , uploadDisposingResultParam.getWritPic())); + iImageResourcesService.updateById(imageResources); + } + baseCaseService.update(new LambdaUpdateWrapper<BaseCase>().eq(BaseCase::getId, uploadDisposingResultParam.getCaseId()).set(BaseCase::getState, BaseCaseStatus.DISPOSE)); + } else { + //褰撲簨浜� + PartyInfo partyInfo = new PartyInfo(); + BeanUtils.copyProperties(uploadDisposingResultParam, partyInfo); + partyInfo.setCreateUser(user.getUserId().intValue()); + partyInfo.setCreateTime(LocalDateTime.now()); + iPartyInfoService.save(partyInfo); + //璋冩煡鍙栬瘉 + Investigation investigation = new Investigation(); + BeanUtils.copyProperties(uploadDisposingResultParam, investigation); + investigation.setBaseCaseId(uploadDisposingResultParam.getCaseId()); + investigation.setCreateTime(LocalDateTime.now()); + //TODO:鏀逛负闆嗗悎鐨勫瓧绗︿覆褰㈠紡 + investigation.setPic(String.join(",", uploadDisposingResultParam.getPic())); + investigation.setCreateUser(user.getUserId()); + investigation.setPartyId(partyInfo.getId()); + + //TODO:鍓嶇椤甸潰娌℃湁璋冩煡鏃堕棿锛屾殏鏃朵笉濉� +// investigation.setInvestigationTime(LocalDateTime.parse(uploadDisposingResultParam.getInvestigationTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + iInvestigationService.save(investigation); + //鍒拌揪 + ArrivalSituation arrivalSituation = new ArrivalSituation(); + BeanUtils.copyProperties(uploadDisposingResultParam, arrivalSituation); + arrivalSituation.setBaseCaseId(uploadDisposingResultParam.getCaseId()); + arrivalSituation.setCreateTime(LocalDateTime.now()); + arrivalSituation.setCreateUser(user.getUserId()); + //TODO:鏀逛负闆嗗悎鐨勫瓧绗︿覆褰㈠紡 + arrivalSituation.setSituationPic(String.join(",", uploadDisposingResultParam.getSituationPic())); + arrivalSituation.setArrivalTime(LocalDateTime.parse(uploadDisposingResultParam.getArrivalTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + iArrivalSituationService.save(arrivalSituation); + //鏂囦功 + String handType = "02"; + ImageResources imageResources = new ImageResources(); + imageResources.setType(handType); + imageResources.setBelongToId(uploadDisposingResultParam.getCaseId()); + imageResources.setCreateTime(LocalDateTime.now()); + imageResources.setCreateUser(user.getUserId()); + imageResources.setUrl(StringUtils.joinWith(",", + String.join(",", uploadDisposingResultParam.getPic()), + String.join(",", uploadDisposingResultParam.getSituationPic()))); + iImageResourcesService.save(imageResources); + if (uploadDisposingResultParam.getWritCode() != null && uploadDisposingResultParam.getWritType() != null) { + Writ writ = new Writ(); + BeanUtils.copyProperties(uploadDisposingResultParam, writ); + writ.setBaseCaseId(uploadDisposingResultParam.getCaseId()); + writ.setIllegalBuildingId(uploadDisposingResultParam.getCaseId()); + writ.setCreateTime(LocalDateTime.now()); + writ.setCreateUser(user.getUserId()); + writ.setLimitTime(LocalDateTime.parse(uploadDisposingResultParam.getLimitTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + writ.setRectifyTime(LocalDateTime.parse(uploadDisposingResultParam.getRectifyTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + writ.setSendTime(LocalDateTime.parse(uploadDisposingResultParam.getSendTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + iWritService.save(writ); + imageResources.setUrl(StringUtils + .joinWith("," + , String.join(",", uploadDisposingResultParam.getPic()) + , String.join(",", uploadDisposingResultParam.getSituationPic()) + , uploadDisposingResultParam.getOriginalPic() + , uploadDisposingResultParam.getOtherPic() + , uploadDisposingResultParam.getRectifiedPic() + , uploadDisposingResultParam.getWritPic())); + iImageResourcesService.updateById(imageResources); + } + + baseCaseService.update(new LambdaUpdateWrapper<BaseCase>().eq(BaseCase::getId, uploadDisposingResultParam.getCaseId()).set(BaseCase::getState, BaseCaseStatus.DISPOSE)); + } + String stepName = StepName.CHECK.getName(); + DisposeRecord disposeRecord = new DisposeRecord(); + disposeRecord.setBaseCaseId(uploadDisposingResultParam.getCaseId()); + disposeRecord.setState(0); + disposeRecord.setCreateTime(LocalDateTime.now()); + disposeRecord.setCreateUser(user.getUserId()); + disposeRecord.setStepName(stepName); + disposeRecord.setStartTime(LocalDateTime.now()); + //缁撴潫涓婁紶澶勭疆娴佺▼ + QueryWrapper<WorkflowConfigStep> qureyDispatch = new QueryWrapper<>(); + qureyDispatch.eq("name", StepName.DISPOSE.getName()); + WorkflowConfigStep dispatchStep = workflowConfigStepMapper.selectOne(qureyDispatch); + + UpdateWrapper<DisposeRecord> updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("base_case_id", disposeRecord.getBaseCaseId()).eq("workflow_config_step_id", dispatchStep.getId()); + + DisposeRecord updateRecord = new DisposeRecord(); + updateRecord.setState(1); + updateRecord.setEndTime(LocalDateTime.now()); + updateRecord.setHandlerId(disposeRecord.getCreateUser()); + updateRecord.setResult(uploadDisposingResultParam.getDescription()); + baseMapper.update(updateRecord, updateWrapper); + + QueryWrapper<WorkflowConfigStep> stepQurey = new QueryWrapper<>(); + stepQurey.eq("name", disposeRecord.getStepName()); + WorkflowConfigStep workflowConfigStep = workflowConfigStepMapper.selectOne(stepQurey); + if (workflowConfigStep == null) { + throw new ApiException("鏈煡璇㈠埌璇ユ祦绋嬬幆鑺�"); + } + //璁剧疆娴佺▼鐜妭鏁版嵁 + disposeRecord.setWorkflowConfigStepId(workflowConfigStep.getId()); + disposeRecord.setHandlerRoleId(workflowConfigStep.getRoleId()); + boolean result = baseMapper.insert(disposeRecord) == 1 ? true : false; + if (!result) { + CommonResult.failed("宸叉彁浜�,璇峰嬁閲嶅鎻愪氦"); + } + return CommonResult.success("add success"); } } -- Gitblit v1.8.0