Selaa lähdekoodia

“rs测试修改10.12版”

weizhong 1 vuosi sitten
vanhempi
commit
bc379bf3b8

+ 91 - 41
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<Void> add(@Validated(AddGroup.class) @RequestBody RsOverseasApplicationBo bo) {
+    public R<Map<String, Object>> 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<String, Object> 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<String, Object> 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<String, Object> 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();
+        }
+    }
+
     /**
      * 验证文件类型
      */

+ 12 - 12
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;
+
     /**
      * 基础字段:创建者
      */

+ 0 - 11
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;
-
     /**
      * 行程安排
      */

+ 0 - 10
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;
-
     /**
      * 申请时间范围 - 开始时间
      */

+ 31 - 10
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;
+
     /**
      * 租户编号
      */

+ 4 - 2
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);
 
     /**
      * 校验出国登记前置条件

+ 19 - 11
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<RsOverseasApplication>()
                 .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<RsOverseasApplication>()
                 .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;
     }
 

+ 2 - 1
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());

+ 11 - 23
backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/RsOverseasApplicationMapper.xml

@@ -22,7 +22,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="personnelCategory" column="personnel_category"/>
         <result property="registrationUnit" column="registration_unit"/>
         <result property="unitLeaderSignature" column="unit_leader_signature"/>
-        <result property="unitContact" column="unit_contact"/>
         <result property="officePhone" column="office_phone"/>
         <result property="mobilePhone" column="mobile_phone"/>
         <result property="contactPhone" column="contact_phone"/>
@@ -40,7 +39,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="startDate" column="start_date"/>
         <result property="endDate" column="end_date"/>
         <result property="duration" column="duration"/>
-        <result property="budget" column="budget"/>
         <result property="invitation" column="invitation"/>
         <result property="itinerary" column="itinerary"/>
         <result property="accommodationPlan" column="accommodation_plan"/>
@@ -56,8 +54,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="signature" column="signature"/>
         <result property="stampedRegistrationFilePath" column="stamped_registration_file_path"/>
         <result property="stampedRegistrationFileName" column="stamped_registration_file_name"/>
+        <result property="stampedFileOssId" column="stamped_file_oss_id"/>
         <result property="stampedFileUploadTime" column="stamped_file_upload_time"/>
         <result property="stampedFileUploadStatus" column="stamped_file_upload_status"/>
+        <result property="partyRetentionFilePath" column="party_retention_file_path"/>
+        <result property="partyRetentionFileName" column="party_retention_file_name"/>
+        <result property="partyRetentionFileOssId" column="party_retention_file_oss_id"/>
+        <result property="partyRetentionUploadTime" column="party_retention_upload_time"/>
+        <result property="partyRetentionUploadStatus" column="party_retention_upload_status"/>
         <result property="tenantId" column="tenant_id"/>
         <result property="createBy" column="create_by"/>
         <result property="createTime" column="create_time"/>
@@ -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"
             <if test="applicantId != null">
                 AND oa.applicant_id = #{applicantId}
             </if>
-            <if test="budgetMin != null">
-                AND oa.budget >= #{budgetMin}
-            </if>
-            <if test="budgetMax != null">
-                AND oa.budget &lt;= #{budgetMax}
-            </if>
             <if test="applyTimeBegin != null">
                 AND oa.apply_time >= #{applyTimeBegin}
             </if>
@@ -246,12 +246,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="applicantId != null">
                 AND oa.applicant_id = #{applicantId}
             </if>
-            <if test="budgetMin != null">
-                AND oa.budget >= #{budgetMin}
-            </if>
-            <if test="budgetMax != null">
-                AND oa.budget &lt;= #{budgetMax}
-            </if>
             <if test="applyTimeBegin != null">
                 AND oa.apply_time >= #{applyTimeBegin}
             </if>
@@ -320,7 +314,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="personnelCategory != null and personnelCategory != ''">personnel_category,</if>
             <if test="registrationUnit != null and registrationUnit != ''">registration_unit,</if>
             <if test="unitLeaderSignature != null and unitLeaderSignature != ''">unit_leader_signature,</if>
-            <if test="unitContact != null and unitContact != ''">unit_contact,</if>
             <if test="officePhone != null and officePhone != ''">office_phone,</if>
             <if test="mobilePhone != null and mobilePhone != ''">mobile_phone,</if>
             <if test="contactPhone != null and contactPhone != ''">contact_phone,</if>
@@ -338,7 +331,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="startDate != null">start_date,</if>
             <if test="endDate != null">end_date,</if>
             <if test="duration != null">duration,</if>
-            <if test="budget != null">budget,</if>
             <if test="invitation != null and invitation != ''">invitation,</if>
             <if test="itinerary != null and itinerary != ''">itinerary,</if>
             <if test="accommodationPlan != null and accommodationPlan != ''">accommodation_plan,</if>
@@ -380,7 +372,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="personnelCategory != null and personnelCategory != ''">#{personnelCategory},</if>
             <if test="registrationUnit != null and registrationUnit != ''">#{registrationUnit},</if>
             <if test="unitLeaderSignature != null and unitLeaderSignature != ''">#{unitLeaderSignature},</if>
-            <if test="unitContact != null and unitContact != ''">#{unitContact},</if>
             <if test="officePhone != null and officePhone != ''">#{officePhone},</if>
             <if test="mobilePhone != null and mobilePhone != ''">#{mobilePhone},</if>
             <if test="contactPhone != null and contactPhone != ''">#{contactPhone},</if>
@@ -398,7 +389,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="startDate != null">#{startDate},</if>
             <if test="endDate != null">#{endDate},</if>
             <if test="duration != null">#{duration},</if>
-            <if test="budget != null">#{budget},</if>
             <if test="invitation != null and invitation != ''">#{invitation},</if>
             <if test="itinerary != null and itinerary != ''">#{itinerary},</if>
             <if test="accommodationPlan != null and accommodationPlan != ''">#{accommodationPlan},</if>
@@ -445,7 +435,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="personnelCategory != null">personnel_category = #{personnelCategory},</if>
             <if test="registrationUnit != null">registration_unit = #{registrationUnit},</if>
             <if test="unitLeaderSignature != null">unit_leader_signature = #{unitLeaderSignature},</if>
-            <if test="unitContact != null">unit_contact = #{unitContact},</if>
             <if test="officePhone != null">office_phone = #{officePhone},</if>
             <if test="mobilePhone != null">mobile_phone = #{mobilePhone},</if>
             <if test="contactPhone != null">contact_phone = #{contactPhone},</if>
@@ -463,7 +452,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="startDate != null">start_date = #{startDate},</if>
             <if test="endDate != null">end_date = #{endDate},</if>
             <if test="duration != null">duration = #{duration},</if>
-            <if test="budget != null">budget = #{budget},</if>
             <if test="invitation != null">invitation = #{invitation},</if>
             <if test="itinerary != null">itinerary = #{itinerary},</if>
             <if test="accommodationPlan != null">accommodation_plan = #{accommodationPlan},</if>

+ 1 - 1
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,

+ 6 - 2
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; // 联系电话(保留兼容性)

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 680 - 153
web/src/views/rs/overseas/index.vue


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä