Compare commits

..

3 Commits

  1. 22
      src/main/java/com/biutag/supervision/job/Job.java
  2. 4
      src/main/java/com/biutag/supervision/pojo/dto/complaintCollection/ComplaintCollectionPageDTO.java
  3. 52
      src/main/java/com/biutag/supervision/pojo/enums/complaintCollection/ComplaintCollectionInitialEnum.java
  4. 5
      src/main/java/com/biutag/supervision/pojo/param/ComplaintCollection/ComplaintCollectionQueryParam.java
  5. 6
      src/main/java/com/biutag/supervision/pojo/param/ComplaintCollection/ComplaintCollectionUpdateParam.java
  6. 4
      src/main/java/com/biutag/supervision/pojo/request/complaintCollection/ComplaintCollectionPageRequest.java
  7. 8
      src/main/java/com/biutag/supervision/repository/complaintCollection/ComplaintCollectionResourceService.java
  8. 90
      src/main/java/com/biutag/supervision/service/complaintCollection/ComplaintCollectionServiceImpl.java

22
src/main/java/com/biutag/supervision/job/Job.java

@ -13,6 +13,7 @@ import com.biutag.supervision.pojo.dto.mail.MailAttachmentDTO;
import com.biutag.supervision.pojo.entity.*;
import com.biutag.supervision.pojo.entity.mailbox.Mail;
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionHandleMethodEnum;
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionInitialEnum;
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionPublicApprovalEnum;
import com.biutag.supervision.pojo.param.ComplaintCollection.ComplaintCollectionQueryParam;
import com.biutag.supervision.pojo.param.SupDepartQueryParam;
@ -534,16 +535,16 @@ public class Job {
log.warn("【局长信箱回填】未找到 Mail,originId={},跳过。", cc.getOriginId());
continue;
}
if ("属实".equals(mail.getVerifyIsTrue())) {
cc.setCheckStatus("1");
cc.setCheckStatusName("属实");
} else if ("基本属实".equals(mail.getVerifyIsTrue())) {
cc.setCheckStatus("2");
cc.setCheckStatusName("部分属实");
} else if ("不属实".equals(mail.getVerifyIsTrue())) {
cc.setCheckStatus("5");
cc.setCheckStatusName("不属实");
}
// if ("属实".equals(mail.getVerifyIsTrue())) {
// cc.setCheckStatus("1");
// cc.setCheckStatusName("属实");
// } else if ("基本属实".equals(mail.getVerifyIsTrue())) {
// cc.setCheckStatus("2");
// cc.setCheckStatusName("部分属实");
// } else if ("不属实".equals(mail.getVerifyIsTrue())) {
// cc.setCheckStatus("5");
// cc.setCheckStatusName("不属实");
// }
if (StrUtil.equalsAny(mail.getSatisfactionStatus(),"非常满意","基本满意")){
cc.setPublicRecognition(ComplaintCollectionPublicApprovalEnum.APPROVED.getCode());
}
@ -633,6 +634,7 @@ public class Job {
complaintCollection.setThirdDepartId(threeDepart.getId());
complaintCollection.setThirdDepartName(threeDepart.getShortName());
complaintCollection.setThingDesc(mail.getContent());
complaintCollection.setGwf3(ComplaintCollectionInitialEnum.UN_UPLOADED.getCode());
complaintAttachMap.put(mail.getId(), parseAttachments(mail.getAttachments()));
verifyAttachMap.put(mail.getId(), parseAttachments(mail.getVerifyAttachments()));
complaintCollectionToSave.add(complaintCollection);

4
src/main/java/com/biutag/supervision/pojo/dto/complaintCollection/ComplaintCollectionPageDTO.java

@ -266,4 +266,8 @@ public class ComplaintCollectionPageDTO {
private List<FileVo> thingFiles = new ArrayList<>();
@Schema(description = "剩余办理时长")
private Long remainingDuration;
}

52
src/main/java/com/biutag/supervision/pojo/enums/complaintCollection/ComplaintCollectionInitialEnum.java

@ -0,0 +1,52 @@
package com.biutag.supervision.pojo.enums.complaintCollection;
import com.biutag.supervision.constants.enums.CodeEnum;
import lombok.Getter;
/**
* @ClassName InitialCheckQueryEnum
* @Description 初核状态
* @Author shihao
* @Date 2026/1/29 15:54
*/
@Getter
public enum ComplaintCollectionInitialEnum implements CodeEnum {
/**
* 0 - 未上传 | 未初核
*/
UN_UPLOADED("0", "未初核"),
/**
* 1 - 已上传 | 已初核
*/
UPLOADED("1", "已初核"),
/**
* 2 - 超时上传 | 超时上传
*/
TIMEOUT_UPLOAD("2", "超时上传");
private final String code;
private final String desc;
ComplaintCollectionInitialEnum(String code, String desc) {
this.code = code;
this.desc = desc;
}
@Override
public String getCode() {
return code;
}
@Override
public String getDesc() {
return desc;
}
}

5
src/main/java/com/biutag/supervision/pojo/param/ComplaintCollection/ComplaintCollectionQueryParam.java

@ -104,6 +104,11 @@ public class ComplaintCollectionQueryParam extends BasePage {
@Schema(description = "核查情况集合")
private List<String> checkStatusList;
@Schema(description = "初核材料, 查询状态")
private List<String> initialReviewFileList;
// @Schema(description = "部门ID集合")
// private Set<String> secondDepartIds;

6
src/main/java/com/biutag/supervision/pojo/param/ComplaintCollection/ComplaintCollectionUpdateParam.java

@ -142,4 +142,10 @@ public class ComplaintCollectionUpdateParam {
@Schema(description = "临时保存信息")
private String involveJson;
@Schema(description = "初核时间, gwf2承接")
private String gwf2;
@Schema(description = "初核状态, gwf3承接")
private String gwf3;
}

4
src/main/java/com/biutag/supervision/pojo/request/complaintCollection/ComplaintCollectionPageRequest.java

@ -10,6 +10,7 @@ import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@ -75,6 +76,9 @@ public class ComplaintCollectionPageRequest extends BasePage implements ParamChe
@Schema(description = "核查情况")
private List<String> checkStatusList;
@Schema(description = "初核材料, 查询状态")
private List<String> initialReviewFileList = new ArrayList<>();
@Override
public void check() {
if (CollectionUtil.isNotEmpty(discoveryTimeList)){

8
src/main/java/com/biutag/supervision/repository/complaintCollection/ComplaintCollectionResourceService.java

@ -44,6 +44,7 @@ public class ComplaintCollectionResourceService extends BaseDAO {
queryWrapper.eq(StrUtil.isNotBlank(param.getResponderName()), ComplaintCollection::getResponderName, param.getResponderName());
queryWrapper.eq(StrUtil.isNotBlank(param.getResponderPhone()), ComplaintCollection::getResponderPhone, param.getResponderPhone());
queryWrapper.eq(StrUtil.isNotBlank(param.getStatus()), ComplaintCollection::getStatus, param.getStatus());
queryWrapper.in(CollectionUtil.isNotEmpty(param.getInitialReviewFileList()), ComplaintCollection::getGwf3, param.getInitialReviewFileList());
if (queryWrapper.getExpression() == null || queryWrapper.getExpression().getSqlSegment().isEmpty()) {
return Collections.emptyList();
}
@ -76,6 +77,7 @@ public class ComplaintCollectionResourceService extends BaseDAO {
qw.eq(StrUtil.isNotBlank(param.getLeadApproval()), ComplaintCollection::getLeadApproval, param.getLeadApproval());
qw.eq(StrUtil.isNotBlank(param.getProcessingStatus()), ComplaintCollection::getProcessingStatus, param.getProcessingStatus());
qw.eq(StrUtil.isNotBlank(param.getStatus()), ComplaintCollection::getStatus, param.getStatus());
qw.in(CollectionUtil.isNotEmpty(param.getInitialReviewFileList()), ComplaintCollection::getGwf3, param.getInitialReviewFileList());
// 来件内容
// 标签(表里如果是逗号字符串 tag="URGENT,NORMAL")
// 语义:命中任意一个标签即可(OR)
@ -214,6 +216,12 @@ public class ComplaintCollectionResourceService extends BaseDAO {
if (param.getInvolveJson()!=null){
uw.set(ComplaintCollection::getGwf1, param.getInvolveJson());
}
if (param.getGwf2()!=null){
uw.set(ComplaintCollection::getGwf2, param.getGwf2());
}
if (param.getGwf3()!=null){
uw.set(ComplaintCollection::getGwf3, param.getGwf3());
}
uw.set(ComplaintCollection::getTag, param.getTags() != null ? StringUtils.join(param.getTags(), ",") : null);
uw.set(ComplaintCollection::getUpdateBy, UserContextHolder.getCurrentUser().getUserName());
uw.set(ComplaintCollection::getUpdateTime, LocalDateTime.now());

90
src/main/java/com/biutag/supervision/service/complaintCollection/ComplaintCollectionServiceImpl.java

@ -27,13 +27,14 @@ import com.biutag.supervision.pojo.dto.flow.VerifyData;
import com.biutag.supervision.pojo.entity.*;
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionClosingStatusEnum;
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionHandleMethodEnum;
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionInitialEnum;
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionPublicApprovalEnum;
import com.biutag.supervision.pojo.enums.supDict.SupDictEnum;
import com.biutag.supervision.pojo.model.UserAuth;
import com.biutag.supervision.pojo.param.*;
import com.biutag.supervision.pojo.param.ComplaintCollection.ComplaintCollectionExistParam;
import com.biutag.supervision.pojo.param.ComplaintCollection.ComplaintCollectionQueryParam;
import com.biutag.supervision.pojo.param.ComplaintCollection.ComplaintCollectionUpdateParam;
import com.biutag.supervision.pojo.param.*;
import com.biutag.supervision.pojo.param.complaintCollectionBlame.ComplaintCollectionBlameQueryParam;
import com.biutag.supervision.pojo.param.complaintCollectionCheckFile.ComplaintCollectionCheckFileQueryParam;
import com.biutag.supervision.pojo.param.complaintCollectionFile.ComplaintCollectionFileQueryParam;
@ -56,6 +57,7 @@ import com.biutag.supervision.repository.supdepart.SupDepartResourceService;
import com.biutag.supervision.service.*;
import com.biutag.supervision.util.CodeTranslateUtil;
import com.biutag.supervision.util.SfssUtil;
import com.biutag.supervision.util.TimeUtil;
import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.ValidationException;
@ -103,6 +105,9 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic
private final DataCaseVerifResourceService dataCaseVerifResourceService;
private final NegativeProblemRelationService negativeProblemRelationService;
private final MailResourceService mailResourceService;
private static final DateTimeFormatter INITIAL_REVIEW_FMT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
private static final int CHECK_LIMIT_DAYS = 4;
@Override
@Transactional(rollbackFor = Exception.class)
@ -123,6 +128,7 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic
}
complaintCollection.setCreateTime(LocalDateTime.now());
complaintCollection.setCreateBy(UserContextHolder.getCurrentUser().getUserName());
complaintCollection.setGwf3(ComplaintCollectionInitialEnum.UN_UPLOADED.getCode());
Boolean res = complaintCollectionResourceService.createComplaintCollection(Arrays.asList(complaintCollection));
Assert.notNull(complaintCollection.getId(), "主表插入后未获取到ID");
saveThingFilesOrThrow(complaintCollection.getId(), request.getThingFiles());
@ -190,6 +196,9 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic
@Override
public Result<ComplaintCollectionPageVo> getComplaintCollectionPage(ComplaintCollectionPageRequest request) {
ComplaintCollectionQueryParam param = ComplaintCollectionTransfer.INSTANCE.pageRequestToPageParam(request);
if (request.getInitialReviewFileList().contains(ComplaintCollectionInitialEnum.UPLOADED.getCode())){
param.getInitialReviewFileList().add(ComplaintCollectionInitialEnum.TIMEOUT_UPLOAD.getCode());
}
UserAuth user = UserContextHolder.getCurrentUser();
if (!AppConstants.USER_TYPE_SUPER.equals(user.getUserType()) && (user.getRoleCodes().isEmpty() || user.getAuthSources().isEmpty() || user.getAuthDepartIds().isEmpty())) {
return Result.success(ComplaintCollectionPageVo.noAuthVo());
@ -207,6 +216,7 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic
Set<String> ids = complaintCollectionPageDTOS.stream().map(ComplaintCollectionPageDTO::getId).collect(Collectors.toSet());
ComplaintCollectionFileQueryParam complaintCollectionFileQueryParam = new ComplaintCollectionFileQueryParam();
complaintCollectionFileQueryParam.setComplaintIds(ids);
// 附件
Map<String, List<ComplaintCollectionFile>> complaintCollectionFileMap = complaintCollectionFileResourceService.queryGroupBy(complaintCollectionFileQueryParam, ComplaintCollectionFile::getComplaintId);
if (CollectionUtil.isNotEmpty(complaintCollectionPageDTOS)) {
Map<String, String> dictLabelMap = buildDictLabelMap(SupDictEnum.SUSPECT_PROBLEM.getCode());
@ -226,6 +236,8 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic
return fileVo;
}).toList();
one.setThingFiles(fileVos);
// 超时情况
fillCheckTimeoutInfo(one);
});
}
ComplaintCollectionPageVo complaintCollectionPageVo = new ComplaintCollectionPageVo();
@ -392,6 +404,7 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic
complaintCollectionCheckFile.setCreateTime(LocalDateTime.now());
complaintCollectionFiles.add(complaintCollectionCheckFile);
}
complaintCollectionCheckFileResourceService.delByComplaintCollectionId(request.getComplaintId());
complaintCollectionCheckFileResourceService.createComplaintCollectionCheckFile(complaintCollectionFiles);
return Result.success(true);
}
@ -552,6 +565,7 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic
}
@Override
@Transactional(rollbackFor = Exception.class)
public Result<Boolean> saveInvolveJson(ComplaintCollectionSaveInvolveJsonRequest request) {
ComplaintCollectionUpdateParam updateParam = ComplaintCollectionTransfer.INSTANCE.JsonRequestToUpdateParam(request);
updateParam.setId(request.getComplaintId());
@ -577,8 +591,43 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic
updateParam.setSecondDepartId(secondDepart.getId());
updateParam.setSecondDepartName(secondDepart.getShortName());
}
updateParam.setUpdateTime(LocalDateTime.now());
updateParam.setUpdateBy(UserContextHolder.getCurrentUser().getUserName());
updateParam.setCheckStatus(request.getCheckStatusCode());
complaintCollectionResourceService.updateSelectiveById(updateParam);
ComplaintCollectionQueryParam complaintCollectionQueryParam = new ComplaintCollectionQueryParam();
complaintCollectionQueryParam.setId(request.getComplaintId());
List<ComplaintCollection> complaintCollectionList = complaintCollectionResourceService.query(complaintCollectionQueryParam);
ComplaintCollection complaintCollection = complaintCollectionList.get(0);
// 有附件 + 有核查情况 = 初核
if (StrUtil.isBlank(complaintCollection.getGwf2()) && request.getCheckStatusCode() != null && CollectionUtil.isNotEmpty(request.getFiles())) {
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);
complaintCollectionResourceService.updateSelectiveById(complaintCollectionUpdateParam);
}
// 涉访涉诉核查办理附件
List<FileVo> files = request.getFiles();
List<ComplaintCollectionCheckFile> complaintCollectionFiles = new ArrayList<>();
for (FileVo file : files) {
ComplaintCollectionCheckFile complaintCollectionCheckFile = new ComplaintCollectionCheckFile();
complaintCollectionCheckFile.setComplaintId(request.getComplaintId());
complaintCollectionCheckFile.setCheckStatus(SfssUtil.getCheckStatusCategory(request.getCheckStatusCode()));
complaintCollectionCheckFile.setCheckStatusName(request.getCheckStatusName());
complaintCollectionCheckFile.setFileName(file.getFileName());
complaintCollectionCheckFile.setFilePath(file.getFilePath());
complaintCollectionCheckFile.setCreateBy(UserContextHolder.getCurrentUser().getUserName());
complaintCollectionCheckFile.setCreateTime(LocalDateTime.now());
complaintCollectionFiles.add(complaintCollectionCheckFile);
}
complaintCollectionCheckFileResourceService.delByComplaintCollectionId(request.getComplaintId());
complaintCollectionCheckFileResourceService.createComplaintCollectionCheckFile(complaintCollectionFiles);
return Result.success(Boolean.TRUE);
}
@ -846,7 +895,7 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic
.map(item -> {
ComplaintCollectionRepeatDTO dto = new ComplaintCollectionRepeatDTO();
BeanUtil.copyProperties(item, dto);
dto.setSourceTable(CodeTranslateUtil.translateCodesToLabels(item.getSourceTable(), sourceDict) + "()");
dto.setSourceTable(CodeTranslateUtil.translateCodesToLabels(item.getSourceTable(), sourceDict) + "()");
return dto;
})
.toList();
@ -946,4 +995,41 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic
throw new IllegalStateException("当前账号无权限操作该数据。请使用市局管理员账号登录,或确认该数据是否为本人录入。");
}
/**
* 初核情况
* 核查情况存在 + 核查附件存在 = 初核完成
* 初核未完成 + 离discoverTime 4个工作日 = 超时
* 初核完成 + (初核时间 - discoverTime)>4 = 超时初核
*
* @param dto
*/
private void fillCheckTimeoutInfo(ComplaintCollectionPageDTO dto) {
if (dto == null || StrUtil.isBlank(dto.getId())) {
return;
}
LocalDateTime discoveryTime = dto.getDiscoveryTime();
if (discoveryTime == null) {
dto.setRemainingDuration(null);
return;
}
long maxSeconds = CHECK_LIMIT_DAYS * TimeUtil.SECONDS_OF_A_DAY;
LocalDateTime initialReviewTime = null;
if (StrUtil.isNotBlank(dto.getGwf2())) {
initialReviewTime = LocalDateTime.parse(dto.getGwf2(), INITIAL_REVIEW_FMT);
}
// 1) 未初核:倒计时(discovery -> now)
if (initialReviewTime == null ) {
long remainingSeconds = TimeUtil.getRemainingDuration(discoveryTime, maxSeconds);
dto.setRemainingDuration(remainingSeconds);
}
}
}

Loading…
Cancel
Save