From 0865725147e5b8c1fd1ba7b1ead1ab02698192c0 Mon Sep 17 00:00:00 2001 From: "liang.chao" <1360241448@qq.com> Date: Mon, 15 Sep 2025 15:43:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=88=86=E7=B1=BB=E6=A0=87?= =?UTF-8?q?=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/archive/ArchiveController.java | 15 + .../archive/ArchivedSettingController.java | 71 +++++ .../archive/FileManagementController.java | 18 ++ .../archive/TransferApplyController.java | 97 ++++++ .../core/config/CronExpressionGenerator.java | 132 ++++++++ .../bonus/web/domain/ArchivedSettingDto.java | 62 ++++ .../web/domain/DaKyProFilesContentsDto.java | 4 + .../bonus/web/domain/TransferApplyDto.java | 117 +++++++ .../com/bonus/web/domain/TransferFileDto.java | 75 +++++ .../com/bonus/web/mapper/ArchiveMapper.java | 5 +- .../web/mapper/ArchivedSettingMapper.java | 19 ++ .../bonus/web/mapper/FileManageMapper.java | 4 + .../com/bonus/web/mapper/ProjectMapper.java | 2 + .../bonus/web/mapper/TransferApplyMapper.java | 29 ++ .../com/bonus/web/service/ArchiveService.java | 3 + .../web/service/ArchivedSettingService.java | 18 ++ .../bonus/web/service/FileManageService.java | 2 + .../web/service/TransferApplyService.java | 22 ++ .../web/service/impl/ArchiveServiceImpl.java | 6 + .../impl/ArchivedSettingServiceImpl.java | 61 ++++ .../service/impl/FileManageServiceImpl.java | 17 ++ .../impl/TransferApplyServiceImpl.java | 86 ++++++ .../main/resources/mapper/ArchiveMapper.xml | 9 + .../mapper/ArchivedSettingMapper.xml | 86 ++++++ .../resources/mapper/FileManageMapper.xml | 15 + .../main/resources/mapper/ProjectMapper.xml | 9 +- .../resources/mapper/TransferApplyMapper.xml | 287 ++++++++++++++++++ 27 files changed, 1269 insertions(+), 2 deletions(-) create mode 100644 bonus-admin/src/main/java/com/bonus/web/controller/archive/ArchivedSettingController.java create mode 100644 bonus-admin/src/main/java/com/bonus/web/controller/archive/TransferApplyController.java create mode 100644 bonus-admin/src/main/java/com/bonus/web/core/config/CronExpressionGenerator.java create mode 100644 bonus-admin/src/main/java/com/bonus/web/domain/ArchivedSettingDto.java create mode 100644 bonus-admin/src/main/java/com/bonus/web/domain/TransferApplyDto.java create mode 100644 bonus-admin/src/main/java/com/bonus/web/domain/TransferFileDto.java create mode 100644 bonus-admin/src/main/java/com/bonus/web/mapper/ArchivedSettingMapper.java create mode 100644 bonus-admin/src/main/java/com/bonus/web/mapper/TransferApplyMapper.java create mode 100644 bonus-admin/src/main/java/com/bonus/web/service/ArchivedSettingService.java create mode 100644 bonus-admin/src/main/java/com/bonus/web/service/TransferApplyService.java create mode 100644 bonus-admin/src/main/java/com/bonus/web/service/impl/ArchivedSettingServiceImpl.java create mode 100644 bonus-admin/src/main/java/com/bonus/web/service/impl/TransferApplyServiceImpl.java create mode 100644 bonus-admin/src/main/resources/mapper/ArchivedSettingMapper.xml create mode 100644 bonus-admin/src/main/resources/mapper/TransferApplyMapper.xml diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/archive/ArchiveController.java b/bonus-admin/src/main/java/com/bonus/web/controller/archive/ArchiveController.java index eca5484..a998c13 100644 --- a/bonus-admin/src/main/java/com/bonus/web/controller/archive/ArchiveController.java +++ b/bonus-admin/src/main/java/com/bonus/web/controller/archive/ArchiveController.java @@ -3,10 +3,12 @@ package com.bonus.web.controller.archive; import com.bonus.common.annotation.RequiresPermissions; import com.bonus.common.annotation.SysLog; import com.bonus.common.core.controller.BaseController; +import com.bonus.common.core.domain.AjaxResult; import com.bonus.common.core.domain.R; import com.bonus.common.core.page.TableDataInfo; import com.bonus.common.enums.OperaType; import com.bonus.web.domain.ArchivalCatalogueDto; +import com.bonus.web.domain.SelectDto; import com.bonus.web.service.ArchiveService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -133,4 +135,17 @@ public class ArchiveController extends BaseController { } } + @ApiOperation(value = "档案分类标记下拉") + @GetMapping("getFilesClassifyMarkSelect") + @SysLog(title = "档案分类标记下拉", module = "档案管理->档案分类标记下拉", businessType = OperaType.QUERY, details = "档案分类标记下拉", logType = 1) + public AjaxResult getFilesClassifyMarkSelect(ArchivalCatalogueDto dto) { + try { + List list = service.getFilesClassifyMarkSelect(dto); + return AjaxResult.success(list); + } catch (Exception e) { + log.error(e.toString(), e); + return AjaxResult.error("请求出错了"); + } + } + } diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/archive/ArchivedSettingController.java b/bonus-admin/src/main/java/com/bonus/web/controller/archive/ArchivedSettingController.java new file mode 100644 index 0000000..74a4761 --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/controller/archive/ArchivedSettingController.java @@ -0,0 +1,71 @@ +package com.bonus.web.controller.archive; + +import com.bonus.common.annotation.RequiresPermissions; +import com.bonus.common.annotation.SysLog; +import com.bonus.common.core.controller.BaseController; +import com.bonus.common.core.domain.AjaxResult; +import com.bonus.common.core.page.TableDataInfo; +import com.bonus.common.enums.OperaType; +import com.bonus.web.domain.ArchivedSettingDto; +import com.bonus.web.service.ArchivedSettingService; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author:liang.chao + * @Date:2025/9/15 - 9:54 + */ +@RestController +@RequestMapping("/archivedSetting") +@Slf4j +public class ArchivedSettingController extends BaseController { + + @Autowired + private ArchivedSettingService service; + @ApiOperation(value = "归档配置") + @GetMapping("detail") + @SysLog(title = "归档配置", module = "数据/档案移交->归档配置", businessType = OperaType.QUERY, details = "归档配置", logType = 1) + @RequiresPermissions("archived:setting:detail") + public AjaxResult getArchivedSetting(ArchivedSettingDto dto) { + try { + List list = service.getArchivedSetting(dto); + return AjaxResult.success(list); + } catch (Exception e) { + log.error(e.toString(), e); + return AjaxResult.error("请求出错了"); + } + } + + @ApiOperation(value = "新增归档配置") + @PostMapping("add") + @SysLog(title = "新增归档配置", module = "数据/档案移交->归档配置", businessType = OperaType.INSERT, details = "新增归档配置", logType = 1) + @RequiresPermissions("archived:setting:add") + public AjaxResult addArchivedSetting(ArchivedSettingDto dto) { + try { + return service.addArchivedSetting(dto); + } catch (Exception e) { + log.error(e.toString(), e); + return AjaxResult.error("请求出错了"); + } + } + @ApiOperation(value = "修改归档配置") + @PostMapping("edit") + @SysLog(title = "修改归档配置", module = "数据/档案移交->归档配置", businessType = OperaType.UPDATE, details = "修改归档配置", logType = 1) + @RequiresPermissions("archived:setting:edit") + public AjaxResult updateArchivedSetting(ArchivedSettingDto dto) { + try { + return service.updateArchivedSetting(dto); + } catch (Exception e) { + log.error(e.toString(), e); + return AjaxResult.error("请求出错了"); + } + } +} diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/archive/FileManagementController.java b/bonus-admin/src/main/java/com/bonus/web/controller/archive/FileManagementController.java index 2eb8602..f44f5b3 100644 --- a/bonus-admin/src/main/java/com/bonus/web/controller/archive/FileManagementController.java +++ b/bonus-admin/src/main/java/com/bonus/web/controller/archive/FileManagementController.java @@ -108,4 +108,22 @@ public class FileManagementController extends BaseController { return R.fail("请求出错了"); } } + + @ApiOperation(value = "档案移交确认") + @PostMapping("updateIntegrityStatus") + @SysLog(title = "档案移交确认", module = "档案管理->档案目录管理", businessType = OperaType.DELETE, details = "档案移交确认", logType = 1) + @RequiresPermissions("file:manage:confirm") + public R updateIntegrityStatus(@RequestBody DaKyProFilesContentsDto dto) { + try { + Integer i = fileManageService.updateIntegrityStatus(dto); + if (i > 0) { + return R.ok(); + } else { + return R.fail("移交失败"); + } + } catch (Exception e) { + log.error(e.toString(), e); + return R.fail("请求出错了"); + } + } } diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/archive/TransferApplyController.java b/bonus-admin/src/main/java/com/bonus/web/controller/archive/TransferApplyController.java new file mode 100644 index 0000000..6b105e7 --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/controller/archive/TransferApplyController.java @@ -0,0 +1,97 @@ +package com.bonus.web.controller.archive; + +import com.bonus.common.annotation.RequiresPermissions; +import com.bonus.common.annotation.SysLog; +import com.bonus.common.core.controller.BaseController; +import com.bonus.common.core.domain.AjaxResult; +import com.bonus.common.core.page.TableDataInfo; +import com.bonus.common.enums.OperaType; +import com.bonus.web.domain.TransferApplyDto; +import com.bonus.web.service.TransferApplyService; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author:liang.chao + * @Date:2025/9/15 - 11:24 + */ +@RestController +@RequestMapping("/transferApply") +@Slf4j +public class TransferApplyController extends BaseController { + + @Autowired + private TransferApplyService transferApplyService; + + @ApiOperation(value = "档案移交申请列表") + @GetMapping("getTransferApplyList") + @SysLog(title = "档案移交申请列表", module = "数据/档案移交->档案移交申请", businessType = OperaType.QUERY, details = "档案移交申请列表", logType = 1) + @RequiresPermissions("transfer:apply:list") + public TableDataInfo getTransferApplyList(TransferApplyDto dto) { + try { + startPage(); + List list = transferApplyService.list(dto); + return getDataTable(list); + } catch (Exception e) { + log.error(e.toString(), e); + return getDataTable(new ArrayList<>()); + } + } + + @ApiOperation(value = "新增档案移交申请") + @PostMapping("saveTransferApply") + @SysLog(title = "新增档案移交申请", module = "数据/档案移交->档案移交申请", businessType = OperaType.INSERT, details = "新增档案移交申请", logType = 1) + @RequiresPermissions("transfer:apply:add") + public AjaxResult saveTransferApply(@RequestBody TransferApplyDto dto) { + try { + return transferApplyService.save(dto); + } catch (Exception e) { + log.error(e.toString(), e); + return AjaxResult.error("请求出错了"); + } + } + + @ApiOperation(value = "档案移交申请详情") + @GetMapping("getTransferApply") + @SysLog(title = "档案移交申请详情", module = "数据/档案移交->档案移交申请", businessType = OperaType.QUERY, details = "档案移交申请详情", logType = 1) + @RequiresPermissions("transfer:apply:query") + public AjaxResult getTransferApply(TransferApplyDto dto) { + try { + TransferApplyDto transferApply = transferApplyService.getTransferApply(dto); + return AjaxResult.success(transferApply); + } catch (Exception e) { + log.error(e.toString(), e); + return AjaxResult.error("请求出错了"); + } + } + + @ApiOperation(value = "编辑档案移交申请") + @PostMapping("editTransferApply") + @SysLog(title = "编辑档案移交申请", module = "数据/档案移交->档案移交申请", businessType = OperaType.UPDATE, details = "编辑档案移交申请", logType = 1) + @RequiresPermissions("transfer:apply:edit") + public AjaxResult editTransferApply(@RequestBody TransferApplyDto dto) { + try { + return transferApplyService.edit(dto); + } catch (Exception e) { + log.error(e.toString(), e); + return AjaxResult.error("请求出错了"); + } + } + @ApiOperation(value = "删除档案移交申请") + @PostMapping("delTransferApply") + @SysLog(title = "删除档案移交申请", module = "数据/档案移交->档案移交申请", businessType = OperaType.UPDATE, details = "删除档案移交申请", logType = 1) + @RequiresPermissions("transfer:apply:del") + public AjaxResult delTransferApply(@RequestBody TransferApplyDto dto) { + try { + return transferApplyService.del(dto); + } catch (Exception e) { + log.error(e.toString(), e); + return AjaxResult.error("请求出错了"); + } + } +} diff --git a/bonus-admin/src/main/java/com/bonus/web/core/config/CronExpressionGenerator.java b/bonus-admin/src/main/java/com/bonus/web/core/config/CronExpressionGenerator.java new file mode 100644 index 0000000..71c0d8f --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/core/config/CronExpressionGenerator.java @@ -0,0 +1,132 @@ +package com.bonus.web.core.config; + +/** + * @Author:liang.chao + * @Date:2025/9/15 - 10:43 + */ +import java.time.*; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +public class CronExpressionGenerator { + + private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss"); + private static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + public static String generateCron(String archivedType, String cycle, String time, String weekOfDay, String monthDay) { + if (archivedType == null || time == null || time.trim().isEmpty()) { + return null; + } + + try { + if ("2".equals(archivedType)) { + // ---- 不定期归档:一次性执行 ---- + LocalDateTime dateTime = LocalDateTime.parse(time.trim(), DATETIME_FORMATTER); + return String.format("%d %d %d %d %d ? %d", + dateTime.getSecond(), + dateTime.getMinute(), + dateTime.getHour(), + dateTime.getDayOfMonth(), + dateTime.getMonthValue(), + dateTime.getYear() + ); + } else if ("1".equals(archivedType)) { + // ---- 定期归档:周期性执行 ---- + if (cycle == null) return null; + + LocalTime localTime = LocalTime.parse(time.trim(), TIME_FORMATTER); + int second = localTime.getSecond(); + int minute = localTime.getMinute(); + int hour = localTime.getHour(); + + switch (cycle) { + // 每天 + case "1": + return String.format("%d %d %d * * ?", second, minute, hour); + // 每周 + case "2": + if (weekOfDay == null || weekOfDay.trim().isEmpty()) return null; + List days = Arrays.stream(weekOfDay.split(",")) + .map(String::trim) + .filter(d -> !d.isEmpty()) + .map(CronExpressionGenerator::convertWeekDay) + .collect(Collectors.toList()); + String joinedDays = joinList(days, ","); + return joinedDays.isEmpty() ? null : + String.format("%d %d %d ? * %s", second, minute, hour, joinedDays); + // 每月 + case "3": + if (monthDay == null || monthDay.trim().isEmpty()) return null; + List validDays = Arrays.stream(monthDay.split(",")) + .map(String::trim) + .filter(d -> !d.isEmpty()) + .filter(CronExpressionGenerator::isValidDayOfMonth) + .collect(Collectors.toList()); + String validDayStr = joinList(validDays, ","); + return validDayStr.isEmpty() ? null : + String.format("%d %d %d %s * ?", second, minute, hour, validDayStr); + + default: + return null; + } + } else { + return null; + } + } catch (DateTimeParseException e) { + return null; // 格式错误 + } + } + + private static String convertWeekDay(String dayStr) { + if ("1".equals(dayStr)) return "MON"; + if ("2".equals(dayStr)) return "TUE"; + if ("3".equals(dayStr)) return "WED"; + if ("4".equals(dayStr)) return "THU"; + if ("5".equals(dayStr)) return "FRI"; + if ("6".equals(dayStr)) return "SAT"; + if ("7".equals(dayStr)) return "SUN"; + return ""; + } + + private static boolean isValidDayOfMonth(String dayStr) { + try { + int day = Integer.parseInt(dayStr); + return day >= 1 && day <= 31; + } catch (NumberFormatException e) { + return false; + } + } + + private static String joinList(List list, String delimiter) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < list.size(); i++) { + sb.append(list.get(i)); + if (i < list.size() - 1) { + sb.append(delimiter); + } + } + return sb.toString(); + } + + // --- 测试 --- + public static void main(String[] args) { + // 定期归档:精确到秒 + System.out.println("【定期归档】"); + System.out.println(generateCron("1", "1", "02:30:15", null, null)); + // 输出:15 30 2 * * ? + + System.out.println(generateCron("1", "2", "03:45:30", "1,5", null)); + // 输出:30 45 3 ? * MON,FRI + + System.out.println(generateCron("1", "3", "01:15:00", null, "1,15")); + // 输出:0 15 1 1,15 * ? + + // 不定期归档 + System.out.println("【不定期归档】"); + System.out.println(generateCron("2", null, "2025-09-15 10:30:45", null, null)); + // 输出:45 30 10 15 9 ? 2025 + } +} diff --git a/bonus-admin/src/main/java/com/bonus/web/domain/ArchivedSettingDto.java b/bonus-admin/src/main/java/com/bonus/web/domain/ArchivedSettingDto.java new file mode 100644 index 0000000..691826d --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/domain/ArchivedSettingDto.java @@ -0,0 +1,62 @@ +package com.bonus.web.domain; + +/** + * @Author:liang.chao + * @Date:2025/9/15 - 9:51 + */ + +import lombok.Data; +@Data +public class ArchivedSettingDto { + /** + * id + */ + private Integer id; + + /** + * 归档类型 1.定期归档配置 2.不定期归档配置 + */ + private String archivedType; + + /** + * 周期 1.每天 2.每周 3.每月 + */ + private String cycle; + + /** + * 时间(例如:02:00) + */ + private String time; + + /** + * 一周中的哪一天 1.星期一 2.星期二 ... 7.星期天(多个可用逗号分隔) + */ + private String weekOfDay; + + /** + * 创建时间 + */ + private String createTime; + + /** + * 修改时间 + */ + private String updateTime; + + /** + * 是否启用 0.未启用 1.启用 + */ + private String useStatus; + + /** + * cron表达式 + */ + private String cronStr; + + + /** + * 每月几号 1-31号 + */ + private String monthDay; + +} diff --git a/bonus-admin/src/main/java/com/bonus/web/domain/DaKyProFilesContentsDto.java b/bonus-admin/src/main/java/com/bonus/web/domain/DaKyProFilesContentsDto.java index 48f301f..d25932a 100644 --- a/bonus-admin/src/main/java/com/bonus/web/domain/DaKyProFilesContentsDto.java +++ b/bonus-admin/src/main/java/com/bonus/web/domain/DaKyProFilesContentsDto.java @@ -104,6 +104,10 @@ public class DaKyProFilesContentsDto { * 修改人姓名 */ private String updateUserName; + /** + * 文件id + */ + private String fileId; /** * 文件地址 */ diff --git a/bonus-admin/src/main/java/com/bonus/web/domain/TransferApplyDto.java b/bonus-admin/src/main/java/com/bonus/web/domain/TransferApplyDto.java new file mode 100644 index 0000000..6510c2e --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/domain/TransferApplyDto.java @@ -0,0 +1,117 @@ +package com.bonus.web.domain; + +import lombok.Data; + +import java.util.List; + +/** + * @Author:liang.chao + * @Date:2025/9/15 - 11:22 + */ +@Data +public class TransferApplyDto { + /** + * 主键ID + */ + private Integer id; + + /** + * 项目ID + */ + private String proId; + + /** + * 工程名称 + */ + private String proName; + + /** + * 单项工程名称 + */ + private String singleProName; + + /** + * 接收组织ID + */ + private String deptId; + + /** + * 接收组织名称 + */ + private String deptName; + + /** + * 申请人 + */ + private String applyUser; + /** + * 审核人 + */ + private String auditUser; + + /** + * 申请时间 + */ + private String applyTime; + /** + * 审核时间 + */ + private String auditTime; + + /** + * 审批状态:0.待审批 1.审批通过 2.审批驳回 + */ + private String auditStatus; + + /** + * 审批意见 + */ + private String auditOpinion; + + /** + * 移交进度:0.进行中 1.已完成 + */ + private String transferStatus; + + /** + * 移交时间(第一个档案移交时间),格式:yyyy-MM-dd + */ + private String transferTime; + + /** + * 创建时间 + */ + private String createTime; + + /** + * 修改时间 + */ + private String updateTime; + + /** + * 创建人ID + */ + private Integer createUserId; + + /** + * 创建人姓名 + */ + private String createUserName; + + /** + * 修改人姓名 + */ + private String updateUserName; + + /** + * 修改人ID + */ + private Integer updateUserId; + + /** + * 是否删除:0.删除 1.未删除 + */ + private String delFlag; + + private List transferFileDtos; +} diff --git a/bonus-admin/src/main/java/com/bonus/web/domain/TransferFileDto.java b/bonus-admin/src/main/java/com/bonus/web/domain/TransferFileDto.java new file mode 100644 index 0000000..8ae0c82 --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/domain/TransferFileDto.java @@ -0,0 +1,75 @@ +package com.bonus.web.domain; + +import lombok.Data; + +/** + * @Author:liang.chao + * @Date:2025/9/15 - 14:01 + */ +@Data +public class TransferFileDto { + /** + * 主键ID + */ + private Integer id; + + /** + * 档案移交申请ID(外键关联 da_ky_transfer_apply.id) + */ + private Integer transferApplyId; + + /** + * 项目匹配档案目录ID(关联 da_ky_pro_files_contents.id) + */ + private String proFilesContentsId; + + /** + * 项目ID + */ + private String proId; + + /** + * 系统资源文件ID(关联 da_ky_sys_file_source.id) + */ + private Integer fileSourceId; + + /** + * 文件名称 + */ + private String fileName; + + /** + * 文件路径 + */ + private String filePath; + + /** + * 移交状态:0.未移交 1.已移交 + */ + private String transferStatus; + + /** + * 移交时间 + */ + private String transferTime; + + /** + * 接收状态:0.未接收 1.已接收 + */ + private String receiveStatus; + + /** + * 接收时间 + */ + private String receiveTime; + + /** + * 创建时间 + */ + private String createTime; + + /** + * 修改时间 + */ + private String updateTime; +} diff --git a/bonus-admin/src/main/java/com/bonus/web/mapper/ArchiveMapper.java b/bonus-admin/src/main/java/com/bonus/web/mapper/ArchiveMapper.java index f56b947..d632887 100644 --- a/bonus-admin/src/main/java/com/bonus/web/mapper/ArchiveMapper.java +++ b/bonus-admin/src/main/java/com/bonus/web/mapper/ArchiveMapper.java @@ -1,6 +1,7 @@ package com.bonus.web.mapper; import com.bonus.web.domain.ArchivalCatalogueDto; +import com.bonus.web.domain.SelectDto; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -23,5 +24,7 @@ public interface ArchiveMapper { ArchivalCatalogueDto getArchivalCatalogueById(ArchivalCatalogueDto dto); - Integer getchild(ArchivalCatalogueDto dto); + Integer getchild(ArchivalCatalogueDto dto); + + List getFilesClassifyMarkSelect(ArchivalCatalogueDto dto); } diff --git a/bonus-admin/src/main/java/com/bonus/web/mapper/ArchivedSettingMapper.java b/bonus-admin/src/main/java/com/bonus/web/mapper/ArchivedSettingMapper.java new file mode 100644 index 0000000..53e6505 --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/mapper/ArchivedSettingMapper.java @@ -0,0 +1,19 @@ +package com.bonus.web.mapper; + +import com.bonus.web.domain.ArchivedSettingDto; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Author:liang.chao + * @Date:2025/9/15 - 9:59 + */ +@Mapper +public interface ArchivedSettingMapper { + List getArchivedSetting(ArchivedSettingDto dto); + + Integer addArchivedSetting(ArchivedSettingDto dto); + + Integer updateArchivedSetting(ArchivedSettingDto dto); +} diff --git a/bonus-admin/src/main/java/com/bonus/web/mapper/FileManageMapper.java b/bonus-admin/src/main/java/com/bonus/web/mapper/FileManageMapper.java index cbd9027..0d8a6a7 100644 --- a/bonus-admin/src/main/java/com/bonus/web/mapper/FileManageMapper.java +++ b/bonus-admin/src/main/java/com/bonus/web/mapper/FileManageMapper.java @@ -28,4 +28,8 @@ public interface FileManageMapper { Integer delFileManage(DaKyProFilesContentsDto dto); Integer selectFileManage(DaKyProFilesContentsDto dto); + + List getFilesClassifyNameStandard(); + + Integer updateIntegrityStatus(DaKyProFilesContentsDto dto); } diff --git a/bonus-admin/src/main/java/com/bonus/web/mapper/ProjectMapper.java b/bonus-admin/src/main/java/com/bonus/web/mapper/ProjectMapper.java index 4c308dc..10c0b2d 100644 --- a/bonus-admin/src/main/java/com/bonus/web/mapper/ProjectMapper.java +++ b/bonus-admin/src/main/java/com/bonus/web/mapper/ProjectMapper.java @@ -23,4 +23,6 @@ public interface ProjectMapper { Integer insertDakyProFilesContents(DaKyProFilesContentsDto dakyProFilesContentsDto); List getfilesContentsById(ProjectDto projectDto); + + Integer updateFileStatus(DaKyProFilesContentsDto dto); } diff --git a/bonus-admin/src/main/java/com/bonus/web/mapper/TransferApplyMapper.java b/bonus-admin/src/main/java/com/bonus/web/mapper/TransferApplyMapper.java new file mode 100644 index 0000000..983dc74 --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/mapper/TransferApplyMapper.java @@ -0,0 +1,29 @@ +package com.bonus.web.mapper; + +import com.bonus.web.domain.TransferApplyDto; +import com.bonus.web.domain.TransferFileDto; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Author:liang.chao + * @Date:2025/9/15 - 11:27 + */ +@Mapper +public interface TransferApplyMapper { + public List list(TransferApplyDto dto); + public Integer insert(TransferApplyDto dto); + + Integer insertTransferFile(TransferFileDto transferFileDto); + + TransferApplyDto getTransferApply(TransferApplyDto dto); + + List getTransferFile(TransferApplyDto dto); + + Integer edit(TransferApplyDto dto); + + Integer delTransferFiles(TransferApplyDto dto); + + Integer del(TransferApplyDto dto); +} diff --git a/bonus-admin/src/main/java/com/bonus/web/service/ArchiveService.java b/bonus-admin/src/main/java/com/bonus/web/service/ArchiveService.java index 760f432..ea498a1 100644 --- a/bonus-admin/src/main/java/com/bonus/web/service/ArchiveService.java +++ b/bonus-admin/src/main/java/com/bonus/web/service/ArchiveService.java @@ -1,6 +1,7 @@ package com.bonus.web.service; import com.bonus.web.domain.ArchivalCatalogueDto; +import com.bonus.web.domain.SelectDto; import java.util.List; @@ -20,4 +21,6 @@ public interface ArchiveService { Integer delArchivalCatalogue(ArchivalCatalogueDto dto); ArchivalCatalogueDto getArchivalCatalogueById(ArchivalCatalogueDto dto); + + List getFilesClassifyMarkSelect(ArchivalCatalogueDto dto); } diff --git a/bonus-admin/src/main/java/com/bonus/web/service/ArchivedSettingService.java b/bonus-admin/src/main/java/com/bonus/web/service/ArchivedSettingService.java new file mode 100644 index 0000000..545ea47 --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/service/ArchivedSettingService.java @@ -0,0 +1,18 @@ +package com.bonus.web.service; + +import com.bonus.common.core.domain.AjaxResult; +import com.bonus.web.domain.ArchivedSettingDto; + +import java.util.List; + +/** + * @Author:liang.chao + * @Date:2025/9/15 - 9:58 + */ +public interface ArchivedSettingService { + List getArchivedSetting(ArchivedSettingDto dto); + + AjaxResult addArchivedSetting(ArchivedSettingDto dto); + + AjaxResult updateArchivedSetting(ArchivedSettingDto dto); +} diff --git a/bonus-admin/src/main/java/com/bonus/web/service/FileManageService.java b/bonus-admin/src/main/java/com/bonus/web/service/FileManageService.java index 09ba420..d0270ea 100644 --- a/bonus-admin/src/main/java/com/bonus/web/service/FileManageService.java +++ b/bonus-admin/src/main/java/com/bonus/web/service/FileManageService.java @@ -19,4 +19,6 @@ public interface FileManageService { R updateFileManage(DaKyProFilesContentsDto dto); Integer delFileManage(DaKyProFilesContentsDto dto); + + Integer updateIntegrityStatus(DaKyProFilesContentsDto dto); } diff --git a/bonus-admin/src/main/java/com/bonus/web/service/TransferApplyService.java b/bonus-admin/src/main/java/com/bonus/web/service/TransferApplyService.java new file mode 100644 index 0000000..60d8378 --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/service/TransferApplyService.java @@ -0,0 +1,22 @@ +package com.bonus.web.service; + +import com.bonus.common.core.domain.AjaxResult; +import com.bonus.web.domain.TransferApplyDto; + +import java.util.List; + +/** + * @Author:liang.chao + * @Date:2025/9/15 - 11:26 + */ +public interface TransferApplyService { + List list(TransferApplyDto dto); + + AjaxResult save(TransferApplyDto dto); + + TransferApplyDto getTransferApply(TransferApplyDto dto); + + AjaxResult edit(TransferApplyDto dto); + + AjaxResult del(TransferApplyDto dto); +} diff --git a/bonus-admin/src/main/java/com/bonus/web/service/impl/ArchiveServiceImpl.java b/bonus-admin/src/main/java/com/bonus/web/service/impl/ArchiveServiceImpl.java index 1650ded..868206a 100644 --- a/bonus-admin/src/main/java/com/bonus/web/service/impl/ArchiveServiceImpl.java +++ b/bonus-admin/src/main/java/com/bonus/web/service/impl/ArchiveServiceImpl.java @@ -3,6 +3,7 @@ package com.bonus.web.service.impl; import com.bonus.common.utils.SecurityUtils; import com.bonus.web.controller.tool.TreeBuilder; import com.bonus.web.domain.ArchivalCatalogueDto; +import com.bonus.web.domain.SelectDto; import com.bonus.web.mapper.ArchiveMapper; import com.bonus.web.service.ArchiveService; import org.springframework.stereotype.Service; @@ -61,4 +62,9 @@ public class ArchiveServiceImpl implements ArchiveService { public ArchivalCatalogueDto getArchivalCatalogueById(ArchivalCatalogueDto dto) { return archiveMapper.getArchivalCatalogueById(dto); } + + @Override + public List getFilesClassifyMarkSelect(ArchivalCatalogueDto dto) { + return archiveMapper.getFilesClassifyMarkSelect(dto); + } } diff --git a/bonus-admin/src/main/java/com/bonus/web/service/impl/ArchivedSettingServiceImpl.java b/bonus-admin/src/main/java/com/bonus/web/service/impl/ArchivedSettingServiceImpl.java new file mode 100644 index 0000000..4e335ea --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/service/impl/ArchivedSettingServiceImpl.java @@ -0,0 +1,61 @@ +package com.bonus.web.service.impl; + +import com.bonus.common.core.domain.AjaxResult; +import com.bonus.web.core.config.CronExpressionGenerator; +import com.bonus.web.domain.ArchivedSettingDto; +import com.bonus.web.mapper.ArchivedSettingMapper; +import com.bonus.web.service.ArchivedSettingService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Author:liang.chao + * @Date:2025/9/15 - 9:58 + */ +@Service +public class ArchivedSettingServiceImpl implements ArchivedSettingService { + @Autowired + private ArchivedSettingMapper archivedSettingMapper; + + private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss"); + private static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + + @Override + public List getArchivedSetting(ArchivedSettingDto dto) { + return archivedSettingMapper.getArchivedSetting(dto); + } + + @Override + public AjaxResult addArchivedSetting(ArchivedSettingDto dto) { + String cronStr = CronExpressionGenerator.generateCron(dto.getArchivedType(), dto.getCycle(), dto.getTime(), dto.getWeekOfDay(), dto.getMonthDay()); + dto.setCronStr(cronStr); + Integer i = archivedSettingMapper.addArchivedSetting(dto); + if (i > 0) { + return AjaxResult.success("配置成功"); + } else { + return AjaxResult.error("配置失败"); + } + } + + @Override + public AjaxResult updateArchivedSetting(ArchivedSettingDto dto) { + String cronStr = CronExpressionGenerator.generateCron(dto.getArchivedType(), dto.getCycle(), dto.getTime(), dto.getWeekOfDay(), dto.getMonthDay()); + dto.setCronStr(cronStr); + Integer i = archivedSettingMapper.updateArchivedSetting(dto); + if (i > 0) { + return AjaxResult.success("修改成功"); + } else { + return AjaxResult.error("修改失败"); + } + } + +} diff --git a/bonus-admin/src/main/java/com/bonus/web/service/impl/FileManageServiceImpl.java b/bonus-admin/src/main/java/com/bonus/web/service/impl/FileManageServiceImpl.java index 1588853..6b6f819 100644 --- a/bonus-admin/src/main/java/com/bonus/web/service/impl/FileManageServiceImpl.java +++ b/bonus-admin/src/main/java/com/bonus/web/service/impl/FileManageServiceImpl.java @@ -4,6 +4,7 @@ import com.bonus.common.core.domain.R; import com.bonus.web.controller.tool.TreeBuilder; import com.bonus.web.domain.DaKyProFilesContentsDto; import com.bonus.web.mapper.FileManageMapper; +import com.bonus.web.mapper.ProjectMapper; import com.bonus.web.service.FileManageService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -22,6 +23,9 @@ public class FileManageServiceImpl implements FileManageService { @Autowired private FileManageMapper fileManageMapper; + @Autowired + private ProjectMapper projectMapper; + @Override public List list(DaKyProFilesContentsDto daKyProFilesContentsDto) { List list = fileManageMapper.list(daKyProFilesContentsDto); @@ -45,6 +49,13 @@ public class FileManageServiceImpl implements FileManageService { return R.fail("档案名称重复"); } if (StringUtils.isNotBlank(dto.getFilePath())) { + // 判断是否包含文件命名规范 + List list = fileManageMapper.getFilesClassifyNameStandard(); + for (String s : list) { + if (!dto.getFilePath().contains(s)) { + return R.fail("文件命名不符合规范"); + } + } fileManageMapper.saveFileSource(dto); } return R.ok(fileManageMapper.saveFileManage(dto)); @@ -70,4 +81,10 @@ public class FileManageServiceImpl implements FileManageService { fileManageMapper.delFileSource(dto); return fileManageMapper.delFileManage(dto); } + + @Override + public Integer updateIntegrityStatus(DaKyProFilesContentsDto dto) { + fileManageMapper.updateIntegrityStatus(dto); + return projectMapper.updateFileStatus(dto); + } } diff --git a/bonus-admin/src/main/java/com/bonus/web/service/impl/TransferApplyServiceImpl.java b/bonus-admin/src/main/java/com/bonus/web/service/impl/TransferApplyServiceImpl.java new file mode 100644 index 0000000..e2017c0 --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/service/impl/TransferApplyServiceImpl.java @@ -0,0 +1,86 @@ +package com.bonus.web.service.impl; + +import com.bonus.common.core.domain.AjaxResult; +import com.bonus.web.domain.TransferApplyDto; +import com.bonus.web.domain.TransferFileDto; +import com.bonus.web.mapper.TransferApplyMapper; +import com.bonus.web.service.TransferApplyService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.bonus.common.utils.SecurityUtils.getLoginUser; + +/** + * @Author:liang.chao + * @Date:2025/9/15 - 11:27 + */ +@Service +public class TransferApplyServiceImpl implements TransferApplyService { + @Autowired + private TransferApplyMapper transferApplyMapper; + + @Override + public List list(TransferApplyDto dto) { + return transferApplyMapper.list(dto); + } + + @Override + public AjaxResult save(TransferApplyDto dto) { + try { + dto.setAuditStatus("0"); + dto.setCreateUserId(getLoginUser().getUserId().intValue()); + dto.setCreateUserName(getLoginUser().getUsername()); + dto.setUpdateUserId(getLoginUser().getUserId().intValue()); + dto.setUpdateUserName(getLoginUser().getUsername()); + Integer i = transferApplyMapper.insert(dto); + List transferFileDtos = dto.getTransferFileDtos(); + for (TransferFileDto transferFileDto : transferFileDtos) { + transferFileDto.setTransferApplyId(dto.getId()); + transferApplyMapper.insertTransferFile(transferFileDto); + } + return i > 0 ? AjaxResult.success("保存成功") : AjaxResult.error("保存失败"); + } catch (Exception e) { + return AjaxResult.error("接口异常"); + } + } + + @Override + public TransferApplyDto getTransferApply(TransferApplyDto dto) { + TransferApplyDto transferApply = transferApplyMapper.getTransferApply(dto); + transferApply.setTransferFileDtos(transferApplyMapper.getTransferFile(dto)); + return transferApply; + } + + @Override + public AjaxResult edit(TransferApplyDto dto) { + try { + dto.setAuditStatus("0"); + dto.setUpdateUserId(getLoginUser().getUserId().intValue()); + dto.setUpdateUserName(getLoginUser().getUsername()); + transferApplyMapper.edit(dto); + // 先删后增 + Integer i = transferApplyMapper.delTransferFiles(dto); + List transferFileDtos = dto.getTransferFileDtos(); + for (TransferFileDto transferFileDto : transferFileDtos) { + transferFileDto.setTransferApplyId(dto.getId()); + transferApplyMapper.insertTransferFile(transferFileDto); + } + return i > 0 ? AjaxResult.success("修改成功") : AjaxResult.error("修改失败"); + } catch (Exception e) { + return AjaxResult.error("接口异常"); + } + } + + @Override + public AjaxResult del(TransferApplyDto dto) { + Integer i = transferApplyMapper.delTransferFiles(dto); + if (i > 0) { + Integer i1 = transferApplyMapper.del(dto); + return i1 > 0 ? AjaxResult.success("删除成功") : AjaxResult.error("删除失败"); + } else { + return AjaxResult.error("档案删除失败"); + } + } +} diff --git a/bonus-admin/src/main/resources/mapper/ArchiveMapper.xml b/bonus-admin/src/main/resources/mapper/ArchiveMapper.xml index 97a89e9..162f100 100644 --- a/bonus-admin/src/main/resources/mapper/ArchiveMapper.xml +++ b/bonus-admin/src/main/resources/mapper/ArchiveMapper.xml @@ -151,5 +151,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHERE t2.id = #{id} and t1.del_flag = '1' + diff --git a/bonus-admin/src/main/resources/mapper/ArchivedSettingMapper.xml b/bonus-admin/src/main/resources/mapper/ArchivedSettingMapper.xml new file mode 100644 index 0000000..50a8b4d --- /dev/null +++ b/bonus-admin/src/main/resources/mapper/ArchivedSettingMapper.xml @@ -0,0 +1,86 @@ + + + + + INSERT INTO da_ky_archived_setting + + + archived_type, + + + cycle, + + + `time`, + + + week_of_day, + + + use_status, + + + cron_str, + + + month_day, + + + + + #{archivedType}, + + + #{cycle}, + + + #{time}, + + + #{weekOfDay}, + + + #{useStatus}, + + + #{cronStr}, + + + #{monthDay}, + + + + + UPDATE da_ky_archived_setting + + + archived_type = #{archivedType}, + + + cycle = #{cycle}, + + + `time` = #{time}, + + + week_of_day = #{weekOfDay}, + + + use_status = #{useStatus}, + + + cron_str = #{cronStr}, + + + month_day = #{monthDay}, + + + WHERE id = #{id} + + + + diff --git a/bonus-admin/src/main/resources/mapper/FileManageMapper.xml b/bonus-admin/src/main/resources/mapper/FileManageMapper.xml index 7bff206..b08886f 100644 --- a/bonus-admin/src/main/resources/mapper/FileManageMapper.xml +++ b/bonus-admin/src/main/resources/mapper/FileManageMapper.xml @@ -106,6 +106,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time = now() WHERE id = #{id} + + UPDATE da_ky_pro_files_contents + set + integrity_status = '1' + WHERE pro_id = #{proId} + DELETE FROM da_ky_sys_file_source WHERE id = #{id} @@ -142,6 +148,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" dkpfc.data_source AS dataSource, dkpfc.is_unique AS isUnique, dkpfc.integrity_status AS integrityStatus, + dkfs.id AS fileId, dkfs.create_time AS createTime, dkfs.source_file_name AS sourceFileName, dkfs.create_user_name AS createUserName @@ -167,4 +174,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and id != #{id} + diff --git a/bonus-admin/src/main/resources/mapper/ProjectMapper.xml b/bonus-admin/src/main/resources/mapper/ProjectMapper.xml index 37cde51..7392185 100644 --- a/bonus-admin/src/main/resources/mapper/ProjectMapper.xml +++ b/bonus-admin/src/main/resources/mapper/ProjectMapper.xml @@ -53,8 +53,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHERE id = #{proId} + + UPDATE da_ky_project + SET + file_status = '1' + WHERE + id = #{proId} + - SELECT dkp.*, dksdd.dict_label proTypeName, diff --git a/bonus-admin/src/main/resources/mapper/TransferApplyMapper.xml b/bonus-admin/src/main/resources/mapper/TransferApplyMapper.xml new file mode 100644 index 0000000..0c579c4 --- /dev/null +++ b/bonus-admin/src/main/resources/mapper/TransferApplyMapper.xml @@ -0,0 +1,287 @@ + + + + + INSERT INTO da_ky_transfer_apply + + + pro_id, + + + pro_name, + + + single_pro_name, + + + dept_id, + + + dept_name, + + + apply_user, + + + apply_time, + + + audit_status, + + + audit_opinion, + + + transfer_status, + + + transfer_time, + + + create_user_id, + + + create_user_name, + + + update_user_name, + + + update_user_id, + + + + + #{proId}, + + + #{proName}, + + + #{singleProName}, + + + #{deptId}, + + + #{deptName}, + + + #{applyUser}, + + + #{applyTime}, + + + #{auditStatus}, + + + #{auditOpinion}, + + + #{transferStatus}, + + + #{transferTime}, + + + #{createUserId}, + + + #{createUserName}, + + + #{updateUserName}, + + + #{updateUserId}, + + + + + INSERT INTO da_ky_transfer_file + + + id, + + + transfer_apply_id, + + + pro_files_contents_id, + + + pro_id, + + + file_source_id, + + + file_name, + + + file_path, + + + transfer_status, + + + transfer_time, + + + receive_status, + + + receive_time, + + + + + #{id}, + + + #{transferApplyId}, + + + #{proFilesContentsId}, + + + #{proId}, + + + #{fileSourceId}, + + + #{fileName}, + + + #{filePath}, + + + #{transferStatus}, + + + #{transferTime}, + + + #{receiveStatus}, + + + #{receiveTime}, + + + + + UPDATE da_ky_transfer_apply + + + pro_id = #{proId}, + + + pro_name = #{proName}, + + + single_pro_name = #{singleProName}, + + + dept_id = #{deptId}, + + + dept_name = #{deptName}, + + + apply_user = #{applyUser}, + + + apply_time = #{applyTime}, + + + audit_status = #{auditStatus}, + + + audit_opinion = #{auditOpinion}, + + + transfer_status = #{transferStatus}, + + + transfer_time = #{transferTime}, + + + update_user_name = #{updateUserName}, + + + update_user_id = #{updateUserId}, + + + del_flag = #{delFlag}, + + + WHERE id = #{id} + + + DELETE FROM da_ky_transfer_file + WHERE transfer_apply_id = #{id} + + + DELETE FROM da_ky_transfer_apply + WHERE id = #{id} + + + + + + +