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.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.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.Objects; /** *

* 处置流程记录 服务实现类 *

* * @author wl * @since 2022-09-24 */ @Service @Slf4j public class DisposeRecordServiceImpl extends ServiceImpl 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 Page 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 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 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 pics = new ArrayList<>(); uploadDisposingResultParam.getPic().forEach(o -> { pics.add(o.replace("/sccg/API/img?fileUrl=", "")); }); uploadDisposingResultParam.setPic(pics); List 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 list = iArrivalSituationService.list(new LambdaQueryWrapper().eq(ArrivalSituation::getBaseCaseId, uploadDisposingResultParam.getCaseId())); if (!list.isEmpty()) { //TODO:违规没有当事人ID,违建才有 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().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().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 qureyDispatch = new QueryWrapper<>(); qureyDispatch.eq("name", StepName.DISPOSE.getName()); WorkflowConfigStep dispatchStep = workflowConfigStepMapper.selectOne(qureyDispatch); UpdateWrapper 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 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"); } }