diff --git a/sql/prison_dict_data.sql b/sql/prison_dict_data.sql index ee1473fd34..bbddd91359 100644 --- a/sql/prison_dict_data.sql +++ b/sql/prison_dict_data.sql @@ -152,6 +152,15 @@ VALUES (201909, 9, '劳动监区', '9', 'primary', '', 'prison_area_type', '0', '劳动改造监区', 'admin', NOW(), 'admin', NOW(), 0), (201910, 10, '教育监区', '10', 'success', '', 'prison_area_type', '0', '教育改造监区', 'admin', NOW(), 'admin', NOW(), 0); +-- 12.1 监区级别 (prison_area_level) +INSERT IGNORE INTO system_dict_type (id, name, type, status, remark, creator, create_time, updater, update_time, deleted) +VALUES (2022, '监区级别', 'prison_area_level', '0', '监区级别', 'admin', NOW(), 'admin', NOW(), 0); + +INSERT IGNORE INTO system_dict_data (id, sort, label, value, color_type, css_class, dict_type, status, remark, creator, create_time, updater, update_time, deleted) +VALUES +(202201, 1, '监区(大队)', '1', 'primary', '', 'prison_area_level', '0', '一级监区(大队)', 'admin', NOW(), 'admin', NOW(), 0), +(202202, 2, '分监区(中队)', '2', 'info', '', 'prison_area_level', '0', '二级监区(中队)', 'admin', NOW(), 'admin', NOW(), 0); + -- 13. 监室状态 (prison_cell_status) INSERT IGNORE INTO system_dict_type (id, name, type, status, remark, creator, create_time, updater, update_time, deleted) VALUES (2020, '监室状态', 'prison_cell_status', '0', '监室状态', 'admin', NOW(), 'admin', NOW(), 0); diff --git a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/prisoner/PrisonerController.java b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/prisoner/PrisonerController.java index e246cbfce2..5d1f60ae00 100644 --- a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/prisoner/PrisonerController.java +++ b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/prisoner/PrisonerController.java @@ -92,7 +92,7 @@ public class PrisonerController { @GetMapping("/get") @Operation(summary = "获取服刑人员详情") @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('prison:prisoner:read')") + @PreAuthorize("@ss.hasPermission('prison:prisoner:query')") public CommonResult getPrisoner(@RequestParam("id") Long id) { PrisonerDO prisoner = prisonerService.getPrisoner(id); if (prisoner == null) { @@ -118,7 +118,7 @@ public class PrisonerController { @GetMapping("/page") @Operation(summary = "获取服刑人员分页列表") - @PreAuthorize("@ss.hasPermission('prison:prisoner:read')") + @PreAuthorize("@ss.hasPermission('prison:prisoner:query')") public CommonResult> getPrisonerPage(@Valid PrisonerPageReqVO reqVO) { return success(prisonerService.getPrisonerPage(reqVO)); } @@ -126,7 +126,7 @@ public class PrisonerController { @GetMapping("/get-by-no") @Operation(summary = "根据服刑人员编号获取服刑人员") @Parameter(name = "prisonerNo", description = "服刑人员编号", required = true) - @PreAuthorize("@ss.hasPermission('prison:prisoner:read')") + @PreAuthorize("@ss.hasPermission('prison:prisoner:query')") public CommonResult getPrisonerByNo(@RequestParam("prisonerNo") String prisonerNo) { PrisonerDO prisoner = prisonerService.getPrisonerByNo(prisonerNo); return success(PrisonerConvert.INSTANCE.convert(prisoner)); @@ -135,7 +135,7 @@ public class PrisonerController { @PostMapping("/export-excel") @Operation(summary = "导出服刑人员 Excel") @ApiAccessLog(operateType = EXPORT) - @PreAuthorize("@ss.hasPermission('prison:prisoner:export')") + @PreAuthorize("@ss.hasPermission('prison:prisoner:query')") public void exportExcel(HttpServletResponse response, @Valid PrisonerPageReqVO reqVO) throws IOException { PageResult pageResult = prisonerService.getPrisonerPage(reqVO); List excelVOs = PrisonerConvert.INSTANCE.convertExcelListFromRespVO(pageResult.getList()); diff --git a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/quickcomment/QuickCommentController.java b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/quickcomment/QuickCommentController.java index 9833ef8d66..473e91fde2 100644 --- a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/quickcomment/QuickCommentController.java +++ b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/quickcomment/QuickCommentController.java @@ -12,6 +12,8 @@ import jakarta.validation.constraints.*; import jakarta.validation.*; import jakarta.servlet.http.*; import java.util.*; +import java.util.HashMap; +import java.util.stream.Collectors; import java.io.IOException; import cn.iocoder.yudao.framework.common.pojo.PageParam; @@ -27,7 +29,10 @@ import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; import cn.iocoder.yudao.module.prison.controller.admin.quickcomment.vo.*; import cn.iocoder.yudao.module.prison.dal.dataobject.quickcomment.QuickCommentDO; +import cn.iocoder.yudao.module.prison.dal.dataobject.quickcomment.CommentCategoryDO; import cn.iocoder.yudao.module.prison.service.quickcomment.QuickCommentService; +import cn.iocoder.yudao.module.prison.dal.mysql.quickcomment.CommentCategoryMapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @Tag(name = "管理后台 - 快捷评语") @RestController @@ -38,6 +43,9 @@ public class QuickCommentController { @Resource private QuickCommentService quickCommentService; + @Resource + private CommentCategoryMapper commentCategoryMapper; + @PostMapping("/create") @Operation(summary = "创建快捷评语") @PreAuthorize("@ss.hasPermission('prison:quick-comment:create')") @@ -87,7 +95,31 @@ public class QuickCommentController { @Operation(summary = "获得快捷评语分页") @PreAuthorize("@ss.hasPermission('prison:quick-comment:query')") public CommonResult> getQuickCommentPage(@Valid QuickCommentPageReqVO pageReqVO) { - return success(quickCommentService.getQuickCommentPage(pageReqVO)); + // 获取分页数据 + PageResult pageResult = quickCommentService.getQuickCommentPage(pageReqVO); + + // 批量获取分类名称 + List categoryIds = pageResult.getList().stream() + .map(QuickCommentRespVO::getCategoryId) + .distinct() + .collect(Collectors.toList()); + + Map categoryNameMap = new HashMap<>(); + if (!categoryIds.isEmpty()) { + List categories = commentCategoryMapper.selectList( + new LambdaQueryWrapper() + .in(CommentCategoryDO::getId, categoryIds) + ); + categoryNameMap = categories.stream() + .collect(Collectors.toMap(CommentCategoryDO::getId, CommentCategoryDO::getName)); + } + + // 填充分类名称 + for (QuickCommentRespVO comment : pageResult.getList()) { + comment.setCategoryName(categoryNameMap.get(comment.getCategoryId())); + } + + return success(pageResult); } @PostMapping("/import") diff --git a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/riskassessment/vo/RiskAssessmentRespVO.java b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/riskassessment/vo/RiskAssessmentRespVO.java index 280e51eaf3..37624848cd 100644 --- a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/riskassessment/vo/RiskAssessmentRespVO.java +++ b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/riskassessment/vo/RiskAssessmentRespVO.java @@ -94,4 +94,9 @@ public class RiskAssessmentRespVO { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private LocalDateTime createTime; + @Schema(description = "更新时间") + @ExcelProperty("更新时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + private LocalDateTime updateTime; + } \ No newline at end of file diff --git a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/situation/vo/SituationRespVO.java b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/situation/vo/SituationRespVO.java index 8d442c0d38..86294f967a 100644 --- a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/situation/vo/SituationRespVO.java +++ b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/situation/vo/SituationRespVO.java @@ -49,6 +49,10 @@ public class SituationRespVO { @ExcelProperty("关联监区ID") private Long areaId; + @Schema(description = "关联监区名称") + @ExcelProperty("关联监区名称") + private String areaName; + @Schema(description = "关联监室ID") @ExcelProperty("关联监室ID") private Long cellId; diff --git a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/dal/dataobject/situation/SituationDO.java b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/dal/dataobject/situation/SituationDO.java index cdc563277b..a507145e0c 100644 --- a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/dal/dataobject/situation/SituationDO.java +++ b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/dal/dataobject/situation/SituationDO.java @@ -63,6 +63,12 @@ public class SituationDO extends BaseDO { */ private Long areaId; + /** + * 关联监区名称(非数据库字段) + */ + @TableField(exist = false) + private String areaName; + /** * 关联监室ID */ diff --git a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/service/situation/impl/SituationServiceImpl.java b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/service/situation/impl/SituationServiceImpl.java index 6b74dec3c1..35910d4c5c 100644 --- a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/service/situation/impl/SituationServiceImpl.java +++ b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/service/situation/impl/SituationServiceImpl.java @@ -14,6 +14,8 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.prison.dal.mysql.situation.SituationMapper; +import cn.iocoder.yudao.module.prison.dal.mysql.area.AreaMapper; +import cn.iocoder.yudao.module.prison.dal.dataobject.area.AreaDO; import cn.iocoder.yudao.module.prison.service.situation.SituationService; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -31,6 +33,9 @@ public class SituationServiceImpl implements SituationService { @Resource private SituationMapper situationMapper; + @Resource + private AreaMapper areaMapper; + @Override public Long createSituation(SituationSaveReqVO createReqVO) { // 插入 @@ -76,7 +81,17 @@ public class SituationServiceImpl implements SituationService { @Override public PageResult getSituationPage(SituationPageReqVO pageReqVO) { - return situationMapper.selectPage(pageReqVO); + PageResult pageResult = situationMapper.selectPage(pageReqVO); + // 反向填充监区名称 + for (SituationDO situation : pageResult.getList()) { + if (situation.getAreaId() != null) { + AreaDO area = areaMapper.selectById(situation.getAreaId()); + if (area != null) { + situation.setAreaName(area.getName()); + } + } + } + return pageResult; } } diff --git a/yudao-module-prison/src/main/resources/sql/evaluation_report.sql b/yudao-module-prison/src/main/resources/sql/evaluation_report.sql index 145562c11e..9db52e457c 100644 --- a/yudao-module-prison/src/main/resources/sql/evaluation_report.sql +++ b/yudao-module-prison/src/main/resources/sql/evaluation_report.sql @@ -126,10 +126,14 @@ DROP TABLE IF EXISTS `prison_report_comment`; CREATE TABLE `prison_report_comment` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '评语ID', `content` varchar(500) NOT NULL COMMENT '评语内容', - `type` tinyint NOT NULL COMMENT '评语类型:1-入监评估 2-定期考核 3-出监评估 4-减刑假释 5-专项评估', - `dimension` varchar(50) DEFAULT NULL COMMENT '适用维度', - `usage_count` int DEFAULT 0 COMMENT '使用次数', - `is_builtin` tinyint(1) DEFAULT 0 COMMENT '是否内置:0-否 1-是', + `comment_type` tinyint NOT NULL COMMENT '评语类型:1-入监评估 2-定期考核 3-出监评估 4-减刑假释 5-专项评估', + `dimension_id` bigint DEFAULT NULL COMMENT '维度ID(关联维度表)', + `dimension_name` varchar(100) DEFAULT NULL COMMENT '维度名称', + `level` tinyint DEFAULT NULL COMMENT '评级等级:1-优秀 2-良好 3-一般 4-较差 5-危险', + `tags` varchar(500) DEFAULT NULL COMMENT '标签(逗号分隔)', + `use_count` int DEFAULT 0 COMMENT '使用次数', + `sort` int DEFAULT 0 COMMENT '排序', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', `status` tinyint(1) DEFAULT 1 COMMENT '状态:0-停用 1-启用', `creator` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', @@ -138,8 +142,8 @@ CREATE TABLE `prison_report_comment` ( `deleted` bit(1) DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`), - KEY `idx_prison_report_comment_type` (`type`), - KEY `idx_prison_report_comment_dimension` (`dimension`) + KEY `idx_prison_report_comment_comment_type` (`comment_type`), + KEY `idx_prison_report_comment_dimension_name` (`dimension_name`) ) ENGINE=InnoDB COMMENT='快捷评语库表'; -- ============================================================ @@ -233,7 +237,7 @@ INSERT INTO `system_menu` (`name`, `permission`, `type`, `sort`, `parent_id`, `s -- ============================================================ -- 初始化内置评语 -- ============================================================ -INSERT INTO `prison_report_comment` (`content`, `type`, `dimension`, `usage_count`, `is_builtin`, `status`, `creator`, `create_time`) VALUES +INSERT INTO `prison_report_comment` (`content`, `comment_type`, `dimension_name`, `use_count`, `is_builtin`, `status`, `creator`, `create_time`) VALUES ('该犯服刑期间表现良好,遵守监规纪律,积极参加各项教育活动。', 2, '服刑表现', 0, 1, 1, 'system', NOW()), ('该犯改造态度端正,劳动积极主动,各项考核指标均达到要求。', 2, '劳动表现', 0, 1, 1, 'system', NOW()), ('经评估,该犯再犯罪风险较低,适合假释。', 4, '综合评估', 0, 1, 1, 'system', NOW()),