From a6c76f152503c344619726aa5bfb6a99efa5caca Mon Sep 17 00:00:00 2001 From: wxc <191104855@qq.com> Date: Wed, 23 Oct 2024 19:22:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E4=BF=A1=E8=AE=BF?= =?UTF-8?q?=E6=8A=95=E8=AF=89=E3=80=81=E6=A1=88=E4=BB=B6=E6=A0=B8=E6=9F=A5?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=20fit:=20=E9=97=AE=E9=A2=98=E4=B8=8B?= =?UTF-8?q?=E5=8F=91=E6=B5=81=E7=A8=8BBUG=E4=BF=AE=E5=A4=8D=20fit:=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=97=AE=E9=A2=98=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constants/enums/InitialPetition.java | 15 ++++++ .../controller/AuthController.java | 3 ++ .../data/DataCaseVerifController.java | 40 +++++++++++++- .../data/DataPetitionComplaintController.java | 49 +++++++++++++++++- .../controller/system/DepartController.java | 2 +- .../controller/work/NegativeController.java | 6 ++- .../flow/action/ApplyCompletionAction.java | 8 +-- .../flow/action/FirstApproveReturnAction.java | 13 +++-- .../supervision/flow/action/SaveAction.java | 8 +++ .../action/SecondApproveReturnAction.java | 13 +++-- .../biutag/supervision/pojo/domain/Blame.java | 2 + .../pojo/dto/DataCaseVerifImportDto.java | 17 +++++- .../dto/DataPetitionComplaintImportDto.java | 38 +++++++++++--- .../supervision/pojo/dto/flow/VerifyData.java | 4 ++ .../pojo/entity/NegativeBlame.java | 3 ++ .../pojo/model/NegativeWorkModel.java | 3 ++ .../service/NegativeFileService.java | 15 ++++++ .../supervision/service/NegativeService.java | 25 ++++++++- .../supervision/service/SupDepartService.java | 19 +++++++ .../resources/mapper/NegativeWorkMapper.xml | 2 +- .../信访投诉数据台账(模板).xlsx | Bin 10632 -> 10602 bytes .../案件核查问题台账(模板).xlsx | Bin 14156 -> 14335 bytes 22 files changed, 257 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/biutag/supervision/constants/enums/InitialPetition.java b/src/main/java/com/biutag/supervision/constants/enums/InitialPetition.java index e958976..8de6cca 100644 --- a/src/main/java/com/biutag/supervision/constants/enums/InitialPetition.java +++ b/src/main/java/com/biutag/supervision/constants/enums/InitialPetition.java @@ -20,4 +20,19 @@ public enum InitialPetition { public String label; + public static String getValue(String str) { + if ("初".equals(str)) { + return THE_FIRST.getValue(); + } + if ("重".equals(str)) { + return REPEAT.getValue(); + } + for (InitialPetition value : values()) { + if (value.getLabel().equals(str)) { + return value.getValue(); + } + } + return null; + } + } \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/controller/AuthController.java b/src/main/java/com/biutag/supervision/controller/AuthController.java index 55b570b..695e60b 100644 --- a/src/main/java/com/biutag/supervision/controller/AuthController.java +++ b/src/main/java/com/biutag/supervision/controller/AuthController.java @@ -67,6 +67,9 @@ public class AuthController { redisTemplate.opsForValue().set(String.format(RedisKeyConstants.LOGIN_USERINFO_KEY, authorization), user, 24, TimeUnit.HOURS); } } + if (Objects.isNull(user)) { + throw new AuthException(); + } boolean superFlag = AppConstants.USER_TYPE_SUPER.equals(user.getUserType()); List menus = superFlag ? menuService.listAll() : menuService.listMenuByCurrentUser(); List perms = superFlag ? List.of("*") : menuService.listPermsByCurrentUser(); diff --git a/src/main/java/com/biutag/supervision/controller/data/DataCaseVerifController.java b/src/main/java/com/biutag/supervision/controller/data/DataCaseVerifController.java index 3821bbc..0d05d9c 100644 --- a/src/main/java/com/biutag/supervision/controller/data/DataCaseVerifController.java +++ b/src/main/java/com/biutag/supervision/controller/data/DataCaseVerifController.java @@ -1,17 +1,25 @@ package com.biutag.supervision.controller.data; import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelReader; import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.exception.ExcelDataConvertException; import com.alibaba.excel.read.listener.ReadListener; import com.alibaba.excel.read.metadata.ReadSheet; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.biutag.supervision.constants.enums.DepartLevelEnum; import com.biutag.supervision.pojo.Result; import com.biutag.supervision.pojo.dto.DataCaseVerifImportDto; import com.biutag.supervision.pojo.entity.DataCaseVerif; +import com.biutag.supervision.pojo.entity.SupDepart; import com.biutag.supervision.pojo.param.DataCaseVerifQueryParam; import com.biutag.supervision.service.DataCaseVerifService; +import com.biutag.supervision.service.SupDepartService; +import jakarta.validation.ConstraintViolation; +import jakarta.validation.Validator; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; @@ -20,6 +28,8 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; @Slf4j @RequestMapping("data/caseVerif") @@ -29,6 +39,10 @@ public class DataCaseVerifController { private final DataCaseVerifService dataCaseVerifService; + private final SupDepartService departService; + + private final Validator validator; + @GetMapping public Result> list(DataCaseVerifQueryParam queryParam) { return Result.success(dataCaseVerifService.page(queryParam)); @@ -42,9 +56,28 @@ public class DataCaseVerifController { throw new RuntimeException("仅支持 xls/xlsx 格式文件的导入"); } List list = new ArrayList<>(); + List secondDeparts = departService.listByLevel(List.of(DepartLevelEnum.SECOND.getValue())); ExcelReader excelReader = EasyExcel.read(file.getInputStream(), DataCaseVerifImportDto.class, new ReadListener() { @Override public void invoke(DataCaseVerifImportDto data, AnalysisContext analysisContext) { + String secondDepartId = secondDeparts.stream() + .filter(item -> item.getShortName().equals(data.getComplainedSecondDepartName())).findFirst() + .map(SupDepart::getId).orElse(""); + data.setComplainedSecondDepartId(secondDepartId); + if (StrUtil.isNotBlank(secondDepartId)) { + String complainedThirdDepartId = departService.list(new LambdaQueryWrapper().eq(SupDepart::getPid, secondDepartId) + .like(SupDepart::getShortName, data.getComplainedThirdDepartName())) + .stream().findFirst().map(SupDepart::getId).orElse(""); + data.setComplainedThirdDepartId(complainedThirdDepartId); + } + Set> validate = validator.validate(data); + if (!validate.isEmpty()) { + String message = validate.stream().map(ConstraintViolation::getMessage).collect(Collectors.joining("\n")); + data.setErrMsg(message); + data.setState("fail"); + } else { + data.setState("success"); + } list.add(data); } @@ -54,7 +87,12 @@ public class DataCaseVerifController { } }).build(); ReadSheet sheet = EasyExcel.readSheet(0).build(); - excelReader.read(sheet); + try { + excelReader.read(sheet); + } catch (ExcelDataConvertException e) { + log.error(e.getMessage(), e); + throw new RuntimeException("日期格式错误"); + } excelReader.close(); return Result.success(list); } diff --git a/src/main/java/com/biutag/supervision/controller/data/DataPetitionComplaintController.java b/src/main/java/com/biutag/supervision/controller/data/DataPetitionComplaintController.java index 10e1848..83e049b 100644 --- a/src/main/java/com/biutag/supervision/controller/data/DataPetitionComplaintController.java +++ b/src/main/java/com/biutag/supervision/controller/data/DataPetitionComplaintController.java @@ -1,18 +1,26 @@ package com.biutag.supervision.controller.data; import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelReader; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.read.listener.ReadListener; import com.alibaba.excel.read.metadata.ReadSheet; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.biutag.supervision.constants.enums.DepartLevelEnum; +import com.biutag.supervision.constants.enums.InitialPetition; import com.biutag.supervision.pojo.Result; import com.biutag.supervision.pojo.dto.DataPetitionComplaintAddDto; import com.biutag.supervision.pojo.dto.DataPetitionComplaintImportDto; import com.biutag.supervision.pojo.entity.DataPetitionComplaint; +import com.biutag.supervision.pojo.entity.SupDepart; import com.biutag.supervision.pojo.param.DataPetitionComplaintQueryParam; import com.biutag.supervision.service.DataPetitionComplaintService; +import com.biutag.supervision.service.SupDepartService; +import jakarta.validation.ConstraintViolation; +import jakarta.validation.Validator; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; @@ -21,6 +29,8 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; /** * @@ -35,6 +45,10 @@ public class DataPetitionComplaintController { private final DataPetitionComplaintService dataPetitionComplaintService; + private final SupDepartService departService; + + private final Validator validator; + @GetMapping public Result> list(DataPetitionComplaintQueryParam queryParam) { return Result.success(dataPetitionComplaintService.page(queryParam)); @@ -47,16 +61,49 @@ public class DataPetitionComplaintController { if (!"xls".equals(fileNameType) && !"xlsx".equals(fileNameType)) { throw new RuntimeException("仅支持 xls/xlsx 格式文件的导入"); } + List secondDeparts = departService.listByLevel(List.of(DepartLevelEnum.SECOND.getValue())); + List list = new ArrayList<>(); ExcelReader excelReader = EasyExcel.read(file.getInputStream(), DataPetitionComplaintImportDto.class, new ReadListener() { @Override public void invoke(DataPetitionComplaintImportDto data, AnalysisContext analysisContext) { + if ("是".equals(data.getEntanglementVisitsLabel())) { + data.setEntanglementVisits(true); + } + if ("否".equals(data.getEntanglementVisitsLabel())) { + data.setEntanglementVisits(false); + } + if ("是".equals(data.getMassVisitsLabel())) { + data.setMassVisits(true); + } + if ("否".equals(data.getMassVisitsLabel())) { + data.setMassVisits(false); + } + data.setInitialPetition(InitialPetition.getValue(data.getInitialPetition())); + + String secondDepartId = secondDeparts.stream() + .filter(item -> item.getShortName().equals(data.getComplainedSecondDepartName())).findFirst() + .map(SupDepart::getId).orElse(""); + data.setComplainedSecondDepartId(secondDepartId); + if (StrUtil.isNotBlank(secondDepartId)) { + String complainedThirdDepartId = departService.list(new LambdaQueryWrapper().eq(SupDepart::getPid, secondDepartId) + .like(SupDepart::getShortName, data.getComplainedThirdDepartName())) + .stream().findFirst().map(SupDepart::getId).orElse(""); + data.setComplainedThirdDepartId(complainedThirdDepartId); + } + Set> validate = validator.validate(data); + if (!validate.isEmpty()) { + String message = validate.stream().map(ConstraintViolation::getMessage).collect(Collectors.joining("\n")); + data.setErrMsg(message); + data.setState("fail"); + } else { + data.setState("success"); + } list.add(data); } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { - } }).build(); ReadSheet sheet = EasyExcel.readSheet(0).build(); diff --git a/src/main/java/com/biutag/supervision/controller/system/DepartController.java b/src/main/java/com/biutag/supervision/controller/system/DepartController.java index e600aaf..0f1376d 100644 --- a/src/main/java/com/biutag/supervision/controller/system/DepartController.java +++ b/src/main/java/com/biutag/supervision/controller/system/DepartController.java @@ -84,7 +84,7 @@ public class DepartController { @GetMapping("second") public Result> seconds() { List supDeparts = departService.listByLevel(List.of(DepartLevelEnum.SECOND_CATEGORY.getValue(), DepartLevelEnum.SECOND.getValue())); - return Result.success(departService.buildTree(supDeparts)); + return Result.success(departService.buildTreeBySecond(supDeparts)); } @GetMapping("firstHost") diff --git a/src/main/java/com/biutag/supervision/controller/work/NegativeController.java b/src/main/java/com/biutag/supervision/controller/work/NegativeController.java index 4b9a703..eda9da7 100644 --- a/src/main/java/com/biutag/supervision/controller/work/NegativeController.java +++ b/src/main/java/com/biutag/supervision/controller/work/NegativeController.java @@ -29,7 +29,6 @@ public class NegativeController { private final NegativeTaskService negativeTaskService; - @GetMapping public Result> list(NegativeQueryParam queryParam) { return Result.success(negativeQueryService.page(queryParam)); @@ -61,4 +60,9 @@ public class NegativeController { return Result.success(); } + @DeleteMapping("{id}") + public Result remove(@PathVariable String id) { + return Result.success(negativeService.remove(id)); + } + } diff --git a/src/main/java/com/biutag/supervision/flow/action/ApplyCompletionAction.java b/src/main/java/com/biutag/supervision/flow/action/ApplyCompletionAction.java index fae62d4..daf0866 100644 --- a/src/main/java/com/biutag/supervision/flow/action/ApplyCompletionAction.java +++ b/src/main/java/com/biutag/supervision/flow/action/ApplyCompletionAction.java @@ -114,16 +114,10 @@ public class ApplyCompletionAction implements Action { } } if (!verifyData.getFiles().isEmpty()) { - List files = verifyData.getFiles().stream().map(item -> { - NegativeFile file = new NegativeFile(); - BeanUtil.copyProperties(item, file); - file.setNegtiveId(negativeId); - return file; - }).toList(); // 先删除 fileService.remove(negativeId); // 新增 - fileService.saveBatch(files); + fileService.saveBatch(verifyData.getFiles(), negativeId); } aproveService.remove(negativeId); diff --git a/src/main/java/com/biutag/supervision/flow/action/FirstApproveReturnAction.java b/src/main/java/com/biutag/supervision/flow/action/FirstApproveReturnAction.java index 0663c010..6e4b102 100644 --- a/src/main/java/com/biutag/supervision/flow/action/FirstApproveReturnAction.java +++ b/src/main/java/com/biutag/supervision/flow/action/FirstApproveReturnAction.java @@ -18,6 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import java.time.LocalDateTime; +import java.util.List; /** * 市局 退回整改 @@ -74,11 +75,15 @@ public class FirstApproveReturnAction implements Action { } public void addWork(String negativeId, String roleCode) { - NegativeWork work = workService.getOne(new LambdaQueryWrapper() + List works = workService.list(new LambdaQueryWrapper() .eq(NegativeWork::getNegativeId, negativeId) - .eq(NegativeWork::getRoleCode, roleCode)); - work.setUpdateTime(LocalDateTime.now()) + .eq(NegativeWork::getRoleCode, roleCode) + .orderByDesc(NegativeWork::getCreateTime)); + if (works.isEmpty()) { + throw new RuntimeException("数据异常,请联系管理员:无二级机构工作流程数据"); + } + works.get(0).setUpdateTime(LocalDateTime.now()) .setStatus(WorkStatusEnum.todo.name()); - workService.updateById(work); + workService.updateById(works.get(0)); } } diff --git a/src/main/java/com/biutag/supervision/flow/action/SaveAction.java b/src/main/java/com/biutag/supervision/flow/action/SaveAction.java index aae0e83..a5a9b2d 100644 --- a/src/main/java/com/biutag/supervision/flow/action/SaveAction.java +++ b/src/main/java/com/biutag/supervision/flow/action/SaveAction.java @@ -10,8 +10,11 @@ import com.biutag.supervision.pojo.dto.ActionDto; import com.biutag.supervision.pojo.dto.flow.VerifyData; import com.biutag.supervision.pojo.entity.Negative; import com.biutag.supervision.pojo.entity.NegativeBlame; +import com.biutag.supervision.pojo.entity.NegativeFile; import com.biutag.supervision.pojo.entity.NegativeProblemRelation; +import com.biutag.supervision.pojo.vo.FileVo; import com.biutag.supervision.service.NegativeBlameService; +import com.biutag.supervision.service.NegativeFileService; import com.biutag.supervision.service.NegativeProblemRelationService; import com.biutag.supervision.service.NegativeService; import lombok.RequiredArgsConstructor; @@ -33,6 +36,8 @@ public class SaveAction implements Action { private final NegativeProblemRelationService negativeProblemRelationService; + private final NegativeFileService fileService; + @Override public void next(ActionDto actionDto) { VerifyData verifyData = BeanUtil.toBean(actionDto.getData(), VerifyData.class); @@ -43,6 +48,7 @@ public class SaveAction implements Action { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper() .set(Negative::getUpdTime, LocalDateTime.now()) .set(Negative::getProcessingStatus, ProcessingStatusEnum.approval.name()) + .set(Negative::getCheckStatusDesc, verifyData.getCheckStatusDesc()) .eq(Negative::getId, negativeId); updateWrapper.set(Negative::getCheckStatus, verifyData.getCheckStatus()) .set(Negative::getCheckStatusName, verifyData.getCheckStatusName()); @@ -86,6 +92,8 @@ public class SaveAction implements Action { negativeProblemRelationService.saveBatch(problemRelations); } } + fileService.remove(negativeId); + fileService.saveBatch(verifyData.getFiles(), negativeId); } } diff --git a/src/main/java/com/biutag/supervision/flow/action/SecondApproveReturnAction.java b/src/main/java/com/biutag/supervision/flow/action/SecondApproveReturnAction.java index 7958156..cd7afeb 100644 --- a/src/main/java/com/biutag/supervision/flow/action/SecondApproveReturnAction.java +++ b/src/main/java/com/biutag/supervision/flow/action/SecondApproveReturnAction.java @@ -19,6 +19,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import java.time.LocalDateTime; +import java.util.List; /** * 二级机构 退回整改 @@ -76,10 +77,16 @@ public class SecondApproveReturnAction implements Action { } public void addWork(String negativeId, String roleCode) { - NegativeWork work = workService.getOne(new LambdaQueryWrapper().eq(NegativeWork::getNegativeId, negativeId).eq(NegativeWork::getRoleCode, roleCode)); - work.setUpdateTime(LocalDateTime.now()) + List works = workService.list(new LambdaQueryWrapper() + .eq(NegativeWork::getNegativeId, negativeId) + .eq(NegativeWork::getRoleCode, roleCode) + .orderByDesc(NegativeWork::getCreateTime)); + if (works.isEmpty()) { + throw new RuntimeException("数据异常,请联系管理员:无三级机构工作流程数据"); + } + works.get(0).setUpdateTime(LocalDateTime.now()) .setStatus(WorkStatusEnum.todo.name()); - workService.updateById(work); + workService.updateById(works.get(0)); } } diff --git a/src/main/java/com/biutag/supervision/pojo/domain/Blame.java b/src/main/java/com/biutag/supervision/pojo/domain/Blame.java index ebc208d..a2e6f96 100644 --- a/src/main/java/com/biutag/supervision/pojo/domain/Blame.java +++ b/src/main/java/com/biutag/supervision/pojo/domain/Blame.java @@ -115,6 +115,8 @@ public class Blame { // 责任领导 private String leadName; + private String leadEmpNo; + // 责任领导身份证 private String leadIdCode; diff --git a/src/main/java/com/biutag/supervision/pojo/dto/DataCaseVerifImportDto.java b/src/main/java/com/biutag/supervision/pojo/dto/DataCaseVerifImportDto.java index 9a6bb6a..f8d6941 100644 --- a/src/main/java/com/biutag/supervision/pojo/dto/DataCaseVerifImportDto.java +++ b/src/main/java/com/biutag/supervision/pojo/dto/DataCaseVerifImportDto.java @@ -3,6 +3,7 @@ package com.biutag.supervision.pojo.dto; import com.alibaba.excel.annotation.ExcelProperty; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; import lombok.Getter; import lombok.Setter; @@ -48,12 +49,24 @@ public class DataCaseVerifImportDto { private String policeTypeName; // 被投诉机构 - @ExcelProperty({"问题基本信息", "涉及单位"}) - private String complainedDepartName; + @ExcelProperty({"问题基本信息", "涉及单位(二级机构)"}) + private String complainedSecondDepartName; + // 被投诉机构 + @ExcelProperty({"问题基本信息", "涉及单位(三级机构)"}) + private String complainedThirdDepartName; + + @NotBlank(message = "涉及二级机构为空或与系统未匹配上") + private String complainedSecondDepartId; + + private String complainedThirdDepartId; // 具体内容 @ExcelProperty({"问题基本信息", "具体内容"}) + @NotBlank(message = "具体内容为空") private String thingDesc; + private String state; + + private String errMsg; } \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/pojo/dto/DataPetitionComplaintImportDto.java b/src/main/java/com/biutag/supervision/pojo/dto/DataPetitionComplaintImportDto.java index e2aaf2b..e9d5bcb 100644 --- a/src/main/java/com/biutag/supervision/pojo/dto/DataPetitionComplaintImportDto.java +++ b/src/main/java/com/biutag/supervision/pojo/dto/DataPetitionComplaintImportDto.java @@ -1,8 +1,10 @@ package com.biutag.supervision.pojo.dto; import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; import lombok.Getter; import lombok.Setter; @@ -27,8 +29,7 @@ public class DataPetitionComplaintImportDto { // 登记时间 @ExcelProperty({"信访基本信息", "登记时间"}) - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm") - private LocalDateTime discoveryTime; + private String discoveryTime; // 投诉人 @ExcelProperty({"信访基本信息", "投诉人"}) @@ -40,26 +41,51 @@ public class DataPetitionComplaintImportDto { // 初重信访 @ExcelProperty({"信访基本信息", "初重信访"}) + @NotBlank(message = "初重信访为空或值描述不准确") private String initialPetition; // 缠访闹访 @ExcelProperty({"信访基本信息", "缠访闹访"}) - private String entanglementVisits; + private String entanglementVisitsLabel; + + private Boolean entanglementVisits; // 群众集访 @ExcelProperty({"信访基本信息", "群众集访"}) - private String massVisits; + private String massVisitsLabel; + + private Boolean massVisits; + + // 涉嫌问题 + @ExcelProperty({"信访基本信息", "涉嫌问题"}) + private String involveProblem; + + // 业务类别 + @ExcelProperty({"信访基本信息", "业务类别"}) + private String businessTypeName; // 被投诉机构 - @ExcelProperty({"信访基本信息", "被投诉机构"}) + @ExcelProperty({"信访基本信息", "被投诉二级机构"}) private String complainedSecondDepartName; - @ExcelProperty({"信访基本信息", "被投诉机构"}) + @NotBlank(message = "被投诉二级机构为空或与系统未匹配上") + private String complainedSecondDepartId; + + // + @ExcelProperty({"信访基本信息", "被投诉所队"}) private String complainedThirdDepartName; + private String complainedThirdDepartId; + + private String complainedDepartId; + // 具体内容 @ExcelProperty({"信访基本信息", "具体内容"}) + @NotBlank(message = "具体内容为空") private String thingDesc; + private String state; + + private String errMsg; } \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/pojo/dto/flow/VerifyData.java b/src/main/java/com/biutag/supervision/pojo/dto/flow/VerifyData.java index 7f25987..9abac1a 100644 --- a/src/main/java/com/biutag/supervision/pojo/dto/flow/VerifyData.java +++ b/src/main/java/com/biutag/supervision/pojo/dto/flow/VerifyData.java @@ -143,6 +143,10 @@ public class VerifyData { @NotBlank private String leadName; + // 责任领导警号 + @NotBlank + private String leadEmpNo; + // 责任领导身份证 @NotBlank private String leadIdCode; diff --git a/src/main/java/com/biutag/supervision/pojo/entity/NegativeBlame.java b/src/main/java/com/biutag/supervision/pojo/entity/NegativeBlame.java index 421115d..6106e46 100644 --- a/src/main/java/com/biutag/supervision/pojo/entity/NegativeBlame.java +++ b/src/main/java/com/biutag/supervision/pojo/entity/NegativeBlame.java @@ -149,6 +149,9 @@ public class NegativeBlame { @TableField("leadName") private String leadName; + // 领导警号 + private String leadEmpNo; + // 责任领导身份证 @TableField("leadIdCode") private String leadIdCode; diff --git a/src/main/java/com/biutag/supervision/pojo/model/NegativeWorkModel.java b/src/main/java/com/biutag/supervision/pojo/model/NegativeWorkModel.java index 8764bf9..d61117f 100644 --- a/src/main/java/com/biutag/supervision/pojo/model/NegativeWorkModel.java +++ b/src/main/java/com/biutag/supervision/pojo/model/NegativeWorkModel.java @@ -84,4 +84,7 @@ public class NegativeWorkModel { private String handleThreeDepartName; + // 涉嫌问题 + private String involveProblem; + } diff --git a/src/main/java/com/biutag/supervision/service/NegativeFileService.java b/src/main/java/com/biutag/supervision/service/NegativeFileService.java index 341c8a8..665ef40 100644 --- a/src/main/java/com/biutag/supervision/service/NegativeFileService.java +++ b/src/main/java/com/biutag/supervision/service/NegativeFileService.java @@ -1,9 +1,11 @@ package com.biutag.supervision.service; +import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.biutag.supervision.pojo.entity.NegativeFile; import com.biutag.supervision.mapper.NegativeFileMapper; +import com.biutag.supervision.pojo.vo.FileVo; import org.springframework.stereotype.Service; import java.util.List; @@ -19,4 +21,17 @@ public class NegativeFileService extends ServiceImpl().eq(NegativeFile::getNegtiveId, negativeId)); } + public boolean saveBatch(List fileVos, String negativeId) { + if (fileVos.isEmpty()) { + return false; + } + List files = fileVos.stream().map(item -> { + NegativeFile file = new NegativeFile(); + BeanUtil.copyProperties(item, file); + file.setNegtiveId(negativeId); + return file; + }).toList(); + return saveBatch(files); + } + } diff --git a/src/main/java/com/biutag/supervision/service/NegativeService.java b/src/main/java/com/biutag/supervision/service/NegativeService.java index e202436..eb0bda2 100644 --- a/src/main/java/com/biutag/supervision/service/NegativeService.java +++ b/src/main/java/com/biutag/supervision/service/NegativeService.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.biutag.supervision.constants.AppConstants; @@ -24,7 +25,6 @@ import com.biutag.supervision.pojo.entity.*; import com.biutag.supervision.util.JSON; import com.biutag.supervision.util.SpringUtil; import com.biutag.supervision.util.TimeUtil; -import jakarta.validation.ValidationException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -259,4 +259,27 @@ public class NegativeService extends ServiceImpl { return originId; } + @Transactional(rollbackFor = Exception.class) + public boolean remove(String id) { + removeById(id); + negativeHistoryService.removeById(id); + // 工作表 + workService.remove(new LambdaQueryWrapper().eq(NegativeWork::getNegativeId, id)); + // 收藏表 + favService.remove(new LambdaQueryWrapper().eq(NegativeFav::getNegativeId, id)); + // 事件详情描述表 + thingFileService.remove(new LambdaQueryWrapper().eq(NegativeThingFile::getNegativeId, id)); + // 涉及人员 + blameService.remove(id); + // 核查附件 + fileService.remove(new LambdaQueryWrapper().eq(NegativeFile::getNegtiveId, id)); + // 签收退回 + signReturnService.remove(new LambdaQueryWrapper().eq(NegativeSignReturn::getNegativeId, id)); + // 申请延期 + extensionApplyService.remove(new LambdaQueryWrapper().eq(NegativeExtensionApply::getNegativeId, id)); + // 审批 + approveService.remove(new LambdaQueryWrapper().eq(NegativeApprove::getNegativeId, id)); + return true; + } + } \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/service/SupDepartService.java b/src/main/java/com/biutag/supervision/service/SupDepartService.java index b8c5d84..d7d307d 100644 --- a/src/main/java/com/biutag/supervision/service/SupDepartService.java +++ b/src/main/java/com/biutag/supervision/service/SupDepartService.java @@ -109,6 +109,25 @@ public class SupDepartService extends ServiceImpl { List departs = listByEnabled(); return buildTree(departs); } + + public List buildTreeBySecond(List departs) { + Map> childMap = new HashMap<>(); + List tree = new ArrayList<>(); + for (SupDepart depart : departs) { + DepartTree node = new DepartTree(); + BeanUtils.copyProperties(depart, node); + List children = childMap.computeIfAbsent(node.getPid(), k -> new ArrayList<>()); + children.add(node); + if (AppConstants.ROOT_DEPART_ID.equals(node.getPid())) { + tree.add(node); + } + } + for (DepartTree node : tree) { + buildTreeRecursive(node, childMap); + } + return tree; + } + public List buildTree(List departs) { Map> childMap = new HashMap<>(); List tree = new ArrayList<>(); diff --git a/src/main/resources/mapper/NegativeWorkMapper.xml b/src/main/resources/mapper/NegativeWorkMapper.xml index 1125f8a..99e667f 100644 --- a/src/main/resources/mapper/NegativeWorkMapper.xml +++ b/src/main/resources/mapper/NegativeWorkMapper.xml @@ -8,7 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select w.id, w.negative_id, w.depart_id work_depart_id, n.originId, n.happenTime, n.discoveryTime, n.problemSources, n.thingDesc, n.contactPhone, n.responderName, n.businessTypeCode, n.businessTypeName, n.policeTypeName, n.policeType, n.involveDepartName, n.involveDepartId, n.processing_status, n.flow_key, n.first_distribute_time, n.max_sign_duration, n.max_handle_duration, n.extension_days, - n.handle_second_depart_id, n.handle_second_depart_name, n.handle_three_depart_id, n.handle_three_depart_name + n.handle_second_depart_id, n.handle_second_depart_name, n.handle_three_depart_id, n.handle_three_depart_name, n.involveProblem from negative_work w left join negative n on w.negative_id = n.id ${ew.getCustomSqlSegment} diff --git a/src/main/resources/static/templates/信访投诉数据台账(模板).xlsx b/src/main/resources/static/templates/信访投诉数据台账(模板).xlsx index a92c6876c69ad11854143ad05bc5bfb3ebb8cddf..56008b106616532bc7ecb7d95e04bac03bff6e2e 100644 GIT binary patch delta 4331 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 diff --git a/src/main/resources/static/templates/案件核查问题台账(模板).xlsx b/src/main/resources/static/templates/案件核查问题台账(模板).xlsx index a65f8501c83661248af0ec51786313fef8b71e02..ea83085cb926148e5b10a0fb5111faef6f8d98ee 100644 GIT binary patch delta 7806 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