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); }