diff --git a/src/main/java/com/biutag/supervision/pojo/transfer/ComplaintCollectionTransfer.java b/src/main/java/com/biutag/supervision/pojo/transfer/ComplaintCollectionTransfer.java index dd1c288..e094ba3 100644 --- a/src/main/java/com/biutag/supervision/pojo/transfer/ComplaintCollectionTransfer.java +++ b/src/main/java/com/biutag/supervision/pojo/transfer/ComplaintCollectionTransfer.java @@ -20,7 +20,10 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; +import java.util.Arrays; +import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; /** * @ClassName ComplaintCollectionTansfer @@ -64,4 +67,7 @@ public interface ComplaintCollectionTransfer { List complaintCollectionCheckFileToFileVo(List complaintCollectionCheckFiles); +// List complaintCollectionBlamesToBlames(List pseronalList); + + } diff --git a/src/main/java/com/biutag/supervision/pojo/vo/complaintCollection/ComplaintCollectionWatchDetailVO.java b/src/main/java/com/biutag/supervision/pojo/vo/complaintCollection/ComplaintCollectionWatchDetailVO.java index 88de097..9ef629d 100644 --- a/src/main/java/com/biutag/supervision/pojo/vo/complaintCollection/ComplaintCollectionWatchDetailVO.java +++ b/src/main/java/com/biutag/supervision/pojo/vo/complaintCollection/ComplaintCollectionWatchDetailVO.java @@ -1,13 +1,16 @@ package com.biutag.supervision.pojo.vo.complaintCollection; -import com.baomidou.mybatisplus.annotation.TableField; +import com.biutag.supervision.pojo.domain.Blame; +import com.biutag.supervision.pojo.dto.flow.VerifyData; import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionSourceTableEnum; import com.biutag.supervision.pojo.enums.complaintCollection.YesOrNoEnum; +import com.biutag.supervision.pojo.vo.FileVo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.Setter; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; /** @@ -292,11 +295,17 @@ public class ComplaintCollectionWatchDetailVO { @Schema(description = "涉及单位") private String involveDepartName; - @Schema(description = "涉及班子成员(领导类)") - private List deptBlames; + @Schema(description = "涉及人员") + private List personalBlames; - @Schema(description = "涉及人员(普通个体)") - private List personalBlames; + private List blameLeaders = new ArrayList<>(); + + @Schema(description = "附件列表") + private List thingFiles = new ArrayList<>(); + + + @Schema(description = "核查办理附件列表") + private List files; @Getter diff --git a/src/main/java/com/biutag/supervision/repository/complaintCollectionFile/ComplaintCollectionFileResourceService.java b/src/main/java/com/biutag/supervision/repository/complaintCollectionFile/ComplaintCollectionFileResourceService.java index 48e9563..3ce5822 100644 --- a/src/main/java/com/biutag/supervision/repository/complaintCollectionFile/ComplaintCollectionFileResourceService.java +++ b/src/main/java/com/biutag/supervision/repository/complaintCollectionFile/ComplaintCollectionFileResourceService.java @@ -11,6 +11,7 @@ import jakarta.annotation.Resource; import jakarta.validation.ValidationException; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -38,6 +39,9 @@ public class ComplaintCollectionFileResourceService extends BaseDAO { setBatchQuery(param.getComplaintId(), param.getComplaintIds(), qw, ComplaintCollectionFile::getComplaintId); qw.eq(StrUtil.isNotBlank(param.getFileName()), ComplaintCollectionFile::getFileName, param.getFileName()); qw.eq(StrUtil.isNotBlank(param.getFilePath()), ComplaintCollectionFile::getFilePath, param.getFilePath()); + if (qw.getExpression() == null || qw.getExpression().getSqlSegment().isEmpty()) { + return Collections.emptyList(); + } return complaintCollectionFileMapper.selectList(qw); } diff --git a/src/main/java/com/biutag/supervision/service/complaintCollection/ComplaintCollectionServiceImpl.java b/src/main/java/com/biutag/supervision/service/complaintCollection/ComplaintCollectionServiceImpl.java index a501593..3d87c19 100644 --- a/src/main/java/com/biutag/supervision/service/complaintCollection/ComplaintCollectionServiceImpl.java +++ b/src/main/java/com/biutag/supervision/service/complaintCollection/ComplaintCollectionServiceImpl.java @@ -1,6 +1,7 @@ package com.biutag.supervision.service.complaintCollection; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Opt; @@ -498,27 +499,59 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic // 涉及信息 String checkStatus = complaintCollection.getCheckStatus(); boolean itTure = InspectCaseEnum.isItTure(checkStatus); - List personalBlames = new ArrayList<>(); - List deptBlames = new ArrayList<>(); if (itTure) { // 从negative_blame中读 - List list = negativeBlameService.list(request.getId()); - List pseronalList = list.stream().filter(one -> "personal".equals(one.getType())).collect(Collectors.toList()); - List department = list.stream().filter(one -> "department".equals(one.getType())).collect(Collectors.toList()); - personalBlames = ComplaintCollectionTransfer.INSTANCE.blameToBlameInfoVO(pseronalList); - deptBlames = ComplaintCollectionTransfer.INSTANCE.blameToBlameInfoVO(department); + List personalBlames = negativeBlameService.list(request.getId()); + List blameLeaders = personalBlames.stream().map(Blame::getLeadIdCode).filter(StrUtil::isNotBlank).collect(Collectors.toSet()) + .stream().map(leaderIdCode -> { + VerifyData.BlameLeader blameLeader = new VerifyData.BlameLeader(); + List blames = personalBlames.stream().filter(blameObj -> leaderIdCode.equals(blameObj.getLeadIdCode())).toList(); + // 取第一个 + Blame blame = blames.get(0); + BeanUtil.copyProperties(blame, blameLeader); + blameLeader.setBlameIdCodes(blames.stream().map(Blame::getBlameIdCode).toList()); + return blameLeader; + }).toList(); + vo.setPersonalBlames(personalBlames); + vo.setBlameLeaders(blameLeaders); } else { // 从自己表里读 ComplaintCollectionBlameQueryParam complaintCollectionBlameQueryParam = new ComplaintCollectionBlameQueryParam(); complaintCollectionBlameQueryParam.setComplaintId(request.getId()); List complaintCollectionBlames = complaintCollectionBlameResourceService.query(complaintCollectionBlameQueryParam); - List pseronalList = complaintCollectionBlames.stream().filter(one -> "personal".equals(one.getType())).collect(Collectors.toList()); - List department = complaintCollectionBlames.stream().filter(one -> "department".equals(one.getType())).collect(Collectors.toList()); - personalBlames = ComplaintCollectionTransfer.INSTANCE.complaintCollectionBlamesToBlameInfoVO(pseronalList); - deptBlames = ComplaintCollectionTransfer.INSTANCE.complaintCollectionBlamesToBlameInfoVO(department); + List blameLeaders = complaintCollectionBlames.stream().map(ComplaintCollectionBlame::getLeadIdCode).filter(StrUtil::isNotBlank).collect(Collectors.toSet()) + .stream().map(leaderIdCode -> { + VerifyData.BlameLeader blameLeader = new VerifyData.BlameLeader(); + List complaintCollectionBlameList = complaintCollectionBlames.stream().filter(blameObj -> leaderIdCode.equals(blameObj.getLeadIdCode())).toList(); + // 取第一个 + ComplaintCollectionBlame complaintCollectionBlame = complaintCollectionBlameList.get(0); + BeanUtil.copyProperties(complaintCollectionBlame, blameLeader); + blameLeader.setBlameIdCodes(complaintCollectionBlameList.stream().map(ComplaintCollectionBlame::getBlameIdCode).toList()); + return blameLeader; + }).toList(); + List personalBlames = new ArrayList<>(); + for (ComplaintCollectionBlame complaintCollectionBlame : complaintCollectionBlames) { + Blame blame = new Blame(); + BeanUtil.copyProperties(complaintCollectionBlame, blame, CopyOptions.create().setIgnoreError(true)); + blame.setIvPersonType(complaintCollectionBlame.getIvPersonTypeName()); + blame.setIvPersonTypeCode(complaintCollectionBlame.getIvPersonTypeCode()); + personalBlames.add(blame); + } + vo.setPersonalBlames(personalBlames); + vo.setBlameLeaders(blameLeaders); } - vo.setDeptBlames(deptBlames); - vo.setPersonalBlames(personalBlames); + // 附件 + ComplaintCollectionFileQueryParam complaintCollectionFileQueryParam = new ComplaintCollectionFileQueryParam(); + complaintCollectionFileQueryParam.setComplaintId(request.getId()); + List complaintCollectionFiles = complaintCollectionFileResourceService.query(complaintCollectionFileQueryParam); + List thingFiles = ComplaintCollectionTransfer.INSTANCE.complaintCollectionFileToFileVo(complaintCollectionFiles); + // 佐证附件 + ComplaintCollectionCheckFileQueryParam complaintCollectionCheckFileQueryParam = new ComplaintCollectionCheckFileQueryParam(); + complaintCollectionCheckFileQueryParam.setComplaintId(request.getId()); + List complaintCollectionCheckFiles = complaintCollectionCheckFileResourceService.query(complaintCollectionCheckFileQueryParam); + List files = ComplaintCollectionTransfer.INSTANCE.complaintCollectionCheckFileToFileVo(complaintCollectionCheckFiles); + vo.setFiles(files); + vo.setThingFiles(thingFiles); return Result.success(vo); } @@ -697,6 +730,35 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic return Result.success(Boolean.TRUE); } + + @Override + public Result forceTermination(ComplaintCollectionForceTerminationRequest request) { + // 只有市局管理员可以修改 + Set allowUpdateRoles = Set.of(RoleCodeEnum.FIRST_ADMIN.getCode(), RoleCodeEnum.ADMIN_1_12337.getCode()); + UserAuth user = UserContextHolder.getCurrentUser(); + List roleCodes = user.getRoleCodes(); + if (CollectionUtil.isEmpty(roleCodes) || roleCodes.stream().noneMatch(allowUpdateRoles::contains)) { + throw new IllegalStateException("只有[市局管理员、信访投诉-市局管理员]可以强制终结!"); + } + ComplaintCollectionQueryParam complaintCollectionQueryParam = new ComplaintCollectionQueryParam(); + complaintCollectionQueryParam.setId(request.getComplaintId()); + List complaintCollectionList = complaintCollectionResourceService.query(complaintCollectionQueryParam); + ComplaintCollection complaintCollection = complaintCollectionList.get(0); + LocalDateTime discoveryTime = complaintCollection.getDiscoveryTime(); + long maxSeconds = CHECK_LIMIT_DAYS * TimeUtil.SECONDS_OF_A_DAY; + long remainingAtInitial = TimeUtil.getRemainingDuration(discoveryTime, LocalDateTime.now(), maxSeconds); + String initialReviewStatus = (remainingAtInitial < 0) ? + ComplaintCollectionInitialEnum.TIMEOUT_UPLOAD.getCode() : ComplaintCollectionInitialEnum.UPLOADED.getCode(); + ComplaintCollectionUpdateParam complaintCollectionUpdateParam = new ComplaintCollectionUpdateParam(); + complaintCollectionUpdateParam.setId(request.getComplaintId()); + // 初核时间 + complaintCollectionUpdateParam.setGwf2(LocalDateTime.now().format(INITIAL_REVIEW_FMT)); + // 初核状态 + complaintCollectionUpdateParam.setGwf3(initialReviewStatus); + complaintCollectionUpdateParam.setStatus(ComplaintCollectionStatusEnum.FORCE_RESOLVED.getCode()); + return Result.success(complaintCollectionResourceService.updateSelectiveById(complaintCollectionUpdateParam)); + } + private List buildComplaintCollectionPersonExcelDTO(List blameList, List negativeBlames, List dataList) { List res = new ArrayList<>(); Map> complaintCollectionBlameMap = blameList.stream()