|
|
|
@ -27,13 +27,14 @@ import com.biutag.supervision.pojo.dto.flow.VerifyData; |
|
|
|
import com.biutag.supervision.pojo.entity.*; |
|
|
|
import com.biutag.supervision.pojo.entity.*; |
|
|
|
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionClosingStatusEnum; |
|
|
|
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionClosingStatusEnum; |
|
|
|
import com.biutag.supervision.pojo.enums.complaintCollection.ComplaintCollectionHandleMethodEnum; |
|
|
|
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.complaintCollection.ComplaintCollectionPublicApprovalEnum; |
|
|
|
import com.biutag.supervision.pojo.enums.supDict.SupDictEnum; |
|
|
|
import com.biutag.supervision.pojo.enums.supDict.SupDictEnum; |
|
|
|
import com.biutag.supervision.pojo.model.UserAuth; |
|
|
|
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.ComplaintCollectionExistParam; |
|
|
|
import com.biutag.supervision.pojo.param.ComplaintCollection.ComplaintCollectionQueryParam; |
|
|
|
import com.biutag.supervision.pojo.param.ComplaintCollection.ComplaintCollectionQueryParam; |
|
|
|
import com.biutag.supervision.pojo.param.ComplaintCollection.ComplaintCollectionUpdateParam; |
|
|
|
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.complaintCollectionBlame.ComplaintCollectionBlameQueryParam; |
|
|
|
import com.biutag.supervision.pojo.param.complaintCollectionCheckFile.ComplaintCollectionCheckFileQueryParam; |
|
|
|
import com.biutag.supervision.pojo.param.complaintCollectionCheckFile.ComplaintCollectionCheckFileQueryParam; |
|
|
|
import com.biutag.supervision.pojo.param.complaintCollectionFile.ComplaintCollectionFileQueryParam; |
|
|
|
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.service.*; |
|
|
|
import com.biutag.supervision.util.CodeTranslateUtil; |
|
|
|
import com.biutag.supervision.util.CodeTranslateUtil; |
|
|
|
import com.biutag.supervision.util.SfssUtil; |
|
|
|
import com.biutag.supervision.util.SfssUtil; |
|
|
|
|
|
|
|
import com.biutag.supervision.util.TimeUtil; |
|
|
|
import jakarta.servlet.ServletOutputStream; |
|
|
|
import jakarta.servlet.ServletOutputStream; |
|
|
|
import jakarta.servlet.http.HttpServletResponse; |
|
|
|
import jakarta.servlet.http.HttpServletResponse; |
|
|
|
import jakarta.validation.ValidationException; |
|
|
|
import jakarta.validation.ValidationException; |
|
|
|
@ -103,6 +105,9 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic |
|
|
|
private final DataCaseVerifResourceService dataCaseVerifResourceService; |
|
|
|
private final DataCaseVerifResourceService dataCaseVerifResourceService; |
|
|
|
private final NegativeProblemRelationService negativeProblemRelationService; |
|
|
|
private final NegativeProblemRelationService negativeProblemRelationService; |
|
|
|
private final MailResourceService mailResourceService; |
|
|
|
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 |
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
@ -123,6 +128,7 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic |
|
|
|
} |
|
|
|
} |
|
|
|
complaintCollection.setCreateTime(LocalDateTime.now()); |
|
|
|
complaintCollection.setCreateTime(LocalDateTime.now()); |
|
|
|
complaintCollection.setCreateBy(UserContextHolder.getCurrentUser().getUserName()); |
|
|
|
complaintCollection.setCreateBy(UserContextHolder.getCurrentUser().getUserName()); |
|
|
|
|
|
|
|
complaintCollection.setGwf3(ComplaintCollectionInitialEnum.UN_UPLOADED.getCode()); |
|
|
|
Boolean res = complaintCollectionResourceService.createComplaintCollection(Arrays.asList(complaintCollection)); |
|
|
|
Boolean res = complaintCollectionResourceService.createComplaintCollection(Arrays.asList(complaintCollection)); |
|
|
|
Assert.notNull(complaintCollection.getId(), "主表插入后未获取到ID"); |
|
|
|
Assert.notNull(complaintCollection.getId(), "主表插入后未获取到ID"); |
|
|
|
saveThingFilesOrThrow(complaintCollection.getId(), request.getThingFiles()); |
|
|
|
saveThingFilesOrThrow(complaintCollection.getId(), request.getThingFiles()); |
|
|
|
@ -190,6 +196,9 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public Result<ComplaintCollectionPageVo> getComplaintCollectionPage(ComplaintCollectionPageRequest request) { |
|
|
|
public Result<ComplaintCollectionPageVo> getComplaintCollectionPage(ComplaintCollectionPageRequest request) { |
|
|
|
ComplaintCollectionQueryParam param = ComplaintCollectionTransfer.INSTANCE.pageRequestToPageParam(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(); |
|
|
|
UserAuth user = UserContextHolder.getCurrentUser(); |
|
|
|
if (!AppConstants.USER_TYPE_SUPER.equals(user.getUserType()) && (user.getRoleCodes().isEmpty() || user.getAuthSources().isEmpty() || user.getAuthDepartIds().isEmpty())) { |
|
|
|
if (!AppConstants.USER_TYPE_SUPER.equals(user.getUserType()) && (user.getRoleCodes().isEmpty() || user.getAuthSources().isEmpty() || user.getAuthDepartIds().isEmpty())) { |
|
|
|
return Result.success(ComplaintCollectionPageVo.noAuthVo()); |
|
|
|
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()); |
|
|
|
Set<String> ids = complaintCollectionPageDTOS.stream().map(ComplaintCollectionPageDTO::getId).collect(Collectors.toSet()); |
|
|
|
ComplaintCollectionFileQueryParam complaintCollectionFileQueryParam = new ComplaintCollectionFileQueryParam(); |
|
|
|
ComplaintCollectionFileQueryParam complaintCollectionFileQueryParam = new ComplaintCollectionFileQueryParam(); |
|
|
|
complaintCollectionFileQueryParam.setComplaintIds(ids); |
|
|
|
complaintCollectionFileQueryParam.setComplaintIds(ids); |
|
|
|
|
|
|
|
// 附件
|
|
|
|
Map<String, List<ComplaintCollectionFile>> complaintCollectionFileMap = complaintCollectionFileResourceService.queryGroupBy(complaintCollectionFileQueryParam, ComplaintCollectionFile::getComplaintId); |
|
|
|
Map<String, List<ComplaintCollectionFile>> complaintCollectionFileMap = complaintCollectionFileResourceService.queryGroupBy(complaintCollectionFileQueryParam, ComplaintCollectionFile::getComplaintId); |
|
|
|
if (CollectionUtil.isNotEmpty(complaintCollectionPageDTOS)) { |
|
|
|
if (CollectionUtil.isNotEmpty(complaintCollectionPageDTOS)) { |
|
|
|
Map<String, String> dictLabelMap = buildDictLabelMap(SupDictEnum.SUSPECT_PROBLEM.getCode()); |
|
|
|
Map<String, String> dictLabelMap = buildDictLabelMap(SupDictEnum.SUSPECT_PROBLEM.getCode()); |
|
|
|
@ -226,6 +236,8 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic |
|
|
|
return fileVo; |
|
|
|
return fileVo; |
|
|
|
}).toList(); |
|
|
|
}).toList(); |
|
|
|
one.setThingFiles(fileVos); |
|
|
|
one.setThingFiles(fileVos); |
|
|
|
|
|
|
|
// 超时情况
|
|
|
|
|
|
|
|
fillCheckTimeoutInfo(one); |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
ComplaintCollectionPageVo complaintCollectionPageVo = new ComplaintCollectionPageVo(); |
|
|
|
ComplaintCollectionPageVo complaintCollectionPageVo = new ComplaintCollectionPageVo(); |
|
|
|
@ -392,6 +404,7 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic |
|
|
|
complaintCollectionCheckFile.setCreateTime(LocalDateTime.now()); |
|
|
|
complaintCollectionCheckFile.setCreateTime(LocalDateTime.now()); |
|
|
|
complaintCollectionFiles.add(complaintCollectionCheckFile); |
|
|
|
complaintCollectionFiles.add(complaintCollectionCheckFile); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
complaintCollectionCheckFileResourceService.delByComplaintCollectionId(request.getComplaintId()); |
|
|
|
complaintCollectionCheckFileResourceService.createComplaintCollectionCheckFile(complaintCollectionFiles); |
|
|
|
complaintCollectionCheckFileResourceService.createComplaintCollectionCheckFile(complaintCollectionFiles); |
|
|
|
return Result.success(true); |
|
|
|
return Result.success(true); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -552,6 +565,7 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public Result<Boolean> saveInvolveJson(ComplaintCollectionSaveInvolveJsonRequest request) { |
|
|
|
public Result<Boolean> saveInvolveJson(ComplaintCollectionSaveInvolveJsonRequest request) { |
|
|
|
ComplaintCollectionUpdateParam updateParam = ComplaintCollectionTransfer.INSTANCE.JsonRequestToUpdateParam(request); |
|
|
|
ComplaintCollectionUpdateParam updateParam = ComplaintCollectionTransfer.INSTANCE.JsonRequestToUpdateParam(request); |
|
|
|
updateParam.setId(request.getComplaintId()); |
|
|
|
updateParam.setId(request.getComplaintId()); |
|
|
|
@ -577,8 +591,43 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic |
|
|
|
updateParam.setSecondDepartId(secondDepart.getId()); |
|
|
|
updateParam.setSecondDepartId(secondDepart.getId()); |
|
|
|
updateParam.setSecondDepartName(secondDepart.getShortName()); |
|
|
|
updateParam.setSecondDepartName(secondDepart.getShortName()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
updateParam.setUpdateTime(LocalDateTime.now()); |
|
|
|
|
|
|
|
updateParam.setUpdateBy(UserContextHolder.getCurrentUser().getUserName()); |
|
|
|
updateParam.setCheckStatus(request.getCheckStatusCode()); |
|
|
|
updateParam.setCheckStatus(request.getCheckStatusCode()); |
|
|
|
complaintCollectionResourceService.updateSelectiveById(updateParam); |
|
|
|
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); |
|
|
|
return Result.success(Boolean.TRUE); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -846,7 +895,7 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic |
|
|
|
.map(item -> { |
|
|
|
.map(item -> { |
|
|
|
ComplaintCollectionRepeatDTO dto = new ComplaintCollectionRepeatDTO(); |
|
|
|
ComplaintCollectionRepeatDTO dto = new ComplaintCollectionRepeatDTO(); |
|
|
|
BeanUtil.copyProperties(item, dto); |
|
|
|
BeanUtil.copyProperties(item, dto); |
|
|
|
dto.setSourceTable(CodeTranslateUtil.translateCodesToLabels(item.getSourceTable(), sourceDict) + "(涉)"); |
|
|
|
dto.setSourceTable(CodeTranslateUtil.translateCodesToLabels(item.getSourceTable(), sourceDict) + "(投)"); |
|
|
|
return dto; |
|
|
|
return dto; |
|
|
|
}) |
|
|
|
}) |
|
|
|
.toList(); |
|
|
|
.toList(); |
|
|
|
@ -946,4 +995,41 @@ public class ComplaintCollectionServiceImpl implements ComplaintCollectionServic |
|
|
|
throw new IllegalStateException("当前账号无权限操作该数据。请使用市局管理员账号登录,或确认该数据是否为本人录入。"); |
|
|
|
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); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|