diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/RecordRecordController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/RecordRecordController.java index 5e844548..d6515677 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/RecordRecordController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/RecordRecordController.java @@ -38,7 +38,7 @@ import com.zt.plat.module.qms.resource.record.service.recordrecord.RecordRecordS @Tag(name = "管理后台 - 文件、模板、记录") @RestController -@RequestMapping("/qms/record-record") +@RequestMapping("/qms/resource/record-record") @Validated @DeptDataPermissionIgnore(enable = "true") @FileUploadController(source = "qms.recordrecord") @@ -54,8 +54,17 @@ public class RecordRecordController extends AbstractFileUploadController impleme @Resource private RecordRecordService recordRecordService; +// @GetMapping("/getRecordListByCategoryId") +// @Operation(summary = "根据文件分类ID获取分类明细记录") +// @Parameter(name = "id", description = "编号", required = true, example = "1024") +// //@PreAuthorize("@ss.hasPermission('qms:record-record:query')") +// public CommonResult> getRecordListByCategoryId(@RequestParam("id") Long categoryId) { +// PageResult recordRecordListByCategoryId = recordRecordService.getRecordListByCategoryId(categoryId); +// return success(BeanUtils.toBean(recordRecordListByCategoryId, RecordRecordRespVO.class)); +// } + @PostMapping("/create") - @Operation(summary = "创建文件、模板、记录") + @Operation(summary = "创建文件、模板、记录->分类明细") //@PreAuthorize("@ss.hasPermission('qms:record-record:create')") public CommonResult createRecordRecord(@Valid @RequestBody RecordRecordSaveReqVO createReqVO) { return success(recordRecordService.createRecordRecord(createReqVO)); @@ -100,7 +109,13 @@ public class RecordRecordController extends AbstractFileUploadController impleme @Operation(summary = "获得文件、模板、记录分页") //@PreAuthorize("@ss.hasPermission('qms:record-record:query')") public CommonResult> getRecordRecordPage(@Valid RecordRecordPageReqVO pageReqVO) { - PageResult pageResult = recordRecordService.getRecordRecordPage(pageReqVO); + PageResult pageResult = new PageResult<>(); + Integer isQueryHistory = pageReqVO.getIsQueryHistory(); + if (isQueryHistory != null && isQueryHistory == 1) { // 查询历史分页 + pageResult=recordRecordService.getRecordHistoryPage(pageReqVO); + }else { + pageResult = recordRecordService.getRecordRecordPage(pageReqVO); + } return success(BeanUtils.toBean(pageResult, RecordRecordRespVO.class)); } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordPageReqVO.java index 43cc6655..c4c8573d 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordPageReqVO.java @@ -29,14 +29,14 @@ public class RecordRecordPageReqVO extends PageParam { private String version; @Schema(description = "是否最新版本,默认显示最新版本") - private String currentFlag; + private Integer currentFlag; @Schema(description = "编制日期") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] makeDate; @Schema(description = "是否涉密") - private String confidentialFlag; + private Integer confidentialFlag; @Schema(description = "密级") private String confidentialLevel; @@ -48,7 +48,7 @@ public class RecordRecordPageReqVO extends PageParam { private String confidentialKey; @Schema(description = "是否长期有效") - private String permanently; + private Integer permanently; @Schema(description = "过期日期") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @@ -82,4 +82,14 @@ public class RecordRecordPageReqVO extends PageParam { @Schema(description = "是否回收权限") private Integer collectionFlag; + @Schema(description = "原始父级ID") + private Long mainId; + + @Schema(description = "是否可编辑") + private Integer operationFlag; + +// ===========临时字段========== + @Schema(description = "是否查询历史数据") + private Integer isQueryHistory; // 1-查询,0-不查询 + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordRespVO.java index 1aa5667f..58e26726 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordRespVO.java @@ -1,10 +1,15 @@ package com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo; +import com.zt.plat.module.qms.core.aspect.annotation.Dict; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; + import java.util.*; + import org.springframework.format.annotation.DateTimeFormat; + import java.time.LocalDateTime; + import com.alibaba.excel.annotation.*; @Schema(description = "管理后台 - 文件、模板、记录 Response VO") @@ -38,7 +43,8 @@ public class RecordRecordRespVO { @Schema(description = "是否最新版本,默认显示最新版本", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("是否最新版本,默认显示最新版本") - private String currentFlag; + @Dict(dicCode = "yes_or_no") + private Integer currentFlag; @Schema(description = "编制日期") @ExcelProperty("编制日期") @@ -46,7 +52,8 @@ public class RecordRecordRespVO { @Schema(description = "是否涉密", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("是否涉密") - private String confidentialFlag; + @Dict(dicCode = "yes_or_no") + private Integer confidentialFlag; @Schema(description = "密级") @ExcelProperty("密级") @@ -62,7 +69,8 @@ public class RecordRecordRespVO { @Schema(description = "是否长期有效", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("是否长期有效") - private String permanently; + @Dict(dicCode = "yes_or_no") + private Integer permanently; @Schema(description = "过期日期") @ExcelProperty("过期日期") @@ -70,11 +78,13 @@ public class RecordRecordRespVO { @Schema(description = "过期标识,0-有效,1-过期", example = "1") @ExcelProperty("过期标识,0-有效,1-过期") - private String expirationStatus; + @Dict(dicCode = "yes_or_no") + private Integer expirationStatus; @Schema(description = "作废标志,0-有效,1-作废") @ExcelProperty("作废标志,0-有效,1-作废") - private String cancelFlag; + @Dict(dicCode = "yes_or_no") + private Integer cancelFlag; @Schema(description = "表单数据") @ExcelProperty("表单数据") @@ -100,4 +110,16 @@ public class RecordRecordRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + @Schema(description = "原始父级ID") + private Long mainId; + + @Schema(description = "是否可编辑") + @ExcelProperty("是否可编辑") + private Integer operationFlag; + + //===========临时字段=============> + @Schema(description = "文件分类名称") + @ExcelProperty("文件分类名称") + private String categoryName; + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordSaveReqVO.java index 121a759c..e8f0ac4f 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordSaveReqVO.java @@ -1,11 +1,15 @@ package com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo; import com.baomidou.mybatisplus.annotation.TableField; +import com.zt.plat.module.qms.core.aspect.annotation.Dict; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; + import java.util.*; + import jakarta.validation.constraints.*; import org.springframework.format.annotation.DateTimeFormat; + import java.time.LocalDateTime; @Schema(description = "管理后台 - 文件、模板、记录新增/修改 Request VO") @@ -35,15 +39,14 @@ public class RecordRecordSaveReqVO { private String version; @Schema(description = "是否最新版本,默认显示最新版本", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "是否最新版本,默认显示最新版本不能为空") - private String currentFlag; + private Integer currentFlag; @Schema(description = "编制日期") private LocalDateTime makeDate; @Schema(description = "是否涉密", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "是否涉密不能为空") - private String confidentialFlag; + @NotNull(message = "是否涉密不能为空") + private Integer confidentialFlag; @Schema(description = "密级") private String confidentialLevel; @@ -55,8 +58,7 @@ public class RecordRecordSaveReqVO { private String confidentialKey; @Schema(description = "是否长期有效", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "是否长期有效不能为空") - private String permanently; + private Integer permanently; @Schema(description = "过期日期") private LocalDateTime expirationDate; @@ -84,4 +86,14 @@ public class RecordRecordSaveReqVO { @Schema(description = "是否回收权限") private Integer collectionFlag; + + @Schema(description = "原始父级ID") + private Long mainId; + + @Schema(description = "是否可编辑") + private Integer operationFlag; + + // =================临时字段==================> + @Schema(description = "是否新版本") + private String newVersion; } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordrecord/RecordRecordDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordrecord/RecordRecordDO.java index f3256133..ce6c34fb 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordrecord/RecordRecordDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordrecord/RecordRecordDO.java @@ -62,7 +62,7 @@ public class RecordRecordDO extends BusinessBaseDO { * 是否最新版本,默认显示最新版本 */ @TableField("CRNT_FLG") - private String currentFlag; + private Integer currentFlag; /** * 编制日期 */ @@ -72,7 +72,7 @@ public class RecordRecordDO extends BusinessBaseDO { * 是否涉密 */ @TableField("CNF_FLG") - private String confidentialFlag; + private Integer confidentialFlag; /** * 密级 */ @@ -138,5 +138,23 @@ public class RecordRecordDO extends BusinessBaseDO { */ @TableField("COLT_FLG") private Integer collectionFlag; + /** + * 原始父级ID + */ + @TableField("MAIN_ID") + private Long mainId; + /** + * 是否可编辑 + */ + @TableField("OPTN_FLG") + private Integer operationFlag; + +// =============临时字段============> + + @TableField(exist = false) + private String categoryName; + + @TableField(exist = false) + private String newVersion; } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordService.java index 8aca76d7..e96f9846 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordService.java @@ -61,4 +61,7 @@ public interface RecordRecordService { */ PageResult getRecordRecordPage(RecordRecordPageReqVO pageReqVO); +// PageResult getRecordListByCategoryId(Long categoryId); + + PageResult getRecordHistoryPage(RecordRecordPageReqVO pageReqVO); } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordServiceImpl.java index 33cf9102..366a4e97 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordServiceImpl.java @@ -1,7 +1,12 @@ package com.zt.plat.module.qms.resource.record.service.recordrecord; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.zt.plat.framework.common.exception.ServiceException; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.module.qms.common.data.controller.vo.DataTemplateSaveReqVO; +import com.zt.plat.module.qms.common.data.dal.dataobject.DataTemplateDO; import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordPageReqVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordRespVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordSaveReqVO; @@ -46,28 +51,64 @@ public class RecordRecordServiceImpl implements RecordRecordService { if (ObjectUtils.isEmpty(recordCategoryDO)) throw exception(RCD_CTGR_NOT_EXISTS); } - @Transactional(rollbackFor = Exception.class) @Override + @Transactional(rollbackFor = Exception.class) public RecordRecordRespVO createRecordRecord(RecordRecordSaveReqVO createReqVO) { // 插入 RecordRecordDO recordRecord = BeanUtils.toBean(createReqVO, RecordRecordDO.class); // 判断文件记录分类ID 是否存在 Long categoryId = recordRecord.getCategoryId(); validateRecordCategoryIdExists(categoryId); - //TODO 判断版本号是否最新版 - recordRecordMapper.insert(recordRecord); + recordRecord.setCurrentFlag(1);// 是否新版本 + try { + recordRecordMapper.insert(recordRecord); + recordRecord.setMainId(recordRecord.getId()); + recordRecordMapper.updateById(recordRecord); + } catch (Exception e) { + throw new RuntimeException("create record error"); + } // 返回 return BeanUtils.toBean(recordRecord, RecordRecordRespVO.class); } + public void saveDataWithNewVersion(RecordRecordDO createReqVO) { + RecordRecordDO recordRecordDO = BeanUtils.toBean(createReqVO, RecordRecordDO.class); + recordRecordDO.setCurrentFlag(0); + try { + recordRecordMapper.updateById(recordRecordDO); + + //创建新版本 + recordRecordDO.setId(null); + recordRecordDO.setCurrentFlag(1); + recordRecordDO.setMainId(createReqVO.getId()); + recordRecordDO.setVersion(recordRecordDO.getNewVersion());// 新版本号 + recordRecordMapper.insert(recordRecordDO); + } catch (Exception e) { + throw new RuntimeException("save new version error"); + } + } + @Override @Transactional(rollbackFor = Exception.class) public void updateRecordRecord(RecordRecordSaveReqVO updateReqVO) { // 校验存在 validateRecordRecordExists(updateReqVO.getId()); - // 更新 RecordRecordDO updateObj = BeanUtils.toBean(updateReqVO, RecordRecordDO.class); - recordRecordMapper.updateById(updateObj); + String newVersion = updateObj.getNewVersion();// 新版本 + if (ObjectUtils.isEmpty(newVersion)) { // 不是新版本,直接更新 + recordRecordMapper.updateById(updateObj); + }else {// 新版本 + // 是否回收 + Integer collectionFlag = updateReqVO.getCollectionFlag(); + if (collectionFlag != null) { // 不为null, 回收旧版本权限 + // TODO + } + // 创建新版本 +// updateObj.setVersion(newVersion); + saveDataWithNewVersion(updateObj); + } + // 更新 + } @Override @@ -102,11 +143,43 @@ public class RecordRecordServiceImpl implements RecordRecordService { @Override public RecordRecordDO getRecordRecord(Long id) { - return recordRecordMapper.selectById(id); + RecordRecordDO recordRecordDO = recordRecordMapper.selectById(id); + if (!ObjectUtils.isEmpty(recordRecordDO)){ + Long categoryId = recordRecordDO.getCategoryId(); + RecordCategoryDO recordCategoryDO = recordCategoryMapper.selectById(categoryId); + recordRecordDO.setCategoryName(recordCategoryDO.getName()); + } + return recordRecordDO; } @Override public PageResult getRecordRecordPage(RecordRecordPageReqVO pageReqVO) { + // 查询 id 和 main_id 的值相同的数据 + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(RecordRecordDO.class) + .apply("ID = MAIN_ID"); + + // 添加其他查询条件 + if (pageReqVO.getCategoryId() != null) wrapper.eq(RecordRecordDO::getCategoryId, pageReqVO.getCategoryId()); + if (pageReqVO.getCode() != null) wrapper.eq(RecordRecordDO::getCode, pageReqVO.getCode()); + if (pageReqVO.getName() != null) wrapper.like(RecordRecordDO::getName, pageReqVO.getName()); +// if (pageReqVO.getCurrentFlag() != null) wrapper.eq(RecordRecordDO::getCurrentFlag, pageReqVO.getCurrentFlag()); + wrapper.orderByAsc(RecordRecordDO::getCreateTime); + + return recordRecordMapper.selectPage(pageReqVO, wrapper); + } + +// @Override +// public PageResult getRecordListByCategoryId(Long categoryId) { +// RecordRecordPageReqVO recordPageReqVO = new RecordRecordPageReqVO(); +// recordPageReqVO.setCategoryId(categoryId); +// return recordRecordMapper.selectPage(recordPageReqVO); +// } + + // 查询历史分页 + @Override + public PageResult getRecordHistoryPage(RecordRecordPageReqVO pageReqVO) { + Long mainId = pageReqVO.getMainId(); + if (ObjectUtils.isEmpty(mainId)) throw exception(RECORD_RECORD_NOT_EXISTS); return recordRecordMapper.selectPage(pageReqVO); }