From bafdcd501d365513a4744a81b1774c559c7c0be5 Mon Sep 17 00:00:00 2001 From: YBP Date: Thu, 12 Feb 2026 15:15:06 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E6=98=8E=E7=BB=86-=E4=BF=AE=E6=94=B9-?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recordrecord/RecordRecordController.java | 21 ++++- .../vo/RecordRecordPageReqVO.java | 16 +++- .../recordrecord/vo/RecordRecordRespVO.java | 32 +++++-- .../vo/RecordRecordSaveReqVO.java | 24 ++++-- .../recordrecord/RecordRecordDO.java | 22 ++++- .../recordrecord/RecordRecordService.java | 3 + .../recordrecord/RecordRecordServiceImpl.java | 85 +++++++++++++++++-- 7 files changed, 178 insertions(+), 25 deletions(-) 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); } From 3d392054c15d1a70d2f9c8aad379313818a40cb1 Mon Sep 17 00:00:00 2001 From: lrx Date: Thu, 12 Feb 2026 18:08:56 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=E9=85=8D=E6=96=99=E5=85=83=E7=B4=A0?= =?UTF-8?q?=E6=8F=90=E4=BA=A4bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/bus/service/SampleAnalysisServiceImpl.java | 9 +++++++++ .../qms/thirdpartyapi/service/XRFDataServiceImpl.java | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisServiceImpl.java index a694e172..35074ad5 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisServiceImpl.java @@ -1329,6 +1329,9 @@ public class SampleAnalysisServiceImpl implements SampleAnalysisService { ConfigSubSampleMethodConfPoint source = configSubSampleMethodConfItem.getSource(); String project = source.getProject(); BusinessAssayProjectDataExtendRespVO currentBusinessAssayProjectData = businessAssayProjectDataExtendList.stream().filter(f -> f.getBusinessAssayTaskDataId().equals(businessAssayTaskData.getId()) && project.equals(f.getSimpleName())).findFirst().orElse(null); + if (currentBusinessAssayProjectData == null) { + continue; + } ConfigSubSampleMethodConfPoint target = configSubSampleMethodConfItem.getTarget(); for (BusinessAssayTaskDataDO targetBusinessAssayTaskData : targetBusinessAssayTaskDataList) { List targetProjectList = Arrays.asList(target.getProject().split(",")); @@ -1360,6 +1363,9 @@ public class SampleAnalysisServiceImpl implements SampleAnalysisService { ConfigSubSampleMethodConfPoint source = configSubSampleMethodConfItem.getSource(); String project = source.getProject(); BusinessAssayProjectDataExtendRespVO currentBusinessAssayProjectData = businessAssayProjectDataExtendList.stream().filter(f -> f.getBusinessAssayTaskDataId().equals(businessAssayTaskData.getId()) && project.equals(f.getSimpleName())).findFirst().orElse(null); + if (currentBusinessAssayProjectData == null) { + continue; + } ConfigSubSampleMethodConfPoint target = configSubSampleMethodConfItem.getTarget(); for (BusinessAssayTaskDataDO targetBusinessAssayTaskData : targetBusinessAssayTaskDataList) { List targetProjectList = Arrays.asList(target.getProject().split(",")); @@ -1391,6 +1397,9 @@ public class SampleAnalysisServiceImpl implements SampleAnalysisService { ConfigSubSampleMethodConfPoint source = configSubSampleMethodConfItem.getSource(); String project = source.getProject(); BusinessAssayProjectDataExtendRespVO currentBusinessAssayProjectData = businessAssayProjectDataExtendList.stream().filter(f -> f.getBusinessAssayTaskDataId().equals(businessAssayTaskData.getId()) && project.equals(f.getSimpleName())).findFirst().orElse(null); + if (currentBusinessAssayProjectData == null) { + continue; + } ConfigSubSampleMethodConfPoint target = configSubSampleMethodConfItem.getTarget(); for (BusinessAssayTaskDataDO targetBusinessAssayTaskData : targetBusinessAssayTaskDataList) { List targetProjectList = Arrays.asList(target.getProject().split(",")); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/thirdpartyapi/service/XRFDataServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/thirdpartyapi/service/XRFDataServiceImpl.java index e4a228e6..2f643b6c 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/thirdpartyapi/service/XRFDataServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/thirdpartyapi/service/XRFDataServiceImpl.java @@ -399,6 +399,9 @@ public class XRFDataServiceImpl implements XRFDataService { ConfigSubSampleMethodConfPoint source = configSubSampleMethodConfItem.getSource(); String project = source.getProject(); BusinessAssayProjectDataExtendRespVO currentBusinessAssayProjectData = tempBusElementValueList.stream().filter(f -> f.getBusinessAssayTaskDataId().equals(businessAssayTaskData.getId()) && project.equals(f.getSimpleName())).findFirst().orElse(null); + if (currentBusinessAssayProjectData == null) { + continue; + } ConfigSubSampleMethodConfPoint target = configSubSampleMethodConfItem.getTarget(); for (BusinessAssayTaskDataDO targetBusinessAssayTaskData : targetBusinessAssayTaskDataList) { List targetProjectList = Arrays.asList(target.getProject().split(",")); @@ -430,6 +433,9 @@ public class XRFDataServiceImpl implements XRFDataService { ConfigSubSampleMethodConfPoint source = configSubSampleMethodConfItem.getSource(); String project = source.getProject(); BusinessAssayProjectDataExtendRespVO currentBusinessAssayProjectData = tempBusElementValueList.stream().filter(f -> f.getBusinessAssayTaskDataId().equals(businessAssayTaskData.getId()) && project.equals(f.getSimpleName())).findFirst().orElse(null); + if (currentBusinessAssayProjectData == null) { + continue; + } ConfigSubSampleMethodConfPoint target = configSubSampleMethodConfItem.getTarget(); for (BusinessAssayTaskDataDO targetBusinessAssayTaskData : targetBusinessAssayTaskDataList) { List targetProjectList = Arrays.asList(target.getProject().split(",")); @@ -461,6 +467,9 @@ public class XRFDataServiceImpl implements XRFDataService { ConfigSubSampleMethodConfPoint source = configSubSampleMethodConfItem.getSource(); String project = source.getProject(); BusinessAssayProjectDataExtendRespVO currentBusinessAssayProjectData = tempBusElementValueList.stream().filter(f -> f.getBusinessAssayTaskDataId().equals(businessAssayTaskData.getId()) && project.equals(f.getSimpleName())).findFirst().orElse(null); + if (currentBusinessAssayProjectData == null) { + continue; + } ConfigSubSampleMethodConfPoint target = configSubSampleMethodConfItem.getTarget(); for (BusinessAssayTaskDataDO targetBusinessAssayTaskData : targetBusinessAssayTaskDataList) { List targetProjectList = Arrays.asList(target.getProject().split(",")); From 4228b49bf507f9612f771c5ef1d13aeccec9058c Mon Sep 17 00:00:00 2001 From: YBP Date: Thu, 12 Feb 2026 18:12:36 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E6=98=8E=E7=BB=86-=E5=88=A0=E9=99=A4-?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recordrecord/RecordRecordController.java | 14 +++-- .../recordrecord/vo/RecordRecordRespVO.java | 10 ++++ .../vo/RecordRecordSaveReqVO.java | 19 ++++--- .../dao/recordrecord/RecordRecordMapper.java | 1 + .../RecordCategoryServiceImpl.java | 5 +- .../recordrecord/RecordRecordServiceImpl.java | 55 ++++++++++++++++--- 6 files changed, 82 insertions(+), 22 deletions(-) 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 d6515677..38e8cae5 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 @@ -1,6 +1,8 @@ package com.zt.plat.module.qms.resource.record.controller.admin.recordrecord; import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore; +import com.zt.plat.module.qms.common.service.BusinessFileService; +import com.zt.plat.module.qms.resource.clientManage.controller.vo.VersionManagementRespVO; 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; @@ -41,7 +43,7 @@ import com.zt.plat.module.qms.resource.record.service.recordrecord.RecordRecordS @RequestMapping("/qms/resource/record-record") @Validated @DeptDataPermissionIgnore(enable = "true") -@FileUploadController(source = "qms.recordrecord") +@FileUploadController(source = "qms.recordrecord", codeKey = "data.fileUploadBusinessCode") public class RecordRecordController extends AbstractFileUploadController implements BusinessControllerMarker{ static { @@ -53,6 +55,8 @@ public class RecordRecordController extends AbstractFileUploadController impleme @Resource private RecordRecordService recordRecordService; + @Resource + private BusinessFileService businessFileService; // @GetMapping("/getRecordListByCategoryId") // @Operation(summary = "根据文件分类ID获取分类明细记录") @@ -73,9 +77,9 @@ public class RecordRecordController extends AbstractFileUploadController impleme @PutMapping("/update") @Operation(summary = "更新文件、模板、记录") //@PreAuthorize("@ss.hasPermission('qms:record-record:update')") - public CommonResult updateRecordRecord(@Valid @RequestBody RecordRecordSaveReqVO updateReqVO) { + public CommonResult updateRecordRecord(@Valid @RequestBody RecordRecordSaveReqVO updateReqVO) { recordRecordService.updateRecordRecord(updateReqVO); - return success(true); + return success(BeanUtils.toBean(updateReqVO, RecordRecordSaveReqVO.class)); } @DeleteMapping("/delete") @@ -102,7 +106,9 @@ public class RecordRecordController extends AbstractFileUploadController impleme //@PreAuthorize("@ss.hasPermission('qms:record-record:query')") public CommonResult getRecordRecord(@RequestParam("id") Long id) { RecordRecordDO recordRecord = recordRecordService.getRecordRecord(id); - return success(BeanUtils.toBean(recordRecord, RecordRecordRespVO.class)); + RecordRecordRespVO vo = BeanUtils.toBean(recordRecord, RecordRecordRespVO.class); + vo.setBusinessFileRet(businessFileService.getBusinessFileList(id)); + return success(vo); } @GetMapping("/page") 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 58e26726..de99db4f 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,5 +1,7 @@ package com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.module.infra.api.businessfile.dto.BusinessFileWithUrlRespDTO; import com.zt.plat.module.qms.core.aspect.annotation.Dict; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -122,4 +124,12 @@ public class RecordRecordRespVO { @ExcelProperty("文件分类名称") private String categoryName; + @Schema(description = "附件上传code") + @ExcelProperty("附件上传code") + private String fileUploadBusinessCode = "qms_resource_version_manage"; + + // ===================扩展字段========================= + @Schema(description = "附件对象") + private CommonResult> businessFileRet; + } \ 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 e8f0ac4f..e5d6d1aa 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,16 +1,13 @@ 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 com.zt.plat.module.qms.resource.clientManage.controller.vo.UploadFileVo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - -import java.util.*; - -import jakarta.validation.constraints.*; -import org.springframework.format.annotation.DateTimeFormat; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; import java.time.LocalDateTime; +import java.util.List; @Schema(description = "管理后台 - 文件、模板、记录新增/修改 Request VO") @Data @@ -96,4 +93,10 @@ public class RecordRecordSaveReqVO { // =================临时字段==================> @Schema(description = "是否新版本") private String newVersion; + + @Schema(description = "上传文件列表") + private List files; + + @Schema(description = "删除的文件id") + private List deleteFileIdList; } \ 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/dao/recordrecord/RecordRecordMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dao/recordrecord/RecordRecordMapper.java index b3b3adda..a5a7b067 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dao/recordrecord/RecordRecordMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dao/recordrecord/RecordRecordMapper.java @@ -37,6 +37,7 @@ public interface RecordRecordMapper extends BaseMapperX { .eqIfPresent(RecordRecordDO::getSourceUrl, reqVO.getSourceUrl()) .eqIfPresent(RecordRecordDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode()) .eqIfPresent(RecordRecordDO::getRemark, reqVO.getRemark()) + .eqIfPresent(RecordRecordDO::getMainId, reqVO.getMainId()) .betweenIfPresent(RecordRecordDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(RecordRecordDO::getId)); } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordcategory/RecordCategoryServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordcategory/RecordCategoryServiceImpl.java index 0ddf61e8..f547cc57 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordcategory/RecordCategoryServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordcategory/RecordCategoryServiceImpl.java @@ -72,7 +72,10 @@ public class RecordCategoryServiceImpl implements RecordCategoryService { public void updateRecordCategory(RecordCategorySaveReqVO updateReqVO) { // 校验存在 validateRecordCategoryExists(updateReqVO.getId()); - + + Long parentId1 = updateReqVO.getParentId(); + if (parentId1 == null || parentId1 == 0L) throw exception(RECORD_CATEGORY_NOT_EXISTS); + // 获取更新前的旧数据 RecordCategoryDO oldObj = recordCategoryMapper.selectById(updateReqVO.getId()); String oldIdPath = oldObj.getIdPath(); 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 366a4e97..1221cc42 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 @@ -7,11 +7,14 @@ 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.common.service.BusinessFileService; +import com.zt.plat.module.qms.resource.clientManage.controller.vo.UploadFileVo; 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; import com.zt.plat.module.qms.resource.record.dal.dao.recordcategory.RecordCategoryMapper; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordcategory.RecordCategoryDO; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.transaction.annotation.Transactional; @@ -35,6 +38,7 @@ import static com.zt.plat.module.qms.enums.ErrorCodeConstants.*; * * @author 后台管理 */ +@Slf4j @Service @Validated public class RecordRecordServiceImpl implements RecordRecordService { @@ -45,12 +49,24 @@ public class RecordRecordServiceImpl implements RecordRecordService { @Resource private RecordCategoryMapper recordCategoryMapper; + @Resource + private BusinessFileService businessFileService; + // 验证分类ID 是否存在 private void validateRecordCategoryIdExists(Long categoryId) { RecordCategoryDO recordCategoryDO = recordCategoryMapper.selectById(categoryId); if (ObjectUtils.isEmpty(recordCategoryDO)) throw exception(RCD_CTGR_NOT_EXISTS); } + //处理附件参数 + private void handleFileParam(RecordRecordSaveReqVO reqVO){ + List files = reqVO.getFiles(); + if (files == null || files.isEmpty()) + return; + UploadFileVo uploadFileVo = files.get(0); +// reqVO.setSourceUrl(uploadFileVo.getUrl()); + } + @Override @Transactional(rollbackFor = Exception.class) public RecordRecordRespVO createRecordRecord(RecordRecordSaveReqVO createReqVO) { @@ -60,6 +76,7 @@ public class RecordRecordServiceImpl implements RecordRecordService { Long categoryId = recordRecord.getCategoryId(); validateRecordCategoryIdExists(categoryId); recordRecord.setCurrentFlag(1);// 是否新版本 + handleFileParam(createReqVO); try { recordRecordMapper.insert(recordRecord); recordRecord.setMainId(recordRecord.getId()); @@ -75,12 +92,15 @@ public class RecordRecordServiceImpl implements RecordRecordService { RecordRecordDO recordRecordDO = BeanUtils.toBean(createReqVO, RecordRecordDO.class); recordRecordDO.setCurrentFlag(0); try { - recordRecordMapper.updateById(recordRecordDO); + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(RecordRecordDO::getMainId,recordRecordDO.getMainId()); // 所以main_id 和 current_flag = 1 的数据 + lambdaQueryWrapper.eq(RecordRecordDO::getCurrentFlag,1); // 0,旧版本 + recordRecordMapper.update(recordRecordDO,lambdaQueryWrapper); //创建新版本 recordRecordDO.setId(null); recordRecordDO.setCurrentFlag(1); - recordRecordDO.setMainId(createReqVO.getId()); + recordRecordDO.setMainId(createReqVO.getMainId()); recordRecordDO.setVersion(recordRecordDO.getNewVersion());// 新版本号 recordRecordMapper.insert(recordRecordDO); } catch (Exception e) { @@ -93,6 +113,7 @@ public class RecordRecordServiceImpl implements RecordRecordService { public void updateRecordRecord(RecordRecordSaveReqVO updateReqVO) { // 校验存在 validateRecordRecordExists(updateReqVO.getId()); + handleFileParam(updateReqVO); RecordRecordDO updateObj = BeanUtils.toBean(updateReqVO, RecordRecordDO.class); String newVersion = updateObj.getNewVersion();// 新版本 if (ObjectUtils.isEmpty(newVersion)) { // 不是新版本,直接更新 @@ -104,20 +125,36 @@ public class RecordRecordServiceImpl implements RecordRecordService { // TODO } // 创建新版本 -// updateObj.setVersion(newVersion); saveDataWithNewVersion(updateObj); } // 更新 - + businessFileService.deleteBusinessFileList(updateReqVO.getDeleteFileIdList()); } @Override @Transactional(rollbackFor = Exception.class) public void deleteRecordRecord(Long id) { // 校验存在 - validateRecordRecordExists(id); + RecordRecordDO recordRecordDO = recordRecordMapper.selectById(id); + if (ObjectUtils.isEmpty(recordRecordDO)) throw exception(RECORD_RECORD_NOT_EXISTS); // 删除 recordRecordMapper.deleteById(id); + /* + 删除成功,需要判断是否有历史版本, + 1.有:需要把上一版变成最新版 + 2.没有:不操作 + */ + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(RecordRecordDO::getMainId,recordRecordDO.getMainId()); + lambdaQueryWrapper.orderByDesc(RecordRecordDO::getCreateTime); // 根据时间倒叙排序,取第一个 + List recordRecordDOS = recordRecordMapper.selectList(lambdaQueryWrapper); + log.info("recordRecordDOS--:{}",recordRecordDOS); + if (ObjectUtils.isEmpty(recordRecordDOS)) return ; + // 修改状态为当前最新版本 + // TODO 需要去判断文件作废状态 + recordRecordDO = recordRecordDOS.get(0); + recordRecordDO.setCurrentFlag(1); + recordRecordMapper.updateById(recordRecordDO); } @Override @@ -155,15 +192,15 @@ public class RecordRecordServiceImpl implements RecordRecordService { @Override public PageResult getRecordRecordPage(RecordRecordPageReqVO pageReqVO) { // 查询 id 和 main_id 的值相同的数据 - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(RecordRecordDO.class) - .apply("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.eq(RecordRecordDO::getCurrentFlag, 1); // 默认查询最新版 wrapper.orderByAsc(RecordRecordDO::getCreateTime); + log.info("pageReqVO:{}", pageReqVO); return recordRecordMapper.selectPage(pageReqVO, wrapper); }