diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/constant/RecordConstants.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/constant/RecordConstants.java index f850d052..cf20c948 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/constant/RecordConstants.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/constant/RecordConstants.java @@ -19,6 +19,8 @@ public class RecordConstants { public static final String DEPT = "部门"; /** admin */ public static final String ADMIN = "admin"; + /** 文件 */ + public static final String FILE = "文件"; } /** @@ -68,6 +70,8 @@ public class RecordConstants { * 文件提交 * */ public static final String RECORD_UPDATE = "文件更改"; + + public static final String CHANGE_NOTICE = "更改通知单"; } /** diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/RecordApplyController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/RecordApplyController.java index 46b0ddec..850ade34 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/RecordApplyController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/RecordApplyController.java @@ -11,6 +11,7 @@ import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore; import com.zt.plat.framework.excel.core.util.ExcelUtils; +import com.zt.plat.module.infra.api.businessfile.dto.BusinessFileWithUrlRespDTO; import com.zt.plat.module.qms.common.service.BusinessFileService; import com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo.RecordApplyPageReqVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo.RecordApplyRespVO; @@ -110,7 +111,11 @@ public class RecordApplyController extends AbstractFileUploadController implemen // 先转换为VO,避免JSONObject中包含ArrayList导致的转换错误 RecordApplyRespVO respVO = BeanUtils.toBean(recordApply, RecordApplyRespVO.class); - respVO.setBusinessFileRet(businessFileService.getBusinessFileList(id)); + CommonResult> businessFileList = businessFileService.getBusinessFileList(id); + if (businessFileList.getData() != null) { + businessFileList.getData().forEach(item -> item.setFileUrl(null)); + } + respVO.setBusinessFileRet(businessFileList); return success(respVO); } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplySaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplySaveReqVO.java index 1562472e..eea6f7ab 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplySaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplySaveReqVO.java @@ -104,15 +104,6 @@ public class RecordApplySaveReqVO { @Schema(description = "删除的文件id") private List deleteFileIdList; -// @Schema(description = "文件记录ID") -// private Long recordId; -// -// @Schema(description = "用户IDs") -// private Long[] userIds; -// -// @Schema(description = "用户IDs") -// private Long[] deptIds; - private List detailList; // 记录Id 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 abe0edc9..46f686de 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 @@ -8,13 +8,22 @@ import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore; +import com.zt.plat.module.infra.api.businessfile.BusinessFileApi; +import com.zt.plat.module.infra.api.businessfile.dto.BusinessFileRespDTO; +import com.zt.plat.module.infra.api.businessfile.dto.BusinessFileWithUrlRespDTO; +import com.zt.plat.module.infra.api.file.FileApi; +import com.zt.plat.module.infra.api.file.dto.FileRespDTO; import com.zt.plat.module.qms.common.service.BusinessFileService; +import com.zt.plat.module.qms.resource.record.constant.RecordConstants; +import com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail.vo.RecordApplyDetailPageReqVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordpermission.vo.RecordPermissionRespVO; 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.dataobject.recordapplydetail.RecordApplyDetailDO; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordpermission.RecordPermissionDO; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordrecord.RecordRecordDO; +import com.zt.plat.module.qms.resource.record.service.recordapplydetail.RecordApplyDetailService; import com.zt.plat.module.qms.resource.record.service.recordpermission.RecordPermissionService; import com.zt.plat.module.qms.resource.record.service.recordrecord.RecordRecordService; import io.swagger.v3.oas.annotations.Operation; @@ -23,10 +32,14 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; +import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; import static com.zt.plat.framework.common.pojo.CommonResult.success; @@ -54,6 +67,12 @@ public class RecordRecordController extends AbstractFileUploadController impleme @Resource private BusinessFileService businessFileService; + @Resource + private RecordApplyDetailService recordApplyDetailService; + + @Resource + private FileApi fileApi; + @PostMapping("/create") @Operation(summary = "创建文件、模板、记录->分类明细") @@ -93,10 +112,37 @@ public class RecordRecordController extends AbstractFileUploadController impleme @Operation(summary = "获得文件、模板、记录") @Parameter(name = "id", description = "编号", required = true, example = "1024") //@PreAuthorize("@ss.hasPermission('qms:record-record:query')") - public CommonResult getRecordRecord(@RequestParam("id") Long id) { + public CommonResult getRecordRecord(@RequestParam("id") Long id, @RequestParam(value = "changNoticeFlag", required = false) Long changNoticeFlag) { RecordRecordDO recordRecord = recordRecordService.getRecordRecord(id); RecordRecordRespVO vo = BeanUtils.toBean(recordRecord, RecordRecordRespVO.class); - vo.setBusinessFileRet(businessFileService.getBusinessFileList(id)); + CommonResult> businessFileList = businessFileService.getBusinessFileList(id); + + if (businessFileList.getData() != null) { + businessFileList.getData().forEach(item -> item.setFileUrl(null)); + } + vo.setBusinessFileRet(businessFileList); + // 获取修改通知单 + if (changNoticeFlag == null || changNoticeFlag == 0) return success(vo); + RecordApplyDetailPageReqVO pageReqVO = new RecordApplyDetailPageReqVO(); + pageReqVO.setPageSize(-1); + pageReqVO.setDocumentId(id); + pageReqVO.setTargetType(RecordConstants.TargetType.FILE); + List recordApplyDetailDOS = recordApplyDetailService.selectList(pageReqVO); + if (ObjectUtils.isEmpty(recordApplyDetailDOS)) return success(vo); + Set targetIds = recordApplyDetailDOS.stream().map(RecordApplyDetailDO::getTargetId).collect(Collectors.toSet()); + if (!ObjectUtils.isEmpty(targetIds)){ + targetIds.forEach(targetId -> { + CommonResult fileInfo = fileApi.getFileInfo(targetId); + if (fileInfo.getData() != null) { + FileRespDTO data = fileInfo.getData(); + data.setUrl(null); + if (vo.getChangeNoticeList() == null) { + vo.setChangeNoticeList(new ArrayList<>()); + } + vo.getChangeNoticeList().add(fileInfo.getData()); + } + }); + } return success(vo); } 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 17a41dfe..88a036cf 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 @@ -4,7 +4,9 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.module.infra.api.businessfile.dto.BusinessFileWithUrlRespDTO; +import com.zt.plat.module.infra.api.file.dto.FileRespDTO; import com.zt.plat.module.qms.core.aspect.annotation.Dict; +import com.zt.plat.module.qms.resource.record.dal.dataobject.recordapplydetail.RecordApplyDetailDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -165,11 +167,6 @@ public class RecordRecordRespVO { @Schema(description = "文件提交申请ID") private Long applyId; -// @Schema(description = "文件提交流程实例ID") -// private String flowInstanceId; - -// @Schema(description = "文件提交业务状态") -// @Dict(dicCode = "flow_status") -// private String applyBusinessStatus; + private List ChangeNoticeList; // } \ 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/recordapplydetail/RecordApplyDetailDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordapplydetail/RecordApplyDetailDO.java index 45d9b9be..b3589ac4 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordapplydetail/RecordApplyDetailDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordapplydetail/RecordApplyDetailDO.java @@ -1,5 +1,7 @@ package com.zt.plat.module.qms.resource.record.dal.dataobject.recordapplydetail; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.module.infra.api.file.dto.FileRespDTO; import com.zt.plat.module.qms.core.aspect.annotation.Dict; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -145,6 +147,7 @@ public class RecordApplyDetailDO extends BusinessBaseDO { @TableField(exist = false) private LocalDateTime expirationDate; - + @TableField(exist = false) + private FileRespDTO fileInfo; } \ 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/recordapply/RecordApplyServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapply/RecordApplyServiceImpl.java index 2639f4f8..c0f69df8 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapply/RecordApplyServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapply/RecordApplyServiceImpl.java @@ -20,7 +20,7 @@ import com.zt.plat.module.qms.common.data.service.DataOpinionService; import com.zt.plat.module.qms.common.service.BusinessFileService; import com.zt.plat.module.qms.enums.QmsBpmConstant; import com.zt.plat.module.qms.enums.QmsCommonConstant; -import com.zt.plat.module.qms.resource.record.common.RecordCommonUtils; +import com.zt.plat.module.qms.resource.clientManage.controller.vo.UploadFileVo; import com.zt.plat.module.qms.resource.record.constant.RecordConstants; import com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo.RecordApplyPageReqVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo.RecordApplyRespVO; @@ -29,12 +29,10 @@ import com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail import com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail.vo.RecordApplyDetailSaveReqVO; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordapply.RecordApplyDO; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordapplydetail.RecordApplyDetailDO; -import com.zt.plat.module.qms.resource.record.dal.dataobject.recordcategory.RecordCategoryDO; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordpermission.RecordPermissionDO; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordrecord.RecordRecordDO; import com.zt.plat.module.qms.resource.record.dal.mapper.RecordApplyMapper; import com.zt.plat.module.qms.resource.record.service.recordapplydetail.RecordApplyDetailService; -import com.zt.plat.module.qms.resource.record.service.recordcategory.RecordCategoryService; import com.zt.plat.module.qms.resource.record.service.recordpermission.RecordPermissionService; import com.zt.plat.module.qms.resource.record.service.recordrecord.RecordRecordService; import jakarta.annotation.Resource; @@ -80,9 +78,6 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn @Resource private RecordRecordService recordRecordService; - @Resource - private RecordCategoryService recordCategoryService; - @Resource private RecordPermissionService recordPermissionService; @@ -141,6 +136,9 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn if (RecordConstants.BusinessType.DISTRIBUTION.equals(businessType)) { // 分发单独处理 CommonResult recordApplyRespVOCommonResult = updateDistributionDetail(updateReqVO, recordApplyDO); return recordApplyRespVOCommonResult.getData(); + } else if (RecordConstants.BusinessType.CHANGE_NOTICE.equals(businessType)) { // 修改通知 单独处理 + return updateChangNoticeDetail(updateReqVO, recordApplyDO); +// recordApplyDetailService.deleteRecordApplyDetailByApplyId(applyId); } // 判断更新中的明细是否存在 //判断 detailList 中的数据 和 数据库中 recordApplyDetail 的数据是否一致,如果有相同的,数据保持不变,有新的,则插入; @@ -172,6 +170,31 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn } + // TODO + private RecordApplyRespVO updateChangNoticeDetail(RecordApplySaveReqVO updateReqVO, RecordApplyDO recordApplyDO) { + List files = updateReqVO.getFiles(); + if (ObjectUtils.isEmpty(files)) throw exception0(RECORD_APPLY_NOT_EXISTS.getCode(),"请上传修改通知单文件"); + UploadFileVo fileVo = files.get(0); + String fileId = fileVo.getId(); + Long applyId = recordApplyDO.getId(); + RecordApplyDetailPageReqVO pageReqVO = new RecordApplyDetailPageReqVO(); + pageReqVO.setApplyId(applyId); + pageReqVO.setTargetId(Long.valueOf(fileId)); // 文件id + pageReqVO.setPageSize(-1); + List recordApplyDetailDOS = recordApplyDetailService.selectList(pageReqVO); + if (ObjectUtils.isEmpty(recordApplyDetailDOS)) { + CommonResult applyDetailData = createApplyDetailData(updateReqVO, recordApplyDO); + return applyDetailData.getData(); + } + // 删除ID 不存在的数据 + List detailList = updateReqVO.getDetailList(); + List list = detailList.stream().map(RecordApplyDetailSaveReqVO::getId).toList(); + recordApplyDetailService.deleteNotInDetailIdList(applyId, list, null); + + createApplyDetailData(updateReqVO,recordApplyDO); + return BeanUtils.toBean(updateReqVO, RecordApplyRespVO.class); + } + @Override public void deleteRecordApply(Long id) { // 校验存在 @@ -277,7 +300,7 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn return recordApply; } - //创建临时数据 + //创建申请数据 @Override @Transactional(rollbackFor = Exception.class) public CommonResult createApplyData(RecordApplySaveReqVO param) { @@ -321,6 +344,12 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn Long applyId = recordApply.getId(); // 申请Id detailSaveReqVOList = addRecordSubmitDetail(recordId, applyId); break; + case RecordConstants.BusinessType.CHANGE_NOTICE: // 更改通知单 + List files = param.getFiles(); + if (ObjectUtils.isEmpty(files)) + throw exception0(RECORD_APPLY_NOT_EXISTS.getCode(), "文件通知单数据不能为空"); + detailSaveReqVOList = addChangeNoticeDetail(detailList, files, recordApply); + break; } if (!ObjectUtils.isEmpty(detailSaveReqVOList)) { @@ -333,6 +362,27 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn return CommonResult.success(BeanUtils.toBean(recordApply, RecordApplyRespVO.class)); } + private List addChangeNoticeDetail(List detailReqList, List files, RecordApplyDO applyDO) { + Long applyId = applyDO.getId(); + List detailDOList = BeanUtils.toBean(detailReqList, RecordApplyDetailDO.class); + List newDetailDOList = new ArrayList<>(); + for (RecordApplyDetailDO item : detailDOList){ + if (item.getId() != null) { + item.clean(); + continue; + } + item.setApplyId(applyId); + item.setTargetType(RecordConstants.TargetType.FILE); // 文件 + item.setApplyStartDate(LocalDateTime.now()); + files.forEach(it -> { + item.setTargetId(Long.valueOf(it.getId())); // 文件Id + item.setTargetName(it.getName()); // 文件名称 + }); + newDetailDOList.add(item); + } + return newDetailDOList; + } + // 保存评审明细 public List addReviewDetail(List detailList, RecordApplyDO recordApplyDO) { List detailSaveReqVOList = new ArrayList<>(); @@ -769,6 +819,9 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn case RecordConstants.BusinessType.INVALID: // 作废 -- > 回收权限 recordInvalidFlowStatus(recordApplyDetailDOS); break; + case RecordConstants.BusinessType.CHANGE_NOTICE: // 更改通知单 + // TODO + break; default: throw exception(RECORD_APPLY_NOT_EXISTS, "未知的业务类型"); } 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 d2aa51f1..5247c88b 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 @@ -364,7 +364,7 @@ public class RecordRecordServiceImpl implements RecordRecordService { } else { JSONObject jsonObject = JSONObject.parseObject(customConfig); Integer submitFlag = jsonObject.getInteger("submitFlag"); - if (submitFlag == 0) { // 不需要提交的,判断状态 + if (submitFlag == null || submitFlag == 0) { // 不需要提交的,判断状态 int sts = calculateRecordStatus(effectiveDate, expirationDate); if (sts == 3) recordDO.setExpirationStatus(1); //过期 else recordDO.setRecordStatus(sts); @@ -532,6 +532,10 @@ public class RecordRecordServiceImpl implements RecordRecordService { List categoryIds = selectCategoryIds(categoryId); LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.in(RecordRecordDO::getCategoryId, categoryIds); + if(!ObjectUtils.isEmpty(pageReqVO.getCancelFlag())) // 作废 + lambdaQueryWrapper.eq(RecordRecordDO::getCancelFlag, pageReqVO.getCancelFlag()); + if (!ObjectUtils.isEmpty(pageReqVO.getExpirationStatus())) // 过期 + lambdaQueryWrapper.eq(RecordRecordDO::getExpirationStatus, pageReqVO.getExpirationStatus()); if (!ObjectUtils.isEmpty(pageReqVO.getCurrentFlag())) lambdaQueryWrapper.like(RecordRecordDO::getCurrentFlag, pageReqVO.getCurrentFlag());// 查询最新版本/旧版本 if (!ObjectUtils.isEmpty(pageReqVO.getName()))