From dd69bfc1fb8e5e28dde754fab7f23bfb1a18faa5 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 05 六月 2026 16:58:07 +0800
Subject: [PATCH] config(dev): 更新开发环境配置和文件上传功能 - 调整文件上传路径配置 - 修复OA环境文件链接前缀配置 - 在审批实例服务中添加报销相关数据删除逻辑 - 实现申请人姓名自动填充功能 - 添加文件下载预览路由的正则表达式支持 - 为企业新闻VO添加附件列表兼容别名 - 完善员工入职服务的异常处理 - 新增账户附件管理控制器 - 实现文件上传接口并返回完整文件信息

---
 src/main/java/com/ruoyi/basic/controller/FileUploadController.java            |   41 ++++++
 src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java         |   69 +++++------
 src/main/java/com/ruoyi/account/controller/AccountFileController.java         |  129 +++++++++++++++++++++
 src/main/java/com/ruoyi/collaborativeApproval/vo/EnterpriseNewsVo.java        |    9 +
 src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java                 |    4 
 src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java            |    3 
 src/main/resources/application-dev-pro.yml                                    |   20 +-
 src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java |   31 +++++
 src/main/java/com/ruoyi/project/common/CommonController.java                  |    4 
 src/main/resources/application-oa.yml                                         |    2 
 10 files changed, 259 insertions(+), 53 deletions(-)

diff --git a/src/main/java/com/ruoyi/account/controller/AccountFileController.java b/src/main/java/com/ruoyi/account/controller/AccountFileController.java
new file mode 100644
index 0000000..2a76e21
--- /dev/null
+++ b/src/main/java/com/ruoyi/account/controller/AccountFileController.java
@@ -0,0 +1,129 @@
+package com.ruoyi.account.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.StorageBlobVO;
+import com.ruoyi.basic.mapper.StorageAttachmentMapper;
+import com.ruoyi.basic.mapper.StorageBlobMapper;
+import com.ruoyi.basic.pojo.StorageAttachment;
+import com.ruoyi.basic.pojo.StorageBlob;
+import com.ruoyi.basic.utils.FileUtil;
+import com.ruoyi.framework.web.domain.R;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@RestController
+@RequiredArgsConstructor
+@Tag(name = "璐︽埛闄勪欢绠$悊")
+@RequestMapping("/account/accountFile")
+public class AccountFileController {
+
+    private final StorageAttachmentMapper storageAttachmentMapper;
+    private final StorageBlobMapper storageBlobMapper;
+    private final FileUtil fileUtil;
+
+    @GetMapping("/listPage")
+    @Operation(summary = "鍒嗛〉鏌ヨ闄勪欢鍒楄〃")
+    public R listPage(
+            @RequestParam Long accountId,
+            @RequestParam String accountType,
+            @RequestParam(defaultValue = "1") Long current,
+            @RequestParam(defaultValue = "10") Long size) {
+
+        Page<StorageBlobVO> page = new Page<>(current, size);
+
+        LambdaQueryWrapper<StorageAttachment> queryWrapper = new LambdaQueryWrapper<StorageAttachment>()
+                .eq(StorageAttachment::getRecordType, accountType)
+                .eq(StorageAttachment::getRecordId, accountId);
+
+        Long total = storageAttachmentMapper.selectCount(queryWrapper);
+        page.setTotal(total);
+
+        if (total == 0) {
+            page.setRecords(new ArrayList<>());
+            return R.ok(page);
+        }
+
+        List<StorageAttachment> storageAttachments = storageAttachmentMapper.selectList(queryWrapper);
+        Map<Long, Long> blobIdToAttachmentIdMap = storageAttachments.stream()
+                .collect(Collectors.toMap(StorageAttachment::getStorageBlobId, StorageAttachment::getId));
+
+        List<Long> storageBlobIds = storageAttachments.stream()
+                .map(StorageAttachment::getStorageBlobId)
+                .collect(Collectors.toList());
+
+        List<StorageBlob> storageBlobs = storageBlobMapper.selectByIds(storageBlobIds);
+        List<StorageBlobVO> storageBlobVOS = new ArrayList<>();
+        for (StorageBlob storageBlob : storageBlobs) {
+            StorageBlobVO storageBlobVO = new StorageBlobVO();
+            BeanUtils.copyProperties(storageBlob, storageBlobVO);
+            storageBlobVO.setPreviewURL(fileUtil.buildSignedPreviewUrl(storageBlobVO));
+            storageBlobVO.setUrl(fileUtil.buildSignedPreviewUrl(storageBlobVO));
+            storageBlobVO.setName(storageBlob.getOriginalFilename());
+            storageBlobVO.setDownloadURL(fileUtil.buildSignedDownloadUrl(storageBlobVO));
+            storageBlobVO.setStorageAttachmentId(blobIdToAttachmentIdMap.get(storageBlob.getId()));
+            storageBlobVOS.add(storageBlobVO);
+        }
+
+        page.setRecords(storageBlobVOS);
+        return R.ok(page);
+    }
+
+    @PostMapping("/add")
+    @Operation(summary = "淇濆瓨闄勪欢")
+    public R add(@RequestBody Map<String, Object> params) {
+        Long accountId = params.get("accountId") != null ? Long.valueOf(params.get("accountId").toString()) : null;
+        String accountType = params.get("accountType") != null ? params.get("accountType").toString() : null;
+
+        Long storageBlobId = null;
+        if (params.get("id") != null) {
+            storageBlobId = Long.valueOf(params.get("id").toString());
+        } else if (params.get("url") != null) {
+            String url = params.get("url").toString();
+            int previewIdx = url.indexOf("/preview/");
+            if (previewIdx >= 0) {
+                String afterPreview = url.substring(previewIdx + "/preview/".length());
+                int queryIdx = afterPreview.indexOf("?");
+                String uidFilename = queryIdx >= 0 ? afterPreview.substring(0, queryIdx) : afterPreview;
+                StorageBlob blob = storageBlobMapper.selectOne(new LambdaQueryWrapper<StorageBlob>()
+                        .eq(StorageBlob::getUidFilename, uidFilename).last("limit 1"));
+                if (blob != null) {
+                    storageBlobId = blob.getId();
+                }
+            }
+        }
+
+        if (accountId == null || accountType == null || storageBlobId == null) {
+            return R.fail("鍙傛暟涓嶅畬鏁�");
+        }
+
+        StorageAttachment storageAttachment = new StorageAttachment();
+        storageAttachment.setRecordType(accountType);
+        storageAttachment.setRecordId(accountId);
+        storageAttachment.setStorageBlobId(storageBlobId);
+        storageAttachment.setDeleted(0L);
+        storageAttachmentMapper.insert(storageAttachment);
+
+        return R.ok();
+    }
+
+    @DeleteMapping("/del")
+    @Operation(summary = "鍒犻櫎闄勪欢")
+    public R del(@RequestBody List<Long> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return R.fail("鍙傛暟涓嶈兘涓虹┖");
+        }
+        fileUtil.deleteStorageAttachmentsByStorageAttachmentIds(ids);
+        return R.ok();
+    }
+}
diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
index 1fb2333..0d9b5b4 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
@@ -11,7 +11,9 @@
 import com.ruoyi.approve.bean.vo.ApprovalInstanceVo;
 import com.ruoyi.approve.mapper.ApprovalInstanceMapper;
 import com.ruoyi.approve.mapper.ApprovalTemplateNodeApproverMapper;
+import com.ruoyi.approve.mapper.FinReimbursementDetailMapper;
 import com.ruoyi.approve.mapper.FinReimbursementMapper;
+import com.ruoyi.approve.mapper.FinReimbursementTravelMapper;
 import com.ruoyi.approve.pojo.*;
 import com.ruoyi.approve.service.*;
 import com.ruoyi.approve.utils.ApproveProcessConfigNodeUtils;
@@ -94,6 +96,8 @@
     private final EnterpriseNewsMapper enterpriseNewsMapper;
     private final EnterpriseNewsScopeDeptMapper enterpriseNewsScopeDeptMapper;
     private final ApprovalTemplateNodeApproverMapper approvalTemplateNodeApproverMapper;
+    private final FinReimbursementDetailMapper finReimbursementDetailMapper;
+    private final FinReimbursementTravelMapper finReimbursementTravelMapper;
 
     @Override
     public R listPage(Page<ApprovalInstanceVo> page, ApprovalInstanceDto approvalInstanceDto) {
@@ -144,6 +148,13 @@
         approvalInstanceDto.setInstanceNo(instanceNo);
         approvalInstanceDto.setStatus("PENDING");
         approvalInstanceDto.setCurrentLevel(1);
+        // 濡傛灉鍓嶇浼犱簡 applicantId 浣嗘病浼� applicantName锛屽垯浠庣敤鎴疯〃鏌ヨ濮撳悕
+        if (approvalInstanceDto.getApplicantId() != null && !StringUtils.hasText(approvalInstanceDto.getApplicantName())) {
+            SysUser applicantUser = sysUserMapper.selectUserById(approvalInstanceDto.getApplicantId());
+            if (applicantUser != null) {
+                approvalInstanceDto.setApplicantName(applicantUser.getNickName());
+            }
+        }
         boolean saved = this.save(approvalInstanceDto);
         if (!saved) {
             return false;
@@ -184,6 +195,26 @@
         if (ids == null || ids.isEmpty()) {
             return false;
         }
+
+        // 鍒犻櫎鍏宠仈鐨勪笟鍔℃暟鎹紙鎶ラ攢鍗曠瓑锛�
+        List<Long> reimbursementIds = new ArrayList<>();
+        List<ApprovalInstance> instances = approvalInstanceMapper.selectBatchIds(ids);
+        for (ApprovalInstance instance : instances) {
+            if (instance.getBusinessId() != null && instance.getBusinessType() != null) {
+                Long businessType = instance.getBusinessType();
+                if (TypeEnums.TRAVEL_REIMBURSEMENT_APPROVAL.getCode().equals(businessType)
+                        || TypeEnums.EXPENSE_APPROVAL.getCode().equals(businessType)) {
+                    reimbursementIds.add(instance.getBusinessId());
+                }
+            }
+        }
+        if (!reimbursementIds.isEmpty()) {
+            fileUtil.deleteStorageAttachmentsByApplicationAndRecordTypeAndRecordIds(ApplicationTypeEnum.FILE, RecordTypeEnum.FIN_REIMBURSEMENT, reimbursementIds);
+            finReimbursementDetailMapper.delete(Wrappers.<FinReimbursementDetail>lambdaQuery().in(FinReimbursementDetail::getReimbursementId, reimbursementIds));
+            finReimbursementTravelMapper.delete(Wrappers.<FinReimbursementTravel>lambdaQuery().in(FinReimbursementTravel::getReimbursementId, reimbursementIds));
+            finReimbursementMapper.delete(Wrappers.<FinReimbursement>lambdaQuery().in(FinReimbursement::getId, reimbursementIds));
+        }
+
         fileUtil.deleteStorageAttachmentsByApplicationAndRecordTypeAndRecordIds(ApplicationTypeEnum.FILE, RecordTypeEnum.APPROVAL_INSTANCE, ids);
 
         int instanceRows = approvalInstanceMapper.update(
diff --git a/src/main/java/com/ruoyi/basic/controller/FileUploadController.java b/src/main/java/com/ruoyi/basic/controller/FileUploadController.java
new file mode 100644
index 0000000..97cfdb0
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/controller/FileUploadController.java
@@ -0,0 +1,41 @@
+package com.ruoyi.basic.controller;
+
+import com.ruoyi.basic.dto.StorageBlobVO;
+import com.ruoyi.basic.service.StorageBlobService;
+import com.ruoyi.framework.web.domain.R;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequiredArgsConstructor
+@Tag(name = "鏂囦欢涓婁紶")
+@RequestMapping("/file")
+public class FileUploadController {
+
+    private final StorageBlobService storageBlobService;
+
+    @PostMapping("/upload")
+    @Operation(summary = "鏂囦欢涓婁紶")
+    public R upload(@RequestParam("file") List<MultipartFile> file) {
+        List<StorageBlobVO> result = storageBlobService.upload(file, false);
+        if (result == null || result.isEmpty()) {
+            return R.fail("涓婁紶澶辫触");
+        }
+        StorageBlobVO vo = result.get(0);
+        Map<String, Object> data = new HashMap<>();
+        data.put("id", vo.getId());
+        data.put("originalName", vo.getOriginalFilename());
+        data.put("tempPath", vo.getPreviewURL());
+        data.put("uidFilename", vo.getUidFilename());
+        data.put("contentType", vo.getContentType());
+        data.put("byteSize", vo.getByteSize());
+        return R.ok(data);
+    }
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/vo/EnterpriseNewsVo.java b/src/main/java/com/ruoyi/collaborativeApproval/vo/EnterpriseNewsVo.java
index 66123b9..2f8ef13 100644
--- a/src/main/java/com/ruoyi/collaborativeApproval/vo/EnterpriseNewsVo.java
+++ b/src/main/java/com/ruoyi/collaborativeApproval/vo/EnterpriseNewsVo.java
@@ -12,4 +12,13 @@
     private String createUserName;
 
     private List<StorageBlobVO> storageBlobDTOs;
+
+    /** 鍓嶇鍏煎鍒悕锛屾槧灏� storageBlobDTOs */
+    public List<StorageBlobVO> getAttachmentList() {
+        return storageBlobDTOs;
+    }
+
+    public void setAttachmentList(List<StorageBlobVO> attachmentList) {
+        this.storageBlobDTOs = attachmentList;
+    }
 }
diff --git a/src/main/java/com/ruoyi/project/common/CommonController.java b/src/main/java/com/ruoyi/project/common/CommonController.java
index 093e132..469e967 100644
--- a/src/main/java/com/ruoyi/project/common/CommonController.java
+++ b/src/main/java/com/ruoyi/project/common/CommonController.java
@@ -52,7 +52,7 @@
         return R.ok(storageBlobService.upload(files, true));
     }
 
-    @GetMapping("/download/{fileName}")
+    @GetMapping("/download/{fileName:.+}")
     @Anonymous
     public void download(@PathVariable String fileName,
                          @RequestParam(value = "token", required = false) String token,
@@ -71,7 +71,7 @@
         Files.copy(file.toPath(), response.getOutputStream());
     }
 
-    @GetMapping("/preview/{fileName}")
+    @GetMapping("/preview/{fileName:.+}")
     @Anonymous
     public ResponseEntity<FileSystemResource> preview(@PathVariable String fileName,
                                                       @RequestParam(value = "token", required = false) String token,
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java b/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
index 8eb5334..26ac206 100644
--- a/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
+++ b/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
@@ -18,6 +18,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -118,7 +119,7 @@
      */
     @PostMapping("/import")
     @Log(title = "鍦ㄨ亴鍛樺伐瀵煎叆", businessType = BusinessType.IMPORT)
-    public AjaxResult importData(@RequestPart("file") MultipartFile file) {
+    public AjaxResult importData(@RequestPart("file") MultipartFile file) throws IOException {
         Boolean b = staffOnJobService.importData(file);
         if (b) {
             return AjaxResult.success("瀵煎叆鎴愬姛");
diff --git a/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java b/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
index 46588d1..4f1836e 100644
--- a/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
+++ b/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
@@ -9,6 +9,8 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import jakarta.servlet.http.HttpServletResponse;
+
+import java.io.IOException;
 import java.util.List;
 
 public interface IStaffOnJobService extends IService<StaffOnJob> {
@@ -30,7 +32,7 @@
 
     List<StaffOnJobDto> staffOnJobList(StaffOnJob staffOnJob);
 
-    Boolean importData(MultipartFile file);
+    Boolean importData(MultipartFile file) throws IOException;
 
     String exportCopy(HttpServletResponse response, StaffOnJob staffOnJob) throws Exception;
 }
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
index 1f20da2..cbf9ebe 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -34,10 +34,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.io.StringWriter;
+import java.io.*;
 import java.nio.charset.StandardCharsets;
 import java.time.Instant;
 import java.time.LocalDate;
@@ -111,7 +108,8 @@
         // 鍒涘缓鍚堝悓璁板綍
         StaffContract staffContract = new StaffContract();
         staffContract.setStaffOnJobId(staffOnJobPrams.getId());
-        staffContract.setContractTerm(staffOnJobPrams.getContractTerm());
+        String contractTerm = staffOnJobPrams.getContractTerm();
+        staffContract.setContractTerm(StringUtils.isNotEmpty(contractTerm) ? contractTerm : null);
         staffContract.setContractStartTime(staffOnJobPrams.getContractStartTime());
         staffContract.setContractEndTime(staffOnJobPrams.getContractEndTime());
         return staffContractMapper.insert(staffContract);
@@ -321,41 +319,36 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean importData(MultipartFile file) {
-        try {
-            ExcelUtil<StaffOnJobExcelDto> util = new ExcelUtil<>(StaffOnJobExcelDto.class);
-            List<StaffOnJobExcelDto> staffOnJobs = util.importExcel(file.getInputStream());
-            if (CollectionUtils.isEmpty(staffOnJobs)){
-                return false;
-            }
-            // 鑾峰彇鎵�鏈夐儴闂ㄦ暟鎹�
-            List<SysDept> sysDepts = sysDeptMapper.selectList(Wrappers.<SysDept>lambdaQuery().eq(SysDept::getDelFlag, 0));
-            // 鑾峰彇鎵�鏈夎鑹叉暟鎹�
-            List<SysRole> sysRoles = sysRoleMapper.selectRoleAll();
-            staffOnJobs.forEach(staffOnJob -> {
-                StaffOnJobDto staffOnJobDto = new StaffOnJobDto();
-                BeanUtils.copyProperties(staffOnJob, staffOnJobDto);
-                // 閫氳繃鍚嶇О鑾峰彇閮ㄩ棬id
-                staffOnJobDto.setSysDeptId(// ... existing code ...
-                        sysDepts.stream()
-                            .filter(dept -> dept.getDeptName() != null && dept.getDeptName().equals(staffOnJob.getSysDeptName()))
-                            .findFirst()
-                            .map(SysDept::getDeptId)
-                            .orElse(null)
-                        );
-                // 閫氳繃鍚嶇О鑾峰彇瑙掕壊id
-                staffOnJobDto.setRoleId(sysRoles.stream()
-                        .filter(role -> role.getRoleName() != null && role.getRoleName().equals(staffOnJob.getRoleName()))
-                        .findFirst()
-                        .map(SysRole::getRoleId)
-                        .orElse( null));
-                add(staffOnJobDto);
-            });
-            return true;
-        } catch (Exception e) {
-            e.printStackTrace();
+    public Boolean importData(MultipartFile file) throws IOException {
+        ExcelUtil<StaffOnJobExcelDto> util = new ExcelUtil<>(StaffOnJobExcelDto.class);
+        List<StaffOnJobExcelDto> staffOnJobs = util.importExcel(file.getInputStream());
+        if (CollectionUtils.isEmpty(staffOnJobs)){
             return false;
         }
+        // 鑾峰彇鎵�鏈夐儴闂ㄦ暟鎹�
+        List<SysDept> sysDepts = sysDeptMapper.selectList(Wrappers.<SysDept>lambdaQuery().eq(SysDept::getDelFlag, 0));
+        // 鑾峰彇鎵�鏈夎鑹叉暟鎹�
+        List<SysRole> sysRoles = sysRoleMapper.selectRoleAll();
+        staffOnJobs.forEach(staffOnJob -> {
+            StaffOnJobDto staffOnJobDto = new StaffOnJobDto();
+            BeanUtils.copyProperties(staffOnJob, staffOnJobDto);
+            // 閫氳繃鍚嶇О鑾峰彇閮ㄩ棬id
+            staffOnJobDto.setSysDeptId(
+                    sysDepts.stream()
+                        .filter(dept -> dept.getDeptName() != null && dept.getDeptName().equals(staffOnJob.getSysDeptName()))
+                        .findFirst()
+                        .map(SysDept::getDeptId)
+                        .orElse(null)
+                    );
+            // 閫氳繃鍚嶇О鑾峰彇瑙掕壊id
+            staffOnJobDto.setRoleId(sysRoles.stream()
+                    .filter(role -> role.getRoleName() != null && role.getRoleName().equals(staffOnJob.getRoleName()))
+                    .findFirst()
+                    .map(SysRole::getRoleId)
+                    .orElse( null));
+            add(staffOnJobDto);
+        });
+        return true;
     }
 
 
diff --git a/src/main/resources/application-dev-pro.yml b/src/main/resources/application-dev-pro.yml
index abb1950..ce4df17 100644
--- a/src/main/resources/application-dev-pro.yml
+++ b/src/main/resources/application-dev-pro.yml
@@ -28,7 +28,7 @@
 # 寮�鍙戠幆澧冮厤缃�
 server:
   # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
-  port: 7003
+  port: 8888
   servlet:
     # 搴旂敤鐨勮闂矾寰�
     context-path: /
@@ -71,9 +71,9 @@
     druid:
       # 涓诲簱鏁版嵁婧�
       master:
-        url: jdbc:mysql://localhost:3306/product-inventory-management-new-pro?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        url: jdbc:mysql://110.167.133.1:9002/product-inventory-management-oa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
         username: root
-        password: 123456
+        password: oa@123456..
       # 浠庡簱鏁版嵁婧�
       slave:
         # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
@@ -147,12 +147,12 @@
     # redis 閰嶇疆
     redis:
       # 鍦板潃
-      host: 127.0.0.1
+      host: 47.114.74.44
       #    host: 172.17.0.1
       # 绔彛锛岄粯璁や负6379
-      port: 6379
+      port: 6399
       # 鏁版嵁搴撶储寮�
-      database: 0
+      database: 7
       # 瀵嗙爜
       #    password: root2022!
       password:
@@ -254,11 +254,11 @@
 
 # 鏂囦欢涓婁紶閰嶇疆
 file:
-  temp-dir: D:/ruoyi/temp/uploads   # 涓存椂鐩綍 鍚庢湡鍒犻櫎
-  upload-dir: D:/ruoyi/prod/uploads # 姝e紡鐩綍 鍚庢湡鍒犻櫎
-  path: C:/Users/12631/Desktop/download/uploads # 涓婁紶鐩綍
+  temp-dir: E:/ruoyi/oa/file/temp/uploads   # 涓存椂鐩綍
+  upload-dir: E:/ruoyi/oa/file/prod/uploads # 姝e紡鐩綍
+  path: E:/ruoyi/oa/file # 涓婁紶鐩綍
   urlPrefix: /common # 閾炬帴鍓嶇紑
-  domain: http://127.0.0.1:7003 # 鍩熷悕鍓嶇紑
+  domain: http://localhost:8888 # 鍩熷悕鍓嶇紑
   expired: 120 # 杩囨湡鏃堕棿(鍗曚綅:鍒嗛挓)
   useLimit: 10 # 浣跨敤娆℃暟
   compress: true # 鏄惁鍘嬬缉
diff --git a/src/main/resources/application-oa.yml b/src/main/resources/application-oa.yml
index 3542066..350d672 100644
--- a/src/main/resources/application-oa.yml
+++ b/src/main/resources/application-oa.yml
@@ -259,7 +259,7 @@
   temp-dir: /javaWork/product-inventory-management/file/temp/uploads   # 涓存椂鐩綍
   upload-dir: /javaWork/product-inventory-management/file/prod/uploads # 姝e紡鐩綍
   path: /javaWork/product-inventory-management/file # 涓婁紶鐩綍
-  urlPrefix: /prod-api/common # 閾炬帴鍓嶇紑
+  urlPrefix: /common # 閾炬帴鍓嶇紑
   domain: http://110.167.133.1:9001 # 鍩熷悕鍓嶇紑
   expired: 120 # 杩囨湡鏃堕棿(鍗曚綅:鍒嗛挓)
   useLimit: 10 # 浣跨敤娆℃暟

--
Gitblit v1.9.3