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 df2500f2..f850d052 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 @@ -109,4 +109,14 @@ public class RecordConstants { /** 记录 */ public static final String RECORD = "记录"; } + + /** + * 文件分类目录类型 + */ + public static class CategoryType { + /** 分类 */ + public static final String BASE_TYPE = "base_type"; // 基础分类 + /** 记录 */ + public static final String PARTY_BUILD_TYPE = "party_build_type"; // 党建分类 + } } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplyPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplyPageReqVO.java index 16fc366f..bef44c60 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplyPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplyPageReqVO.java @@ -85,6 +85,9 @@ public class RecordApplyPageReqVO extends PageParam { @Schema(description = "备注") private String remark; + @Schema(description = "是否提交") + private Integer isSubmit; + @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplyRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplyRespVO.java index 35d672f2..c255322f 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplyRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplyRespVO.java @@ -116,6 +116,9 @@ public class RecordApplyRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + @Schema(description = "是否提交") + private Integer isSubmit; + // ===================扩展字段========================= @Schema(description = "附件对象") private CommonResult> businessFileRet; 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 5e39f4c8..1562472e 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 @@ -93,6 +93,9 @@ public class RecordApplySaveReqVO { @Schema(description = "流程实例ID") private String flowInstanceId; + @Schema(description = "是否提交") + private Integer isSubmit; + // ============================================ @Schema(description = "上传文件列表") @@ -101,19 +104,19 @@ 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; +// @Schema(description = "文件记录ID") +// private Long recordId; +// +// @Schema(description = "用户IDs") +// private Long[] userIds; +// +// @Schema(description = "用户IDs") +// private Long[] deptIds; private List detailList; - // 分发参数 -// private List targetList; + // 记录Id + private List recordList; } \ 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/recordcategory/RecordCategoryController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordcategory/RecordCategoryController.java index 92797e20..0fc11853 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordcategory/RecordCategoryController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordcategory/RecordCategoryController.java @@ -22,6 +22,7 @@ import io.swagger.v3.oas.annotations.Operation; import jakarta.validation.*; import jakarta.servlet.http.*; + import java.util.*; import java.io.IOException; @@ -30,11 +31,13 @@ import com.zt.plat.framework.common.pojo.PageParam; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.util.object.BeanUtils; + import static com.zt.plat.framework.common.pojo.CommonResult.success; import com.zt.plat.framework.excel.core.util.ExcelUtils; import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; + import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordcategory.RecordCategoryDO; @@ -46,14 +49,14 @@ import com.zt.plat.module.qms.resource.record.service.recordcategory.RecordCateg @Validated @DeptDataPermissionIgnore(enable = "true") @FileUploadController(source = "qms.recordcategory") -public class RecordCategoryController extends AbstractFileUploadController implements BusinessControllerMarker{ +public class RecordCategoryController extends AbstractFileUploadController implements BusinessControllerMarker { private static final Logger log = LoggerFactory.getLogger(RecordCategoryController.class); static { FileUploadController annotation = RecordCategoryController.class.getAnnotation(FileUploadController.class); if (annotation != null) { - setFileUploadInfo(annotation); + setFileUploadInfo(annotation); } } @@ -64,8 +67,8 @@ public class RecordCategoryController extends AbstractFileUploadController imple @Operation(summary = "创建文件记录分类") //@PreAuthorize("@ss.hasPermission('qms:record-category:create')") public CommonResult createRecordCategory(@Valid @RequestBody RecordCategorySaveReqVO createReqVO) { - if (ObjectUtils.isEmpty(createReqVO.getParentId()))createReqVO.setParentId(0L); - if (ObjectUtils.isEmpty(createReqVO.getSortNo()))createReqVO.setSortNo(1); + if (ObjectUtils.isEmpty(createReqVO.getParentId())) createReqVO.setParentId(0L); + if (ObjectUtils.isEmpty(createReqVO.getSortNo())) createReqVO.setSortNo(1); return success(recordCategoryService.createRecordCategory(createReqVO)); } @@ -96,7 +99,7 @@ public class RecordCategoryController extends AbstractFileUploadController imple @DeleteMapping("/delete-list") @Parameter(name = "ids", description = "编号", required = true) @Operation(summary = "批量删除文件记录分类") - //@PreAuthorize("@ss.hasPermission('qms:record-category:delete')") + //@PreAuthorize("@ss.hasPermission('qms:record-category:delete')") public CommonResult deleteRecordCategoryList(@RequestBody BatchDeleteReqVO req) { recordCategoryService.deleteRecordCategoryListByIds(req.getIds()); return success(true); @@ -120,17 +123,29 @@ public class RecordCategoryController extends AbstractFileUploadController imple return success(BeanUtils.toBean(list, RecordCategoryRespVO.class)); } + /* + * 获取指定的分类树 + * 例:党建文件 + */ + @GetMapping("/getAppointCategoryTree") + @Operation(summary = "获得文件记录分类") + //@PreAuthorize("@ss.hasPermission('qms:record-category:query')") + public CommonResult> getAppointCategoryTree(@Valid RecordCategoryPageReqVO pageReqVO) { + List list = recordCategoryService.getRecordCategoryTree(pageReqVO); + return success(BeanUtils.toBean(list, RecordCategoryRespVO.class)); + } + @GetMapping("/export-excel") @Operation(summary = "导出文件记录分类 Excel") //@PreAuthorize("@ss.hasPermission('qms:record-category:export')") @ApiAccessLog(operateType = EXPORT) public void exportRecordCategoryExcel(@Valid RecordCategoryPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { + HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = recordCategoryService.getRecordCategoryPage(pageReqVO).getList(); // 导出 Excel ExcelUtils.write(response, "文件记录分类.xls", "数据", RecordCategoryRespVO.class, - BeanUtils.toBean(list, RecordCategoryRespVO.class)); + BeanUtils.toBean(list, RecordCategoryRespVO.class)); } } \ 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/recordcategory/vo/RecordCategoryPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordcategory/vo/RecordCategoryPageReqVO.java index 861361a2..d7575dbf 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordcategory/vo/RecordCategoryPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordcategory/vo/RecordCategoryPageReqVO.java @@ -57,4 +57,7 @@ public class RecordCategoryPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; +// ===================================== + private String appointFlag; + } \ 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/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 7675f230..abe0edc9 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 @@ -153,6 +153,18 @@ public class RecordRecordController extends AbstractFileUploadController impleme return success(BeanUtils.toBean(result, RecordRecordRespVO.class)); } + /** + * 文件记录提交(不走流程) + */ +// @GetMapping("/recordSubmit") +// @Operation(summary = "获得文件、模板、记录分页") +// //@PreAuthorize("@ss.hasPermission('qms:record-record:query')") +// public CommonResult recordSubmitStatus(RecordRecordPageReqVO pageReqVO) { +// RecordRecordDO bean = BeanUtils.toBean(pageReqVO, RecordRecordDO.class); +// RecordRecordDO recordRecordDO = recordRecordService.recordSubmitStatus(bean); +// return success(BeanUtils.toBean(recordRecordDO, RecordRecordRespVO.class)); +// } + @GetMapping("/selectRecordRecordPage") @Operation(summary = "获得文件、模板、记录分页") //@PreAuthorize("@ss.hasPermission('qms:record-record:query')") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordapply/RecordApplyDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordapply/RecordApplyDO.java index d38d4922..cd35d5fb 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordapply/RecordApplyDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordapply/RecordApplyDO.java @@ -149,6 +149,9 @@ public class RecordApplyDO extends BusinessBaseDO { @TableField("RMK") private String remark; + @TableField("IS_SBM") + private Integer isSubmit; + // =========临时字段======== @TableField(exist = false) private LocalDateTime expirationDate; // TODO diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/mapper/RecordCategoryMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/mapper/RecordCategoryMapper.java index 445d3114..d76c2715 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/mapper/RecordCategoryMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/mapper/RecordCategoryMapper.java @@ -6,8 +6,11 @@ import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.module.qms.resource.record.controller.admin.recordcategory.vo.RecordCategoryPageReqVO; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordcategory.RecordCategoryDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** * 文件记录分类 Mapper * @@ -44,4 +47,16 @@ public interface RecordCategoryMapper extends BaseMapperX { @Select("SELECT * FROM t_rcd_ctgr WHERE deleted = 0 AND id = #{categoryRootId} AND JSON_VALUE(CST_CFG, '$.appraisalFlag') = '1'") RecordCategoryDO selectCategoryAppraisalDO(Long categoryRootId); + /** + * 通过查询 JSON 字段(CST_CFG)中指定字段的值,获取指定 ID 的分类记录 + * 例:1,"$.appraisalFlag", "1" + * @param categoryRootId + * @param jsonKey + * @param jsonValue + * @return + */ +// @Select("SELECT * FROM t_rcd_ctgr WHERE deleted = 0 AND id = #{categoryRootId} AND JSON_VALUE(CST_CFG, #{jsonKey}) = #{jsonValue}") + List selectCategoryByJsonField(@Param("categoryRootId") Long categoryRootId, @Param("jsonKey") String jsonKey, @Param("jsonValue") String jsonValue); + + } \ 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 ed5be635..2639f4f8 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 @@ -98,22 +98,30 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn return BeanUtils.toBean(recordApply, RecordApplyRespVO.class); } - public boolean updateDistributionDetail(RecordApplySaveReqVO param, RecordApplySaveReqVO updateReqVO, RecordApplyDO recordApplyDO) { + public CommonResult updateDistributionDetail(RecordApplySaveReqVO updateReqVO, RecordApplyDO recordApplyDO) { Long applyId = updateReqVO.getId(); - List detailList = param.getDetailList(); + List detailList = updateReqVO.getDetailList(); List recordApplyDetailDOS = recordApplyDetailService.selectAllList(applyId); if (!ObjectUtils.isEmpty(recordApplyDetailDOS)) { - Long documentId = recordApplyDetailDOS.get(0).getDocumentId(); + // 删除所有详情 +// recordApplyDetailService.deleteRecordApplyDetailByApplyId(applyId); + // 删除不需要的明细数据--->通过 申请Id 和 记录 id + List recordList = updateReqVO.getRecordList(); + List detailIds = detailList.stream().map(RecordApplyDetailSaveReqVO::getId).toList(); + recordApplyDetailService.deleteNotInDetailIdList(applyId, null, recordList); //先删除记录 + recordApplyDetailService.deleteNotInDetailIdList(applyId, detailIds, null); // 在删除不需要的明细数据 + CommonResult applyDetailData = createApplyDetailData(updateReqVO, recordApplyDO); +// Long documentId = recordApplyDetailDOS.get(0).getDocumentId(); // 判断文件是否改变 - Long newDocumentId = detailList.get(0).getDocumentId(); - if (!documentId.equals(newDocumentId)) { // 删除重新添加 - List deleteFileIdList = recordApplyDetailDOS.stream().map(RecordApplyDetailDO::getId).toList(); - recordApplyDetailService.deleteRecordApplyDetailListByIds(deleteFileIdList); - createApplyDetailData(updateReqVO, recordApplyDO); - return true; - } +// Long newDocumentId = detailList.get(0).getDocumentId(); +// if (!documentId.equals(newDocumentId)) { // 删除重新添加 +// List deleteFileIdList = recordApplyDetailDOS.stream().map(RecordApplyDetailDO::getId).toList(); +// recordApplyDetailService.deleteRecordApplyDetailListByIds(deleteFileIdList); +// return true; +// } + return applyDetailData; } - return false; + return new CommonResult(); } @Override @@ -128,10 +136,11 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn RecordApplyDO updateObj = BeanUtils.toBean(updateReqVO, RecordApplyDO.class); List detailList = updateObj.getDetailList(); // 查询所有明细 + recordApplyMapper.updateById(updateObj); String businessType = recordApplyDO.getBusinessType(); - if (RecordConstants.BusinessType.DISTRIBUTION.equals(businessType)) { - boolean b = updateDistributionDetail(updateReqVO, updateReqVO, recordApplyDO); - if (b) return BeanUtils.toBean(recordApplyDO, RecordApplyRespVO.class); + if (RecordConstants.BusinessType.DISTRIBUTION.equals(businessType)) { // 分发单独处理 + CommonResult recordApplyRespVOCommonResult = updateDistributionDetail(updateReqVO, recordApplyDO); + return recordApplyRespVOCommonResult.getData(); } // 判断更新中的明细是否存在 //判断 detailList 中的数据 和 数据库中 recordApplyDetail 的数据是否一致,如果有相同的,数据保持不变,有新的,则插入; @@ -145,11 +154,11 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn newDetailList.add(item); // 新数据 } }); - List deleteDetailAllList = recordApplyDetailService.selectNotInDetailIdList(applyId, detailIds); - if (!ObjectUtils.isEmpty(deleteDetailAllList)) { - List deleteDetailIds = deleteDetailAllList.stream().map(RecordApplyDetailDO::getId).toList(); - recordApplyDetailService.deleteRecordApplyDetailListByIds(deleteDetailIds); - } + recordApplyDetailService.deleteNotInDetailIdList(applyId, null, detailIds); +// if (!ObjectUtils.isEmpty(deleteDetailAllList)) { +// List deleteDetailIds = deleteDetailAllList.stream().map(RecordApplyDetailDO::getId).toList(); +// recordApplyDetailService.deleteRecordApplyDetailListByIds(deleteDetailIds); +// } // 更新 if (!ObjectUtils.isEmpty(newDetailList)) { recordApplyDetailService.createRecordApplyDetailBatch(newDetailList); @@ -157,8 +166,6 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn updateReqVO.setBusinessType(businessType); - recordApplyMapper.updateById(updateObj); - businessFileService.deleteBusinessFileList(updateReqVO.getDeleteFileIdList()); return BeanUtils.toBean(updateReqVO, RecordApplyRespVO.class); @@ -200,10 +207,41 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn if (ObjectUtils.isEmpty(recordApplyDO)) return recordApplyDO; List recordApplyDetailDOS; recordApplyDetailDOS = recordApplyDetailService.selectAllList(id); + String businessType = recordApplyDO.getBusinessType(); + if (RecordConstants.BusinessType.DISTRIBUTION.equals(businessType)) { //处理分发数据 + // 明细中如果有相同名称和ID 的数据,只需要一条,默认保存第一条,通过 targetType 和 targetId 判断 + Map distributionDetailData = getDistributionDetailData(recordApplyDetailDOS); + recordApplyDetailDOS = new ArrayList<>(distributionDetailData.values()); + } recordApplyDO.setDetailList(recordApplyDetailDOS); return recordApplyDO; } + // 获取分发明细数据,处理重复数据 + public Map getDistributionDetailData(List recordApplyDetailDOS) { + Map uniqueMap = new LinkedHashMap<>(); + for (RecordApplyDetailDO detail : recordApplyDetailDOS) { + String key = detail.getTargetType() + "_" + detail.getTargetId(); + RecordApplyDetailDO existing = uniqueMap.get(key); + + if (existing == null) { + // 第一次遇到这个 key,直接放入 + uniqueMap.put(key, detail); + } else { + // 已存在相同的 key,判断是否需要替换 + boolean currentIsSaveFlag1 = !ObjectUtils.isEmpty(detail.getSaveFlag()) && detail.getSaveFlag().equals("1"); + boolean existingIsSaveFlag1 = !ObjectUtils.isEmpty(existing.getSaveFlag()) && existing.getSaveFlag().equals("1"); + + // 如果当前数据是 saveFlag='1' 且已存在的不是,则替换 + if (currentIsSaveFlag1 && !existingIsSaveFlag1) { + uniqueMap.put(key, detail); + } + // 其他情况保持原有数据不变 + } + } + return uniqueMap; + } + @Override public PageResult getRecordApplyPage(RecordApplyPageReqVO pageReqVO) { pageReqVO.setApplyUserId(SecurityFrameworkUtils.getLoginUserId()); @@ -213,7 +251,7 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn // 创建申请数据 public RecordApplyDO createApply(RecordApplySaveReqVO param) { RecordApplyDO recordApply = BeanUtils.toBean(param, RecordApplyDO.class); - recordApply.setBusinessStatus(QmsCommonConstant.NOT_START); // 未发起 + recordApply.setBusinessStatus(QmsCommonConstant.NOT_START); // 待提交 recordApply.setApplyStartDate(LocalDateTime.now()); // 申请开始时间 String businessType = param.getBusinessType(); //取当前用户 @@ -266,7 +304,8 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn detailSaveReqVOList = addReviewDetail(detailList, recordApply); break; case RecordConstants.BusinessType.DISTRIBUTION: // 分发 - detailSaveReqVOList = addDistributionDetail(detailList, recordApply); + List recordList = param.getRecordList(); + detailSaveReqVOList = addDistributionDetail(detailList, recordList, recordApply); break; case RecordConstants.BusinessType.RECORD_UPDATE: // 更改申请 detailSaveReqVOList = addUpdateDetail(detailList, recordApply); @@ -284,11 +323,12 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn break; } - if (ObjectUtils.isEmpty(detailSaveReqVOList)) - throw exception0(RECORD_APPLY_NOT_EXISTS.getCode(), "没有找到文件记录数据"); - boolean recordApplyDetailBatch = recordApplyDetailService.createRecordApplyDetailBatch(detailSaveReqVOList); - if (!recordApplyDetailBatch) - throw exception0(RECORD_APPLY_NOT_EXISTS.getCode(), "保存申请明细失败"); + if (!ObjectUtils.isEmpty(detailSaveReqVOList)) { +// throw exception0(RECORD_APPLY_NOT_EXISTS.getCode(), "没有找到文件记录数据"); + boolean recordApplyDetailBatch = recordApplyDetailService.createRecordApplyDetailBatch(detailSaveReqVOList); + if (!recordApplyDetailBatch) + throw exception0(RECORD_APPLY_NOT_EXISTS.getCode(), "保存申请明细失败"); + } return CommonResult.success(BeanUtils.toBean(recordApply, RecordApplyRespVO.class)); } @@ -312,16 +352,35 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn } // 添加分发明细 - public List addDistributionDetail(List detailList, RecordApplyDO recordApplyDO) { + public List addDistributionDetail(List detailList, List recordList, RecordApplyDO recordApplyDO) { if (ObjectUtils.isEmpty(detailList)) throw exception0(RECORD_APPLY_DETAIL_NOT_EXISTS.getCode(), "申请明细不存在"); + if (ObjectUtils.isEmpty(recordList)) + throw exception0(RECORD_APPLY_DETAIL_NOT_EXISTS.getCode(), "分发文件不存在"); + List detailSaveReqVOList = new ArrayList<>(); + List detailUpdateReqVOList = new ArrayList<>(); for (RecordApplyDetailSaveReqVO item : detailList) { - item.setId(null); // 更新使用 - item.setApplyId(recordApplyDO.getId()); - item.setApplyStartDate(LocalDateTime.now()); + for (Long recordId : recordList) { + if (item.getId() != null && Objects.equals(item.getDocumentId(), recordId)) { + detailUpdateReqVOList.add(item); + continue; + } + // 创建新对象,避免引用问题 + RecordApplyDetailSaveReqVO newItem = new RecordApplyDetailSaveReqVO(); + BeanUtils.copyProperties(item, newItem); + newItem.setId(null); // 更新使用 + newItem.setDocumentId(recordId); + newItem.setApplyId(recordApplyDO.getId()); + newItem.setApplyStartDate(LocalDateTime.now()); + detailSaveReqVOList.add(newItem); + } } - List bean = BeanUtils.toBean(detailList, RecordApplyDetailDO.class); + // 更新明细 + if (!ObjectUtils.isEmpty(detailUpdateReqVOList)) { + recordApplyDetailService.updateRecordApplyDetailBatch(detailUpdateReqVOList); + } + List bean = BeanUtils.toBean(detailSaveReqVOList, RecordApplyDetailDO.class); return bean; } @@ -398,48 +457,54 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn Integer recordStatus = recordDO.getRecordStatus(); if (recordStatus != null && recordStatus == 1) throw exception0(RECORD_APPLY_NOT_EXISTS.getCode(), "文件已提交,无法提交申请"); - RecordCategoryDO recordCategory = recordCategoryService.getRecordCategory(recordDO.getCategoryId()); +// RecordCategoryDO recordCategory = recordCategoryService.getRecordCategory(recordDO.getCategoryId()); // 获取分类的根分类Id - String idPath = recordCategory.getIdPath(); - Optional segment = RecordCommonUtils.getSegment(idPath, 1); - String s = segment.orElse(null); - if (ObjectUtils.isEmpty(s)) - throw exception(RECORD_APPLY_NOT_EXISTS); - RecordCategoryDO category = recordCategoryService.getRecordCategory(Long.valueOf(s)); - String customConfig = category.getCustomConfig(); - if (ObjectUtils.isEmpty(customConfig)) { // 空,直接判断是否到生效日期 - // 判断是否到生效日期 - RecordRecordDO effectiveRecordRecordDO = isEffective(recordDO); - recordRecordService.updateRecordRecordById(effectiveRecordRecordDO); - return true; - } - JSONObject jsonObject = JSONObject.parseObject(customConfig); - Integer submitFlag = jsonObject.getInteger("submitFlag"); - if (submitFlag == 0) { - // 不允许提交,直接修改文件记录状态 -// recordDO.setRecordStatus(1); // 已生效 - RecordRecordDO effectiveRecordRecordDO = isEffective(recordDO); - recordRecordService.updateRecordRecordById(effectiveRecordRecordDO); - return true; - } else { // 需要走流程 - recordDO.setSubmitFlag(1); - recordDO.setRecordStatus(0); - recordRecordService.updateRecordRecordById(recordDO); - } +// String idPath = recordCategory.getIdPath(); +// Optional segment = RecordCommonUtils.getSegment(idPath, 1); +// String s = segment.orElse(null); +// if (ObjectUtils.isEmpty(s)) +// throw exception(RECORD_APPLY_NOT_EXISTS); +// RecordCategoryDO category = recordCategoryService.getRecordCategory(Long.valueOf(s)); +// String customConfig = category.getCustomConfig(); +// if (ObjectUtils.isEmpty(customConfig)) { // 空,直接判断是否到生效日期 +// // 判断是否到生效日期 +// RecordRecordDO effectiveRecordRecordDO = isEffective(recordDO); +// recordRecordService.updateRecordRecordById(effectiveRecordRecordDO); +// return true; +// } +// JSONObject jsonObject = JSONObject.parseObject(customConfig); +// Integer submitFlag = jsonObject.getInteger("submitFlag"); +// if (submitFlag == 0) { + // 不允许提交,直接修改文件记录状态 + RecordRecordDO effectiveRecordRecordDO = isEffective(recordDO); + recordRecordService.updateRecordRecordById(effectiveRecordRecordDO); + return true; +// } else { // 需要走流程 +// recordDO.setSubmitFlag(1); +// recordDO.setRecordStatus(0); +// recordRecordService.updateRecordRecordById(recordDO); +// } - return false; +// return false; } // 判断文件记录生效状态 public RecordRecordDO isEffective(RecordRecordDO recordDO) { - LocalDateTime effectiveDate = recordDO.getEffectiveDate(); + LocalDateTime effectiveDate = recordDO.getEffectiveDate(); // 生效日期 + LocalDateTime expirationDate = recordDO.getExpirationDate(); // 过期日期 + LocalDateTime now = LocalDateTime.now(); + if (effectiveDate == null) { // 没有生效日期,立即生效 recordDO.setRecordStatus(1); } else { recordDO.setRecordStatus(0); // 待生效 - LocalDateTime now = LocalDateTime.now(); if (now.isAfter(effectiveDate) || now.isEqual(effectiveDate)) { recordDO.setRecordStatus(1); // 已生效 + // 已到生效日期,检查是否过期 + if (expirationDate != null && (now.isAfter(expirationDate))) { + recordDO.setRecordStatus(0); // 过期, 未生效 + recordDO.setExpirationStatus(1); + } } } return recordDO; @@ -468,7 +533,6 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn String nickName = SecurityFrameworkUtils.getLoginUserNickname(); Long applyId = param.getId(); // 申请Id String paramBusinessType = param.getBusinessType(); - RecordApplyDO recordApplyDO; if (!ObjectUtils.isEmpty(paramBusinessType) && paramBusinessType.equals(RecordConstants.BusinessType.RECORD_SUBMIT)) { // 创建申请记录 CommonResult applyData = createApplyData(param); @@ -476,8 +540,15 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn } if (ObjectUtils.isEmpty(applyId)) throw exception0(RECORD_RECORD_NOT_EXISTS.getCode(), "申请记录不存在"); - recordApplyDO = recordApplyMapper.selectById(applyId); + RecordApplyDO recordApplyDO = recordApplyMapper.selectById(applyId); + // TODO // 提交,不需要走流程 + Integer isSubmit = param.getIsSubmit(); + if (!ObjectUtils.isEmpty(isSubmit) && isSubmit == 1) { + RecordApplyDO applyDO = applySubmitStatus(recordApplyDO); + return CommonResult.success(BeanUtils.toBean(applyDO, RecordApplyRespVO.class)); + } + // TODO =============== 流程 JSONObject formData = new JSONObject(); BpmProcessInstanceCreateReqDTO reqDTO = new BpmProcessInstanceCreateReqDTO(); @@ -560,6 +631,20 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn return CommonResult.success(BeanUtils.toBean(recordApplyDO, RecordApplyRespVO.class)); } + // 提交申请-不需要发起流程 + public RecordApplyDO applySubmitStatus(RecordApplyDO recordApplyDO) { + String businessType = recordApplyDO.getBusinessType(); + Long id = recordApplyDO.getId(); + List recordApplyDetailDOS = recordApplyDetailService.selectList(new RecordApplyDetailPageReqVO().setApplyId(id)); + processHandle(businessType, recordApplyDetailDOS); + + // 更新申请提交状态 + recordApplyDO.setIsSubmit(1); + recordApplyDO.setBusinessStatus(QmsCommonConstant.SUBMITTED); + recordApplyMapper.updateById(recordApplyDO); + return recordApplyDO; + } + //流程回调 @Override @Transactional(rollbackFor = Exception.class) @@ -670,7 +755,7 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn recordSubmitCallHandle(recordApplyDetailDOS); break; case RecordConstants.BusinessType.REVIEW: // 评审 - reviewCallHandle(recordApplyDetailDOS); +// reviewCallHandle(recordApplyDetailDOS); // 暂时不处理 break; case RecordConstants.BusinessType.DISTRIBUTION: // 分发 recordPermissionAdd(recordApplyDetailDOS, businessType); @@ -698,7 +783,19 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn RecordRecordDO effectiveRecordRecordDO = isEffective(entity); effectiveRecordRecordDO.setApplyStatus(QmsCommonConstant.COMPLETED); // 审批完成 // 修改状态 + effectiveRecordRecordDO.setSubmitFlag(1); recordApplyFlowStatus(effectiveRecordRecordDO); + + // 如果文件生效, 作废老版本文件 + Integer recordStatus = effectiveRecordRecordDO.getRecordStatus(); + if (recordStatus == 0) return; + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper(); + updateWrapper.eq(RecordRecordDO::getMainId, entity.getMainId()); // 所有版本 + updateWrapper.eq(RecordRecordDO::getCurrentFlag, 0); // 旧版本 + updateWrapper.eq(RecordRecordDO::getCancelFlag, 0); //未作废的 + updateWrapper.set(RecordRecordDO::getCancelFlag, 1); // 作废 + updateWrapper.set(RecordRecordDO::getRecordStatus, 0); // 无效 + recordRecordService.updateRecord(updateWrapper); } // 评审通过,处理修改修改的文件,走更改申请流程 @@ -720,7 +817,6 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn JSONObject formDataJson = JSONObject.parseObject(formData); // 把documentId 存到 formDataJson 中key = id 的里面 formDataJson.put("id", documentId.toString()); -// detailDO.setFormData(formDataJson.toJSONString()); detailDOList.add(detailDO); // 创建更改申请 RecordApplySaveReqVO recordApplyRespVO = new RecordApplySaveReqVO(); @@ -802,8 +898,11 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn // 添加记录 RecordPermissionDO permissionDO = new RecordPermissionDO(); String targetType = applyDetailDO.getTargetType(); - permissionDO.setSaveFlag("0"); - if (businessType.equals(RecordConstants.BusinessType.VIEW_APPLY)){ + String saveFlag = applyDetailDO.getSaveFlag(); + + if (ObjectUtils.isEmpty(saveFlag)) permissionDO.setSaveFlag("0"); // 默认不保留 + else permissionDO.setSaveFlag(saveFlag); + if (businessType.equals(RecordConstants.BusinessType.VIEW_APPLY)) { targetType = RecordConstants.TargetType.USER; permissionDO.setSaveFlag("1"); // 文件查看使用 } @@ -836,7 +935,7 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn } //处理权限 - private void handleRecordPermission(List permissionDOList,String businessType) { + private void handleRecordPermission(List permissionDOList, String businessType) { // 判断是否重复 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(RecordPermissionDO::getApplyType, businessType); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapplydetail/RecordApplyDetailService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapplydetail/RecordApplyDetailService.java index 956b889b..ea677421 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapplydetail/RecordApplyDetailService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapplydetail/RecordApplyDetailService.java @@ -83,6 +83,9 @@ public interface RecordApplyDetailService { PageResult selectDetailAndApplyList(RecordApplyDetailPageReqVO reqVO); - List selectNotInDetailIdList(Long applyId,List detailIds); + List selectNotInDetailIdList(Long applyId, String type, List targetIds); + Integer deleteNotInDetailIdList(Long applyId, List detailIds, List recordIds); + + boolean updateRecordApplyDetailBatch(List detailUpdateReqVOList); } \ 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/recordapplydetail/RecordApplyDetailServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapplydetail/RecordApplyDetailServiceImpl.java index 61df9609..ca9a4250 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapplydetail/RecordApplyDetailServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapplydetail/RecordApplyDetailServiceImpl.java @@ -137,12 +137,42 @@ public class RecordApplyDetailServiceImpl implements RecordApplyDetailService { return new PageResult<>(recordApplyDetailJoinVOIPage.getRecords(), recordApplyDetailJoinVOIPage.getTotal()); } + /** + * 查询非指定明细Id/记录 数据 + * @param applyId + * @param type + * @param targetIds + * @return + */ @Override - public List selectNotInDetailIdList(Long applyId, List detailIds) { + public List selectNotInDetailIdList(Long applyId, String type, List targetIds) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(RecordApplyDetailDO::getApplyId, applyId); + if (type.equals("detailId")) queryWrapper.notIn(RecordApplyDetailDO::getId, targetIds); + if (type.equals("recordId")) queryWrapper.notIn(RecordApplyDetailDO::getDocumentId, targetIds); + return recordApplyDetailMapper.selectList(queryWrapper); + } + + /** + * 删除非指定明细Id/记录 数据 + * @param applyId + * @param detailIds + * @param recordIds + * @return + */ + @Override + public Integer deleteNotInDetailIdList(Long applyId, List detailIds, List recordIds) { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(RecordApplyDetailDO::getApplyId, applyId); if (!ObjectUtils.isEmpty(detailIds)) queryWrapper.notIn(RecordApplyDetailDO::getId, detailIds); - return recordApplyDetailMapper.selectList(queryWrapper); + if (!ObjectUtils.isEmpty(recordIds)) queryWrapper.notIn(RecordApplyDetailDO::getDocumentId, recordIds); + return recordApplyDetailMapper.delete(queryWrapper); + } + + @Override + public boolean updateRecordApplyDetailBatch(List detailUpdateReqVOList) { + List bean = BeanUtils.toBean(detailUpdateReqVOList, RecordApplyDetailDO.class); + return recordApplyDetailMapper.updateBatch(bean); } 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 034f945d..9f7b0708 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 @@ -71,9 +71,6 @@ public class RecordCategoryServiceImpl implements RecordCategoryService { @Override public RecordCategoryDO selectCategoryAppraisalDO(Long categoryRootId) { -// LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); -// queryWrapper.like(RecordCategoryDO::getCustomConfig,"%" + appraisalFlag + "%"); -// if (categoryRootId != null) queryWrapper.eq(RecordCategoryDO::getId, categoryRootId); return recordCategoryMapper.selectCategoryAppraisalDO(categoryRootId); } @@ -214,13 +211,6 @@ public class RecordCategoryServiceImpl implements RecordCategoryService { public List getRecordCategoryTree(RecordCategoryPageReqVO pageReqVO) { pageReqVO.setPageSize(999); pageReqVO.setPageNo(1); -// LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); -// queryWrapper.orderByAsc(RecordCategoryDO::getSortNo); // 升序 -// String name = pageReqVO.getName(); -// if (!ObjectUtils.isEmpty(name)) queryWrapper.eq(RecordCategoryDO::getName, name); - // 需要过滤name=null和""的情况 -// queryWrapper.isNotNull(RecordCategoryDO::getName); // 排除 name 为 NULL 的数据 -// queryWrapper.ne(RecordCategoryDO::getName, ""); // 排除 name 为空字符串的数据 pageReqVO.setCancelFlag("1"); PageResult recordCategoryDOPageResult = recordCategoryMapper.selectPage(pageReqVO); return recordCategoryDOPageResult.getList(); 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 923a225a..66e9e77f 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 @@ -82,6 +82,8 @@ public interface RecordRecordService { void updateRecordRecordListByIds(List recordRecordDOS); +// RecordRecordDO recordSubmitStatus(RecordRecordDO recordDO); + // List getRecordList(RecordRecordPageReqVO pageReqVO); /** 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 6712f090..d2aa51f1 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 @@ -167,12 +167,13 @@ public class RecordRecordServiceImpl implements RecordRecordService { public RecordRecordRespVO saveDataWithNewVersion(RecordRecordDO createReqVO) { RecordRecordDO recordRecordDO = BeanUtils.toBean(createReqVO, RecordRecordDO.class); - recordRecordDO.setCurrentFlag(0); + Long oldId = recordRecordDO.getId(); +// recordRecordDO.setCurrentFlag(0); try { - 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); +// 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.setExpirationStatus(0); // 0-正常,1-过期 recordRecordDO = judgeRootCategoryJson(recordRecordDO); @@ -183,6 +184,15 @@ public class RecordRecordServiceImpl implements RecordRecordService { recordRecordDO.setVersion(recordRecordDO.getNewVersion());// 新版本号 recordRecordMapper.insert(recordRecordDO); + // 根据新版本文件的有效状态,来处理旧版本 + Integer recordStatus = recordRecordDO.getRecordStatus(); + RecordRecordDO oldRecordRecordDO = new RecordRecordDO(); + oldRecordRecordDO.setId(oldId); + oldRecordRecordDO.setCurrentFlag(0);// 旧版本 + if (recordStatus == 1) { // 作废旧版本文件 + oldRecordRecordDO.setCancelFlag(1); // 作废 + } + recordRecordMapper.updateById(oldRecordRecordDO); // 添加文件记录附件 createFileAttachment(createReqVO.getFiles(), recordRecordDO.getId()); // 返回 @@ -279,57 +289,60 @@ public class RecordRecordServiceImpl implements RecordRecordService { // return BeanUtils.toBean(recordRecordList, RecordRecordRespVO.class); // // } + // 文件提交,修改生效状态 - public void recordSubmitStatus(RecordRecordDO recordDO) { - Integer recordStatus = recordDO.getRecordStatus(); - if (recordStatus != null && recordStatus == 1) - throw exception0(RECORD_APPLY_NOT_EXISTS.getCode(), "文件已提交,无法提交申请"); -// RecordCategoryDO recordCategory = recordCategoryService.getRecordCategory(recordDO.getCategoryId()); - // 获取分类的根分类Id -// String idPath = recordCategory.getIdPath(); -// Optional segment = RecordCommonUtils.getSegment(idPath, 1); -// String s = segment.orElse(null); -// if (ObjectUtils.isEmpty(s)) -// throw exception(RECORD_APPLY_NOT_EXISTS); -// RecordCategoryDO category = recordCategoryService.getRecordCategory(Long.valueOf(s)); -// String customConfig = category.getCustomConfig(); -// if (ObjectUtils.isEmpty(customConfig)) { // 空,直接判断是否到生效日期 - // 判断是否到生效日期 -// RecordRecordDO effectiveRecordRecordDO = isEffective(recordDO); -// this.updateRecordRecordById(effectiveRecordRecordDO); -// return true; +// @Override +// public RecordRecordDO recordSubmitStatus(RecordRecordDO recordDO) { +// Integer recordStatus = recordDO.getRecordStatus(); +// if (recordStatus != null && recordStatus == 1) +// throw exception0(RECORD_APPLY_NOT_EXISTS.getCode(), "文件已提交,无法提交申请"); +//// RecordCategoryDO recordCategory = recordCategoryService.getRecordCategory(recordDO.getCategoryId()); +// // 获取分类的根分类Id +//// String idPath = recordCategory.getIdPath(); +//// Optional segment = RecordCommonUtils.getSegment(idPath, 1); +//// String s = segment.orElse(null); +//// if (ObjectUtils.isEmpty(s)) +//// throw exception(RECORD_APPLY_NOT_EXISTS); +//// RecordCategoryDO category = recordCategoryService.getRecordCategory(Long.valueOf(s)); +//// String customConfig = category.getCustomConfig(); +//// if (ObjectUtils.isEmpty(customConfig)) { // 空,直接判断是否到生效日期 +// // 判断是否到生效日期 +//// RecordRecordDO effectiveRecordRecordDO = isEffective(recordDO); +//// this.updateRecordRecordById(effectiveRecordRecordDO); +//// return true; +//// } +//// JSONObject jsonObject = JSONObject.parseObject(customConfig); +//// Integer submitFlag = jsonObject.getInteger("submitFlag"); +//// if (submitFlag == 0) { +// // 不允许提交,直接修改文件记录状态 +//// recordDO.setRecordStatus(1); // 已生效 +// RecordRecordDO effectiveRecordRecordDO = isEffective(recordDO); +// this.updateRecordRecordById(effectiveRecordRecordDO); +// return effectiveRecordRecordDO; +//// return true; +//// } else { // 需要走流程 +//// recordDO.setSubmitFlag(1); +//// recordDO.setRecordStatus(0); +//// this.updateRecordRecordById(recordDO); +//// } +// +//// return false; +// } +// +// // 判断文件记录生效状态 +// public RecordRecordDO isEffective(RecordRecordDO recordDO) { +// LocalDateTime effectiveDate = recordDO.getEffectiveDate(); +// if (effectiveDate == null) { // 没有生效日期,立即生效 +// recordDO.setRecordStatus(1); +// } else { +// recordDO.setRecordStatus(0); // 待生效 +// LocalDateTime now = LocalDateTime.now(); +// if (now.isAfter(effectiveDate) || now.isEqual(effectiveDate)) { +// recordDO.setRecordStatus(1); // 已生效 +// } // } -// JSONObject jsonObject = JSONObject.parseObject(customConfig); -// Integer submitFlag = jsonObject.getInteger("submitFlag"); -// if (submitFlag == 0) { - // 不允许提交,直接修改文件记录状态 -// recordDO.setRecordStatus(1); // 已生效 - RecordRecordDO effectiveRecordRecordDO = isEffective(recordDO); - this.updateRecordRecordById(effectiveRecordRecordDO); -// return true; -// } else { // 需要走流程 -// recordDO.setSubmitFlag(1); -// recordDO.setRecordStatus(0); -// this.updateRecordRecordById(recordDO); -// } - -// return false; - } - - // 判断文件记录生效状态 - public RecordRecordDO isEffective(RecordRecordDO recordDO) { - LocalDateTime effectiveDate = recordDO.getEffectiveDate(); - if (effectiveDate == null) { // 没有生效日期,立即生效 - recordDO.setRecordStatus(1); - } else { - recordDO.setRecordStatus(0); // 待生效 - LocalDateTime now = LocalDateTime.now(); - if (now.isAfter(effectiveDate) || now.isEqual(effectiveDate)) { - recordDO.setRecordStatus(1); // 已生效 - } - } - return recordDO; - } +// return recordDO; +// } //通过跟分类的自定义属性判断文件状态 @@ -379,10 +392,10 @@ public class RecordRecordServiceImpl implements RecordRecordService { createFileAttachment(files, updateObj.getId()); } else {// 新版本 // 是否回收 - Integer collectionFlag = updateReqVO.getCollectionFlag(); - if (collectionFlag != null && collectionFlag == 1) { // 不为null, 回收旧版本权限 - recordPermissionRecycle(updateObj.getId()); - } +// Integer collectionFlag = updateReqVO.getCollectionFlag(); +// if (collectionFlag != null && collectionFlag == 1) { // 不为null, 回收旧版本权限 + recordPermissionRecycle(updateObj.getId()); // 回收旧版本权限 +// } // 创建新版本 return saveDataWithNewVersion(updateObj); } @@ -603,32 +616,52 @@ public class RecordRecordServiceImpl implements RecordRecordService { * 定时任务:将生效日期已到的,并且是有效的记录状态,更新为已生效(recordStatus = 1) * 筛选条件:effectiveDate <= 当前时间 <= 过期日期 且 recordStatus != 1 */ + @Transactional(rollbackFor = Exception.class) @Override public Integer updateRecordStatus() { + RecordRecordDO recordDO = new RecordRecordDO(); // 查询审批之后待生效的记录 + recordDO.setSubmitFlag(0); + List recordRecordDOS = updateSubmitEffectRecordStatus(recordDO);// 不需要提交 +// 去除上一个的条件 +// lambdaUpdateWrapper.eq(RecordRecordDO::getSubmitFlag, 0).clear(); + recordDO.setSubmitFlag(1); + recordDO.setApplyStatus(QmsCommonConstant.COMPLETED); + List recordRecordDOList = updateSubmitEffectRecordStatus(recordDO);// 需要提交 + + // 新文件生效,作废旧版本文件 + recordRecordDOS.addAll(recordRecordDOList); + List mainIds = recordRecordDOS.stream().map(RecordRecordDO::getMainId).toList(); LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); - lambdaUpdateWrapper.eq(RecordRecordDO::getRecordStatus, 0); // 待生效 - lambdaUpdateWrapper.lt(RecordRecordDO::getEffectiveDate, LocalDateTime.now()); - lambdaUpdateWrapper.ge(RecordRecordDO::getExpirationDate, LocalDateTime.now()); - lambdaUpdateWrapper.set(RecordRecordDO::getRecordStatus, 1); - Integer notSubmitNum = updateNotSubmitEffectRecordStatus(lambdaUpdateWrapper); // 不需要提交 - // 去除上一个的条件 - lambdaUpdateWrapper.eq(RecordRecordDO::getSubmitFlag, 0).clear(); - Integer submitNum = updateSubmitEffectRecordStatus(lambdaUpdateWrapper); // 需要提交 - return notSubmitNum + submitNum; + lambdaUpdateWrapper.in(RecordRecordDO::getMainId, mainIds); // 所有版本 + lambdaUpdateWrapper.eq(RecordRecordDO::getCurrentFlag, 0); // 旧版本 + lambdaUpdateWrapper.eq(RecordRecordDO::getCancelFlag, 0); //未作废的 + lambdaUpdateWrapper.set(RecordRecordDO::getCancelFlag, 1); // 作废 + lambdaUpdateWrapper.set(RecordRecordDO::getRecordStatus, 0); // 无效 + recordRecordMapper.update(lambdaUpdateWrapper); + + + return recordRecordDOS.size(); } // 跟新不需要提交,文件记录生效状态 - public Integer updateNotSubmitEffectRecordStatus(LambdaUpdateWrapper lambdaUpdateWrapper) { - lambdaUpdateWrapper.eq(RecordRecordDO::getSubmitFlag, 0); - return recordRecordMapper.update(lambdaUpdateWrapper); - } +// public Integer updateNotSubmitEffectRecordStatus(LambdaUpdateWrapper lambdaUpdateWrapper) { +// lambdaUpdateWrapper.eq(RecordRecordDO::getSubmitFlag, 0); +// return recordRecordMapper.update(lambdaUpdateWrapper); +// } // 跟新不需要提交,文件记录生效状态 - public Integer updateSubmitEffectRecordStatus(LambdaUpdateWrapper lambdaUpdateWrapper) { - lambdaUpdateWrapper.eq(RecordRecordDO::getSubmitFlag, 1); - lambdaUpdateWrapper.eq(RecordRecordDO::getApplyStatus, QmsCommonConstant.COMPLETED); // 审核完成的 - return recordRecordMapper.update(lambdaUpdateWrapper); + public List updateSubmitEffectRecordStatus(RecordRecordDO recordDO) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(RecordRecordDO::getRecordStatus, 0); // 待生效 + lambdaQueryWrapper.lt(RecordRecordDO::getEffectiveDate, LocalDateTime.now()); + lambdaQueryWrapper.ge(RecordRecordDO::getExpirationDate, LocalDateTime.now()); +// lambdaUpdateWrapper.set(RecordRecordDO::getRecordStatus, 1); + + lambdaQueryWrapper.eq(RecordRecordDO::getSubmitFlag, recordDO.getSubmitFlag()); + String applyStatus = recordDO.getApplyStatus(); + if (!ObjectUtils.isEmpty(applyStatus))lambdaQueryWrapper.eq(RecordRecordDO::getApplyStatus, applyStatus); // 审核完成的 + return recordRecordMapper.selectList(lambdaQueryWrapper); } /** @@ -689,6 +722,7 @@ public class RecordRecordServiceImpl implements RecordRecordService { if (!ObjectUtils.isEmpty(customConfig)) { JSONObject jsonObject = JSONObject.parseObject(customConfig); submitFlag = jsonObject.getInteger("submitFlag"); // 提交标志 + if (submitFlag == null) submitFlag = 0; } // 需要评审的文件 if (!ObjectUtils.isEmpty(appraisalFlag) && appraisalFlag.equals("1")) { diff --git a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordCategoryMapper.xml b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordCategoryMapper.xml index d8ebdfe0..b5d2de8d 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordCategoryMapper.xml +++ b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordCategoryMapper.xml @@ -7,4 +7,14 @@ + + \ No newline at end of file