From bc379bf3b8b53544f7f35efe2e015a81250dcbb6 Mon Sep 17 00:00:00 2001 From: weizhong Date: Sun, 12 Oct 2025 10:13:27 +0800 Subject: [PATCH] =?UTF-8?q?=E2=80=9Crs=E6=B5=8B=E8=AF=95=E4=BF=AE=E6=94=B9?= =?UTF-8?q?10.12=E7=89=88=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RsOverseasApplicationController.java | 132 ++- .../rs/domain/RsOverseasApplication.java | 24 +- .../rs/domain/bo/RsOverseasApplicationBo.java | 11 - .../query/RsOverseasApplicationQuery.java | 10 - .../rs/domain/vo/RsOverseasApplicationVo.java | 41 +- .../IRsOverseasApplicationService.java | 6 +- .../RsOverseasApplicationServiceImpl.java | 30 +- .../impl/RsOverseasRecordServiceImpl.java | 3 +- .../mapper/rs/RsOverseasApplicationMapper.xml | 34 +- .../mapper/rs/RsOverseasRecordMapper.xml | 2 +- web/src/api/rs/overseas.ts | 8 +- web/src/views/rs/overseas/index.vue | 1041 ++++++++++++++--- 12 files changed, 1037 insertions(+), 305 deletions(-) diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsOverseasApplicationController.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsOverseasApplicationController.java index df6df958..db542011 100644 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsOverseasApplicationController.java +++ b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsOverseasApplicationController.java @@ -44,6 +44,8 @@ import org.dromara.common.oss.factory.OssFactory; import org.dromara.common.oss.entity.UploadResult; import java.io.IOException; import java.text.SimpleDateFormat; +import org.dromara.system.service.ISysOssService; +import org.dromara.system.domain.vo.SysOssVo; /** * 出国申请Controller @@ -65,6 +67,9 @@ public class RsOverseasApplicationController extends BaseController { @Autowired private IRegistrationFormService registrationFormService; + @Autowired + private ISysOssService ossService; + /** * 查询出国申请列表 */ @@ -182,13 +187,14 @@ public class RsOverseasApplicationController extends BaseController { @SaCheckPermission("rs:overseas:add") @Log(title = "出国申请", businessType = BusinessType.INSERT) @PostMapping - public R add(@Validated(AddGroup.class) @RequestBody RsOverseasApplicationBo bo) { + public R> add(@Validated(AddGroup.class) @RequestBody RsOverseasApplicationBo bo) { // 🔍 调试日志:检查接收到的关键字段 System.out.println("========== Controller 接收到的数据 =========="); System.out.println("emergencyContact: " + bo.getEmergencyContact()); System.out.println("destination: " + bo.getDestination()); System.out.println("idNumber: " + bo.getIdNumber()); - System.out.println("unitContact: " + bo.getUnitContact()); + // unitContact 字段已删除 + // System.out.println("unitContact: " + bo.getUnitContact()); System.out.println("==============================================="); // 自动设置申请人信息 @@ -208,7 +214,15 @@ public class RsOverseasApplicationController extends BaseController { // 状态由Service层控制,新增时为草稿状态 bo.setApplyTime(new Date()); - return toAjax(applicationService.insertByBo(bo)); + boolean result = applicationService.insertByBo(bo); + if (result) { + // 🔴 返回新创建的applicationId,供前端上传文件时使用 + Map data = new HashMap<>(); + data.put("applicationId", bo.getApplicationId()); + return R.ok("操作成功", data); + } else { + return R.fail("新增失败"); + } } /** @@ -460,32 +474,28 @@ public class RsOverseasApplicationController extends BaseController { return R.fail("文件大小超过10MB限制"); } - // 生成文件名 - String originalFilename = file.getOriginalFilename(); - String fileName = "stamped_" + applicationId + "_" + System.currentTimeMillis() - + getFileExtension(originalFilename); - - // 上传到OSS - OssClient ossClient = OssFactory.instance(); - String filePath = "overseas/stamped/" + fileName; - UploadResult uploadResult = ossClient.upload(file.getInputStream(), filePath, - file.getSize(), file.getContentType()); - - // 更新申请记录 - 只更新盖章文件相关字段 - applicationService.updateStampedFileInfo(applicationId, uploadResult.getUrl(), - originalFilename, new Date(), "1"); + // 使用系统OSS服务上传文件(自动保存到sys_oss表) + SysOssVo ossResult = ossService.upload(file); + + // 更新申请记录 - 存储OSS ID和文件路径 + applicationService.updateStampedFileInfo( + applicationId, + ossResult.getUrl(), // 文件URL + ossResult.getOriginalName(), // 原始文件名 + new Date(), // 上传时间 + "1", // 上传状态:已上传 + ossResult.getOssId() // OSS文件ID + ); // 返回结果 Map result = new HashMap<>(); - result.put("filePath", uploadResult.getUrl()); - result.put("fileName", originalFilename); + result.put("filePath", ossResult.getUrl()); + result.put("fileName", ossResult.getOriginalName()); result.put("uploadTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + result.put("ossId", ossResult.getOssId()); return R.ok("盖章文件上传成功", result); - } catch (IOException e) { - e.printStackTrace(); - return R.fail("文件上传失败:" + e.getMessage()); } catch (Exception e) { e.printStackTrace(); return R.fail("系统异常:" + e.getMessage()); @@ -512,38 +522,78 @@ public class RsOverseasApplicationController extends BaseController { return R.fail("文件大小超过10MB限制"); } - // 生成文件名 - String originalFilename = file.getOriginalFilename(); - String fileName = "party_retention_" + applicationId + "_" + System.currentTimeMillis() - + getFileExtension(originalFilename); - - // 上传到OSS - OssClient ossClient = OssFactory.instance(); - String filePath = "overseas/party-retention/" + fileName; - UploadResult uploadResult = ossClient.upload(file.getInputStream(), filePath, - file.getSize(), file.getContentType()); - - // 更新申请记录 - 只更新党籍保留附件相关字段 - applicationService.updatePartyRetentionFileInfo(applicationId, uploadResult.getUrl(), - originalFilename, new Date(), "1"); + // 使用系统OSS服务上传文件(自动保存到sys_oss表) + SysOssVo ossResult = ossService.upload(file); + + // 更新申请记录 - 存储OSS ID和文件路径 + applicationService.updatePartyRetentionFileInfo( + applicationId, + ossResult.getUrl(), // 文件URL + ossResult.getOriginalName(), // 原始文件名 + new Date(), // 上传时间 + "1", // 上传状态:已上传 + ossResult.getOssId() // OSS文件ID + ); // 返回结果 Map result = new HashMap<>(); - result.put("filePath", uploadResult.getUrl()); - result.put("fileName", originalFilename); + result.put("filePath", ossResult.getUrl()); + result.put("fileName", ossResult.getOriginalName()); result.put("uploadTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + result.put("ossId", ossResult.getOssId()); return R.ok("党籍保留附件上传成功", result); - } catch (IOException e) { - e.printStackTrace(); - return R.fail("文件上传失败:" + e.getMessage()); } catch (Exception e) { e.printStackTrace(); return R.fail("系统异常:" + e.getMessage()); } } + /** + * 下载盖章文件(安全下载) + */ + @SaCheckPermission("rs:overseas:query") + @GetMapping("/downloadStampedFile/{applicationId}") + public void downloadStampedFile(@PathVariable Long applicationId, HttpServletResponse response) { + try { + RsOverseasApplicationVo application = applicationService.queryById(applicationId); + if (application == null || application.getStampedFileOssId() == null) { + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + response.setContentType("application/json;charset=UTF-8"); + response.getWriter().write("{\"code\":404,\"msg\":\"文件不存在\"}"); + return; + } + + // 使用系统OSS服务进行安全下载 + ossService.secureDownload(application.getStampedFileOssId(), response); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 下载党籍保留附件(安全下载) + */ + @SaCheckPermission("rs:overseas:query") + @GetMapping("/downloadPartyRetentionFile/{applicationId}") + public void downloadPartyRetentionFile(@PathVariable Long applicationId, HttpServletResponse response) { + try { + RsOverseasApplicationVo application = applicationService.queryById(applicationId); + if (application == null || application.getPartyRetentionFileOssId() == null) { + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + response.setContentType("application/json;charset=UTF-8"); + response.getWriter().write("{\"code\":404,\"msg\":\"文件不存在\"}"); + return; + } + + // 使用系统OSS服务进行安全下载 + ossService.secureDownload(application.getPartyRetentionFileOssId(), response); + } catch (Exception e) { + e.printStackTrace(); + } + } + /** * 验证文件类型 */ diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/RsOverseasApplication.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/RsOverseasApplication.java index 1ca04d15..2f551f16 100644 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/RsOverseasApplication.java +++ b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/RsOverseasApplication.java @@ -132,12 +132,6 @@ public class RsOverseasApplication extends BaseEntity { @ExcelProperty(value = "登记备案责任单位负责人签名") private String unitLeaderSignature; - /** - * 登记备案责任单位联系人 - */ - @ExcelProperty(value = "登记备案责任单位联系人") - private String unitContact; - /** * 办公电话 */ @@ -236,12 +230,6 @@ public class RsOverseasApplication extends BaseEntity { @ExcelProperty(value = "出国天数") private Integer duration; - /** - * 预算金额 - */ - @ExcelProperty(value = "预算金额") - private BigDecimal budget; - /** * 邀请方信息 */ @@ -347,6 +335,12 @@ public class RsOverseasApplication extends BaseEntity { @ExcelProperty(value = "盖章文件上传状态") private String stampedFileUploadStatus; + /** + * 盖章文件OSS ID(用于安全下载) + */ + @ExcelIgnore + private Long stampedFileOssId; + /** * 党籍保留附件文件路径 */ @@ -372,6 +366,12 @@ public class RsOverseasApplication extends BaseEntity { @ExcelProperty(value = "党籍保留附件上传状态") private String partyRetentionUploadStatus; + /** + * 党籍保留附件OSS ID(用于安全下载) + */ + @ExcelIgnore + private Long partyRetentionFileOssId; + /** * 基础字段:创建者 */ diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/bo/RsOverseasApplicationBo.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/bo/RsOverseasApplicationBo.java index b803b7e4..06720711 100644 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/bo/RsOverseasApplicationBo.java +++ b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/bo/RsOverseasApplicationBo.java @@ -127,12 +127,6 @@ public class RsOverseasApplicationBo extends BaseEntity { */ private String unitLeaderSignature; - /** - * 登记备案责任单位联系人 - */ - @NotBlank(message = "登记备案责任单位联系人不能为空", groups = { AddGroup.class, EditGroup.class }) - private String unitContact; - /** * 办公电话 */ @@ -212,11 +206,6 @@ public class RsOverseasApplicationBo extends BaseEntity { @Min(value = 1, message = "出国天数必须大于0", groups = { AddGroup.class, EditGroup.class }) private Integer duration; - /** - * 预算金额 - */ - private BigDecimal budget; - /** * 行程安排 */ diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/query/RsOverseasApplicationQuery.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/query/RsOverseasApplicationQuery.java index 94258aaf..7120afd8 100644 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/query/RsOverseasApplicationQuery.java +++ b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/query/RsOverseasApplicationQuery.java @@ -58,16 +58,6 @@ public class RsOverseasApplicationQuery extends PageQuery { */ private Long applicantId; - /** - * 预算金额范围 - 最小值 - */ - private BigDecimal budgetMin; - - /** - * 预算金额范围 - 最大值 - */ - private BigDecimal budgetMax; - /** * 申请时间范围 - 开始时间 */ diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/vo/RsOverseasApplicationVo.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/vo/RsOverseasApplicationVo.java index dd81fb6d..72417ab3 100644 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/vo/RsOverseasApplicationVo.java +++ b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/vo/RsOverseasApplicationVo.java @@ -129,11 +129,6 @@ public class RsOverseasApplicationVo implements Serializable { */ private String unitLeaderSignature; - /** - * 登记备案责任单位联系人 - */ - private String unitContact; - /** * 办公电话 */ @@ -216,11 +211,6 @@ public class RsOverseasApplicationVo implements Serializable { */ private Integer duration; - /** - * 预算金额 - */ - private BigDecimal budget; - /** * 邀请函信息 */ @@ -324,6 +314,37 @@ public class RsOverseasApplicationVo implements Serializable { */ private String stampedFileUploadStatus; + /** + * 盖章文件OSS ID(用于安全下载) + */ + private Long stampedFileOssId; + + /** + * 党籍保留附件文件路径 + */ + private String partyRetentionFilePath; + + /** + * 党籍保留附件文件名 + */ + private String partyRetentionFileName; + + /** + * 党籍保留附件上传时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date partyRetentionUploadTime; + + /** + * 党籍保留附件上传状态:0-未上传,1-已上传 + */ + private String partyRetentionUploadStatus; + + /** + * 党籍保留附件OSS ID(用于安全下载) + */ + private Long partyRetentionFileOssId; + /** * 租户编号 */ diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/IRsOverseasApplicationService.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/IRsOverseasApplicationService.java index fe9fa809..b9d7498f 100644 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/IRsOverseasApplicationService.java +++ b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/IRsOverseasApplicationService.java @@ -167,10 +167,11 @@ public interface IRsOverseasApplicationService { * @param fileName 文件名 * @param uploadTime 上传时间 * @param uploadStatus 上传状态 + * @param ossId OSS文件ID * @return 是否成功 */ Boolean updateStampedFileInfo(Long applicationId, String filePath, String fileName, - java.util.Date uploadTime, String uploadStatus); + java.util.Date uploadTime, String uploadStatus, Long ossId); /** * 更新党籍保留附件信息 @@ -180,10 +181,11 @@ public interface IRsOverseasApplicationService { * @param fileName 文件名 * @param uploadTime 上传时间 * @param uploadStatus 上传状态 + * @param ossId OSS文件ID * @return 是否成功 */ Boolean updatePartyRetentionFileInfo(Long applicationId, String filePath, String fileName, - java.util.Date uploadTime, String uploadStatus); + java.util.Date uploadTime, String uploadStatus, Long ossId); /** * 校验出国登记前置条件 diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsOverseasApplicationServiceImpl.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsOverseasApplicationServiceImpl.java index ebdb5f18..b5d433c3 100644 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsOverseasApplicationServiceImpl.java +++ b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsOverseasApplicationServiceImpl.java @@ -237,7 +237,8 @@ public class RsOverseasApplicationServiceImpl implements IRsOverseasApplicationS // ==================== 单位和联系信息 ==================== if (update.getRegistrationUnit() != null) updateWrapper.set(RsOverseasApplication::getRegistrationUnit, update.getRegistrationUnit()); if (update.getUnitLeaderSignature() != null) updateWrapper.set(RsOverseasApplication::getUnitLeaderSignature, update.getUnitLeaderSignature()); - if (update.getUnitContact() != null) updateWrapper.set(RsOverseasApplication::getUnitContact, update.getUnitContact()); + // unitContact 字段已删除 + // if (update.getUnitContact() != null) updateWrapper.set(RsOverseasApplication::getUnitContact, update.getUnitContact()); if (update.getOfficePhone() != null) updateWrapper.set(RsOverseasApplication::getOfficePhone, update.getOfficePhone()); if (update.getMobilePhone() != null) updateWrapper.set(RsOverseasApplication::getMobilePhone, update.getMobilePhone()); if (update.getContactPhone() != null) updateWrapper.set(RsOverseasApplication::getContactPhone, update.getContactPhone()); @@ -252,7 +253,8 @@ public class RsOverseasApplicationServiceImpl implements IRsOverseasApplicationS if (update.getStartDate() != null) updateWrapper.set(RsOverseasApplication::getStartDate, update.getStartDate()); if (update.getEndDate() != null) updateWrapper.set(RsOverseasApplication::getEndDate, update.getEndDate()); if (update.getDuration() != null) updateWrapper.set(RsOverseasApplication::getDuration, update.getDuration()); - if (update.getBudget() != null) updateWrapper.set(RsOverseasApplication::getBudget, update.getBudget()); + // budget 字段已删除 + // if (update.getBudget() != null) updateWrapper.set(RsOverseasApplication::getBudget, update.getBudget()); // ==================== 证件和文档 ==================== if (update.getInvitation() != null) updateWrapper.set(RsOverseasApplication::getInvitation, update.getInvitation()); @@ -502,9 +504,10 @@ public class RsOverseasApplicationServiceImpl implements IRsOverseasApplicationS if (applicationData.getEndDate() != null) { existingApp.setEndDate(applicationData.getEndDate()); } - if (applicationData.getBudget() != null) { - existingApp.setBudget(applicationData.getBudget()); - } + // budget 字段已删除 + // if (applicationData.getBudget() != null) { + // existingApp.setBudget(applicationData.getBudget()); + // } if (applicationData.getItinerary() != null) { existingApp.setItinerary(applicationData.getItinerary()); } @@ -559,8 +562,9 @@ public class RsOverseasApplicationServiceImpl implements IRsOverseasApplicationS lqw.eq(StringUtils.isNotBlank(query.getApprovalLevel()), RsOverseasApplication::getApprovalLevel, query.getApprovalLevel()); lqw.like(StringUtils.isNotBlank(query.getCurrentApprover()), RsOverseasApplication::getCurrentApprover, query.getCurrentApprover()); lqw.eq(query.getApplicantId() != null, RsOverseasApplication::getApplicantId, query.getApplicantId()); - lqw.ge(query.getBudgetMin() != null, RsOverseasApplication::getBudget, query.getBudgetMin()); - lqw.le(query.getBudgetMax() != null, RsOverseasApplication::getBudget, query.getBudgetMax()); + // budget 字段已删除,移除相关查询条件 + // lqw.ge(query.getBudgetMin() != null, RsOverseasApplication::getBudget, query.getBudgetMin()); + // lqw.le(query.getBudgetMax() != null, RsOverseasApplication::getBudget, query.getBudgetMax()); lqw.ge(query.getApplyTimeBegin() != null, RsOverseasApplication::getApplyTime, query.getApplyTimeBegin()); lqw.le(query.getApplyTimeEnd() != null, RsOverseasApplication::getApplyTime, query.getApplyTimeEnd()); lqw.ge(query.getStartDateBegin() != null, RsOverseasApplication::getStartDate, query.getStartDateBegin()); @@ -595,7 +599,8 @@ public class RsOverseasApplicationServiceImpl implements IRsOverseasApplicationS // ==================== 单位和联系信息 ==================== entity.setRegistrationUnit(bo.getRegistrationUnit()); // 登记备案责任单位 entity.setUnitLeaderSignature(bo.getUnitLeaderSignature()); // 单位负责人签名 - entity.setUnitContact(bo.getUnitContact()); // 单位联系人 + // unitContact 字段已删除 + // entity.setUnitContact(bo.getUnitContact()); // 单位联系人 entity.setOfficePhone(bo.getOfficePhone()); // 办公电话 entity.setMobilePhone(bo.getMobilePhone()); // 移动电话 entity.setContactPhone(bo.getContactPhone()); // 联系电话(兼容字段) @@ -610,7 +615,8 @@ public class RsOverseasApplicationServiceImpl implements IRsOverseasApplicationS entity.setStartDate(bo.getStartDate()); entity.setEndDate(bo.getEndDate()); entity.setDuration(bo.getDuration()); - entity.setBudget(bo.getBudget()); + // budget 字段已删除 + // entity.setBudget(bo.getBudget()); // ==================== 证件和文档 ==================== entity.setInvitation(bo.getInvitation()); @@ -669,7 +675,7 @@ public class RsOverseasApplicationServiceImpl implements IRsOverseasApplicationS @Override @Transactional public Boolean updateStampedFileInfo(Long applicationId, String filePath, String fileName, - java.util.Date uploadTime, String uploadStatus) { + java.util.Date uploadTime, String uploadStatus, Long ossId) { return baseMapper.update(null, new LambdaUpdateWrapper() .eq(RsOverseasApplication::getApplicationId, applicationId) @@ -677,6 +683,7 @@ public class RsOverseasApplicationServiceImpl implements IRsOverseasApplicationS .set(RsOverseasApplication::getStampedRegistrationFileName, fileName) .set(RsOverseasApplication::getStampedFileUploadTime, uploadTime) .set(RsOverseasApplication::getStampedFileUploadStatus, uploadStatus) + .set(RsOverseasApplication::getStampedFileOssId, ossId) ) > 0; } @@ -686,7 +693,7 @@ public class RsOverseasApplicationServiceImpl implements IRsOverseasApplicationS @Override @Transactional public Boolean updatePartyRetentionFileInfo(Long applicationId, String filePath, String fileName, - java.util.Date uploadTime, String uploadStatus) { + java.util.Date uploadTime, String uploadStatus, Long ossId) { return baseMapper.update(null, new LambdaUpdateWrapper() .eq(RsOverseasApplication::getApplicationId, applicationId) @@ -694,6 +701,7 @@ public class RsOverseasApplicationServiceImpl implements IRsOverseasApplicationS .set(RsOverseasApplication::getPartyRetentionFileName, fileName) .set(RsOverseasApplication::getPartyRetentionUploadTime, uploadTime) .set(RsOverseasApplication::getPartyRetentionUploadStatus, uploadStatus) + .set(RsOverseasApplication::getPartyRetentionFileOssId, ossId) ) > 0; } diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsOverseasRecordServiceImpl.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsOverseasRecordServiceImpl.java index ddf20490..8383a4a9 100644 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsOverseasRecordServiceImpl.java +++ b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsOverseasRecordServiceImpl.java @@ -198,7 +198,8 @@ public class RsOverseasRecordServiceImpl implements IRsOverseasRecordService { record.setActualStartDate(application.getStartDate()); record.setActualEndDate(application.getEndDate()); record.setActualDuration(application.getDuration()); - record.setActualBudget(application.getBudget()); + // 预算字段已删除,不再设置 + // record.setActualBudget(application.getBudget()); record.setInvitation(application.getInvitation()); record.setItinerary(application.getItinerary()); record.setAccommodationPlan(application.getAccommodationPlan()); diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/RsOverseasApplicationMapper.xml b/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/RsOverseasApplicationMapper.xml index 11ced7e2..10652440 100644 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/RsOverseasApplicationMapper.xml +++ b/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/RsOverseasApplicationMapper.xml @@ -22,7 +22,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - @@ -40,7 +39,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - @@ -56,8 +54,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + @@ -80,16 +84,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select oa.application_id, oa.serial_number, oa.applicant_id, oa.applicant_name, oa.gender, oa.birth_date, oa.photo, oa.id_number, oa.political_status, oa.registered_address, oa.department, oa.position, oa.professional_title, oa.administrative_level, oa.personnel_category, - oa.registration_unit, oa.unit_leader_signature, oa.unit_contact, oa.office_phone, oa.mobile_phone, + oa.registration_unit, oa.unit_leader_signature, oa.office_phone, oa.mobile_phone, oa.contact_phone, oa.contact_email, oa.document_name, oa.document_number, oa.destination_country, oa.exit_reason, oa.visit_relationship, oa.remarks, oa.purpose, oa.purpose_detail, oa.destination, oa.destination_city, - oa.start_date, oa.end_date, oa.duration, oa.budget, oa.invitation, oa.itinerary, + oa.start_date, oa.end_date, oa.duration, oa.invitation, oa.itinerary, oa.accommodation_plan, oa.transportation_plan, oa.status, oa.current_approver, oa.approval_level, oa.apply_time, oa.approval_time, oa.admin_remark, oa.applicant_remark, oa.emergency_contact, oa.signature, oa.stamped_registration_file_path, oa.stamped_registration_file_name, - oa.stamped_file_upload_time, oa.stamped_file_upload_status, + oa.stamped_file_upload_time, oa.stamped_file_upload_status, oa.stamped_file_oss_id, + oa.party_retention_file_path, oa.party_retention_file_name, + oa.party_retention_upload_time, oa.party_retention_upload_status, oa.party_retention_file_oss_id, oa.tenant_id, oa.create_by, oa.create_time, oa.update_by, oa.update_time, oa.deleted, CASE WHEN oa.status IS NULL OR oa.status = '' THEN '草稿' @@ -191,12 +197,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND oa.applicant_id = #{applicantId} - - AND oa.budget >= #{budgetMin} - - - AND oa.budget <= #{budgetMax} - AND oa.apply_time >= #{applyTimeBegin} @@ -246,12 +246,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND oa.applicant_id = #{applicantId} - - AND oa.budget >= #{budgetMin} - - - AND oa.budget <= #{budgetMax} - AND oa.apply_time >= #{applyTimeBegin} @@ -320,7 +314,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" personnel_category, registration_unit, unit_leader_signature, - unit_contact, office_phone, mobile_phone, contact_phone, @@ -338,7 +331,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" start_date, end_date, duration, - budget, invitation, itinerary, accommodation_plan, @@ -380,7 +372,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{personnelCategory}, #{registrationUnit}, #{unitLeaderSignature}, - #{unitContact}, #{officePhone}, #{mobilePhone}, #{contactPhone}, @@ -398,7 +389,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{startDate}, #{endDate}, #{duration}, - #{budget}, #{invitation}, #{itinerary}, #{accommodationPlan}, @@ -445,7 +435,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" personnel_category = #{personnelCategory}, registration_unit = #{registrationUnit}, unit_leader_signature = #{unitLeaderSignature}, - unit_contact = #{unitContact}, office_phone = #{officePhone}, mobile_phone = #{mobilePhone}, contact_phone = #{contactPhone}, @@ -463,7 +452,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" start_date = #{startDate}, end_date = #{endDate}, duration = #{duration}, - budget = #{budget}, invitation = #{invitation}, itinerary = #{itinerary}, accommodation_plan = #{accommodationPlan}, diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/RsOverseasRecordMapper.xml b/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/RsOverseasRecordMapper.xml index 78427757..32648189 100644 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/RsOverseasRecordMapper.xml +++ b/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/RsOverseasRecordMapper.xml @@ -216,7 +216,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" oa.application_id, oa.applicant_id, oa.applicant_name, oa.department, oa.position, oa.contact_phone, oa.contact_email, oa.purpose, oa.purpose_detail, oa.destination, oa.destination_city, oa.start_date as actual_start_date, oa.end_date as actual_end_date, oa.duration as actual_duration, - oa.budget as actual_budget, + NULL as actual_budget, oa.invitation, oa.itinerary, oa.accommodation_plan, oa.transportation_plan, '1' as completion_status, NULL as achievement, NULL as report_content, NULL as certificate_path, oa.tenant_id, NULL as create_dept, oa.create_by, oa.create_time, oa.update_by, oa.update_time, oa.deleted, diff --git a/web/src/api/rs/overseas.ts b/web/src/api/rs/overseas.ts index 0b16a2cf..902cf14a 100644 --- a/web/src/api/rs/overseas.ts +++ b/web/src/api/rs/overseas.ts @@ -40,7 +40,6 @@ export interface OverseasApplicationVO { personnelCategory?: string; // 人员类别代码 registrationUnit?: string; // 登记备案责任单位 unitLeaderSignature?: string; // 单位负责人签名 - unitContact?: string; // 单位联系人 officePhone?: string; // 办公电话 mobilePhone?: string; // 移动电话 contactPhone: string; @@ -56,6 +55,12 @@ export interface OverseasApplicationVO { stampedRegistrationFileName?: string; // 登记备案表盖章文件名 stampedFileUploadTime?: string; // 盖章文件上传时间 stampedFileUploadStatus?: string; // 盖章文件上传状态 + stampedFileOssId?: number; // 盖章文件OSS ID + partyRetentionFilePath?: string; // 党籍保留附件文件路径 + partyRetentionFileName?: string; // 党籍保留附件文件名 + partyRetentionUploadTime?: string; // 党籍保留附件上传时间 + partyRetentionUploadStatus?: string; // 党籍保留附件上传状态 + partyRetentionFileOssId?: number; // 党籍保留附件OSS ID purpose: string; purposeDetail: string; destination: string; @@ -107,7 +112,6 @@ export interface OverseasApplicationForm { administrativeLevel?: string; // 行政职级 personnelCategory?: string; // 人员类别代码 unitLeaderSignature?: string; // 单位负责人签名 - unitContact?: string; // 单位联系人 officePhone?: string; // 办公电话 mobilePhone?: string; // 移动电话 contactPhone?: string; // 联系电话(保留兼容性) diff --git a/web/src/views/rs/overseas/index.vue b/web/src/views/rs/overseas/index.vue index 21ba7545..d24c8f0b 100644 --- a/web/src/views/rs/overseas/index.vue +++ b/web/src/views/rs/overseas/index.vue @@ -169,9 +169,9 @@ - - - + + + @@ -436,7 +436,16 @@ - + +