|
@@ -1,20 +1,32 @@
|
|
|
package com.ruoyi.project.training.bccnew.controller;
|
|
|
|
|
|
+import com.deepoove.poi.XWPFTemplate;
|
|
|
+import com.deepoove.poi.data.*;
|
|
|
+import com.deepoove.poi.data.style.BorderStyle;
|
|
|
+import com.ruoyi.common.utils.file.FileUploadUtils;
|
|
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
|
|
import com.ruoyi.framework.aspectj.lang.annotation.Log;
|
|
|
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
|
|
|
+import com.ruoyi.framework.config.RuoYiConfig;
|
|
|
import com.ruoyi.framework.web.controller.BaseController;
|
|
|
import com.ruoyi.framework.web.domain.AjaxResult;
|
|
|
import com.ruoyi.framework.web.page.TableDataInfo;
|
|
|
+import com.ruoyi.project.system.domain.SysUser;
|
|
|
+import com.ruoyi.project.system.service.ISysUserService;
|
|
|
import com.ruoyi.project.training.bccnew.domain.*;
|
|
|
import com.ruoyi.project.training.bccnew.service.*;
|
|
|
-import com.ruoyi.project.training.newstaff.domain.TTnSchoolplan;
|
|
|
-import com.ruoyi.project.training.newstaff.domain.TTnTransferplan;
|
|
|
+import io.jsonwebtoken.lang.Assert;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
-import java.util.List;
|
|
|
+import java.io.File;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.InputStream;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
+import java.util.*;
|
|
|
import java.util.concurrent.CountDownLatch;
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
import java.util.concurrent.Executors;
|
|
@@ -64,6 +76,18 @@ public class TTsNewController extends BaseController {
|
|
|
@Autowired
|
|
|
private ITTsFtplanService tTsFtplanService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ISysUserService sysUserService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ITTsYsplanService tsYsplanService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ITTsFlplanService tsFlplanService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ITTsFtplanService tsFtplanService;
|
|
|
+
|
|
|
/**
|
|
|
* 查询导师带徒列表
|
|
|
*/
|
|
@@ -171,8 +195,317 @@ public class TTsNewController extends BaseController {
|
|
|
@PreAuthorize("@ss.hasPermi('bccnew:tsnew:add')")
|
|
|
@Log(title = "导师带徒", businessType = BusinessType.INSERT)
|
|
|
@PostMapping
|
|
|
- public AjaxResult add(@RequestBody TTsNew tTsNew) {
|
|
|
- return toAjax(tTsNewService.insertTTsNew(tTsNew));
|
|
|
+ public AjaxResult add(@RequestBody TTsNew tTsNew) throws IOException {
|
|
|
+ // 新增操作
|
|
|
+ int result = tTsNewService.insertTTsNew(tTsNew);
|
|
|
+ // 新增生成word
|
|
|
+ if (result != 0) {
|
|
|
+ this.genWordAfterInsert(tTsNew);
|
|
|
+ }
|
|
|
+ // 返回新增操作结果
|
|
|
+ return toAjax(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增生成word
|
|
|
+ */
|
|
|
+ private void genWordAfterInsert(TTsNew tTsNew) throws IOException {
|
|
|
+ // 生成word - Mentor Agreement
|
|
|
+ String mentorAgreementWordPath = this.genMentorAgreementWord(tTsNew);
|
|
|
+ // 生成word - Target Plan
|
|
|
+ String targetPlanWordPath = this.genTargetPlanWord(tTsNew);
|
|
|
+ // 生成word - Appraisal Form
|
|
|
+ String appraisalFormWordPath = this.genAppraisalFormWord(tTsNew);
|
|
|
+ // 更新文件地址
|
|
|
+ tTsNew.setMentorAgreementWordPath(mentorAgreementWordPath);
|
|
|
+ tTsNew.setTargetPlanWordPath(targetPlanWordPath);
|
|
|
+ tTsNew.setAppraisalFormWordPath(appraisalFormWordPath);
|
|
|
+ tTsNewService.updateTTsNew(tTsNew);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成word - Mentor Agreement
|
|
|
+ */
|
|
|
+ private String genMentorAgreementWord(TTsNew tTsNew) throws IOException {
|
|
|
+ //渲染文本
|
|
|
+ Map<String, Object> params = getMentorAgreementWordData(tTsNew);
|
|
|
+ // 模板路径
|
|
|
+ String templatePath = "static/word/training/mentorAgreement.docx";
|
|
|
+ // 生成word的路径
|
|
|
+ String fileDir = RuoYiConfig.getProfile() + "/" + "mentorAgreementWord";
|
|
|
+ // 生成word的文件名称
|
|
|
+ String time = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd_HH-mm-ss"));
|
|
|
+ String fileName = time + tTsNew.getNewId() + ".docx";
|
|
|
+ String wordPath = this.createWord(templatePath, fileDir, fileName, params, "mentorAgreementWord");
|
|
|
+ return wordPath;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成word - Target Plan
|
|
|
+ */
|
|
|
+ private String genTargetPlanWord(TTsNew tTsNew) throws IOException {
|
|
|
+ //渲染文本
|
|
|
+ Map<String, Object> params = getTargetPlanWordData(tTsNew);
|
|
|
+ // 模板路径
|
|
|
+ String templatePath = "static/word/training/targetPlan.docx";
|
|
|
+ // 生成word的路径
|
|
|
+ String fileDir = RuoYiConfig.getProfile() + "/" + "targetPlanWord";
|
|
|
+ // 生成word的文件名称
|
|
|
+ String time = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd_HH-mm-ss"));
|
|
|
+ String fileName = time + tTsNew.getNewId() + ".docx";
|
|
|
+ String wordPath = this.createWord(templatePath, fileDir, fileName, params, "targetPlanWord");
|
|
|
+ return wordPath;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成word - Appraisal Form
|
|
|
+ */
|
|
|
+ private String genAppraisalFormWord(TTsNew tTsNew) throws IOException {
|
|
|
+ //渲染文本
|
|
|
+ Map<String, Object> params = getAppraisalFormWordData(tTsNew);
|
|
|
+ // 模板路径
|
|
|
+ String templatePath = "static/word/training/appraisalForm.docx";
|
|
|
+ // 生成word的路径
|
|
|
+ String fileDir = RuoYiConfig.getProfile() + "/" + "appraisalFormWord";
|
|
|
+ // 生成word的文件名称
|
|
|
+ String time = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd_HH-mm-ss"));
|
|
|
+ String fileName = time + tTsNew.getNewId() + ".docx";
|
|
|
+ String wordPath = this.createWord(templatePath, fileDir, fileName, params, "appraisalFormWord");
|
|
|
+ return wordPath;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取word数据 - Mentor Agreement
|
|
|
+ */
|
|
|
+ private Map<String, Object> getMentorAgreementWordData(TTsNew tTsNew) {
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ Date startDate = new Date(tTsNew.getStartdate().toString());
|
|
|
+ startDate.setMonth(startDate.getMonth() + 1);
|
|
|
+ Date endDate = tTsNew.getEnddate();
|
|
|
+ params.put("startDate", Texts.of(formatter.format(startDate)).create());
|
|
|
+ params.put("endDate", Texts.of(formatter.format(endDate)).create());
|
|
|
+ String mentorStaffId = tTsNew.getMentorStaffId();
|
|
|
+ String staffId = tTsNew.getStaffId();
|
|
|
+ SysUser mentor = sysUserService.selectUserByStaffId(mentorStaffId);
|
|
|
+ SysUser apprentice = sysUserService.selectUserByStaffId(staffId);
|
|
|
+ params.put("mentorSignature", Pictures.ofLocal(fileName(mentor.getSignUrl())).size(100, 40).create());
|
|
|
+ params.put("apprenticeSignature", Pictures.ofLocal(fileName(apprentice.getSignUrl())).size(100, 40).create());
|
|
|
+ String date = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
+ params.put("date", Texts.of(date).create());
|
|
|
+ // 渲染文本
|
|
|
+ return params;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取word数据 - Target Plan
|
|
|
+ */
|
|
|
+ private Map<String, Object> getTargetPlanWordData(TTsNew tTsNew) {
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ Date startDate = new Date(tTsNew.getStartdate().toString());
|
|
|
+ startDate.setMonth(startDate.getMonth() + 1);
|
|
|
+ Date endDate = tTsNew.getEnddate();
|
|
|
+ params.put("startDate", Texts.of(formatter.format(startDate)).create());
|
|
|
+ params.put("endDate", Texts.of(formatter.format(endDate)).create());
|
|
|
+ String mentorStaffId = tTsNew.getMentorStaffId();
|
|
|
+ String staffId = tTsNew.getStaffId();
|
|
|
+ SysUser mentor = sysUserService.selectUserByStaffId(mentorStaffId);
|
|
|
+ SysUser apprentice = sysUserService.selectUserByStaffId(staffId);
|
|
|
+ params.put("tutorSignature", Pictures.ofLocal(fileName(mentor.getSignUrl())).size(100, 40).create());
|
|
|
+ params.put("traineeSignature", Pictures.ofLocal(fileName(apprentice.getSignUrl())).size(100, 40).create());
|
|
|
+ params.put("tutor", Texts.of(mentor.getNickName()).create());
|
|
|
+ params.put("trainee", Texts.of(apprentice.getNickName()).create());
|
|
|
+ String[][] planList = null;
|
|
|
+ String post = "";
|
|
|
+ Long planType = tTsNew.getPlanType();
|
|
|
+ Long newId = tTsNew.getNewId();
|
|
|
+ if (planType == 1L) {
|
|
|
+ post = "裂解";
|
|
|
+ TTsLjplan ljplan = new TTsLjplan();
|
|
|
+ ljplan.setNewId(newId);
|
|
|
+ List<TTsLjplan> tTsLjplans = tTsLjplanService.selectTTsLjplanListByNewId(ljplan);
|
|
|
+ planList = new String[tTsLjplans.size()+1][];
|
|
|
+ planList[0] = new String[] { "Training Plan 详细计划", "Planned Training Date 计划培训日期", "Training Topics 培训主题", "Expected Training Requirement 培训预期达到的要求" };
|
|
|
+ int i = 0;
|
|
|
+ for (TTsLjplan plan : tTsLjplans) {
|
|
|
+ i++;
|
|
|
+ planList[i] = new String[] { plan.getDetailPlan(), "", plan.getTopic(), "学习结束考核,且考试成绩达到80分以上" };
|
|
|
+ }
|
|
|
+ } else if (planType == 2L) {
|
|
|
+ post = "压缩";
|
|
|
+ TTsYsplan ysplan = new TTsYsplan();
|
|
|
+ ysplan.setNewId(newId);
|
|
|
+ List<TTsYsplan> tTsYsplans = tTsYsplanService.selectTTsYsplanListByNewId(ysplan);
|
|
|
+ planList = new String[tTsYsplans.size()+1][];
|
|
|
+ planList[0] = new String[] { "Training Plan 详细计划", "Planned Training Date 计划培训日期", "Training Topics 培训主题", "Expected Training Requirement 培训预期达到的要求" };
|
|
|
+ int i = 0;
|
|
|
+ for (TTsYsplan plan : tTsYsplans) {
|
|
|
+ i++;
|
|
|
+ planList[i] = new String[] { plan.getDetailPlan(), "", plan.getTopic(), "学习结束考核,且考试成绩达到80分以上" };
|
|
|
+ }
|
|
|
+ } else if (planType == 3L) {
|
|
|
+ post = "分离";
|
|
|
+ TTsFlplan flplan = new TTsFlplan();
|
|
|
+ flplan.setNewId(newId);
|
|
|
+ List<TTsFlplan> tTsFlplans = tTsFlplanService.selectTTsFlplanListByNewId(flplan);
|
|
|
+ planList = new String[tTsFlplans.size()+1][];
|
|
|
+ planList[0] = new String[] { "Training Plan 详细计划", "Planned Training Date 计划培训日期", "Training Topics 培训主题", "Expected Training Requirement 培训预期达到的要求" };
|
|
|
+ int i = 0;
|
|
|
+ for (TTsFlplan plan : tTsFlplans) {
|
|
|
+ i++;
|
|
|
+ planList[i] = new String[] { plan.getDetailPlan(), "", plan.getTopic(), "学习结束考核,且考试成绩达到80分以上" };
|
|
|
+ }
|
|
|
+ } else if (planType == 4L) {
|
|
|
+ post = "芳烃";
|
|
|
+ TTsFtplan ftplan = new TTsFtplan();
|
|
|
+ ftplan.setNewId(newId);
|
|
|
+ List<TTsFtplan> tTsFtplans = tTsFtplanService.selectTTsFtplanListByNewId(ftplan);
|
|
|
+ planList = new String[tTsFtplans.size()+1][];
|
|
|
+ planList[0] = new String[] { "Training Plan 详细计划", "Planned Training Date 计划培训日期", "Training Topics 培训主题", "Expected Training Requirement 培训预期达到的要求" };
|
|
|
+ int i = 0;
|
|
|
+ for (TTsFtplan plan : tTsFtplans) {
|
|
|
+ i++;
|
|
|
+ planList[i] = new String[] { plan.getDetailPlan(), "", plan.getTopic(), "学习结束考核,且考试成绩达到80分以上" };
|
|
|
+ }
|
|
|
+ }
|
|
|
+ params.put("tutorPost", Texts.of(post).create());
|
|
|
+ params.put("traineePost", Texts.of(post).create());
|
|
|
+ params.put("planType", Texts.of(post).create());
|
|
|
+ params.put("planList", Tables.of(planList).create());
|
|
|
+ // 渲染文本
|
|
|
+ return params;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取word数据 - Appraisal Form
|
|
|
+ */
|
|
|
+ private Map<String, Object> getAppraisalFormWordData(TTsNew tTsNew) {
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ Date startDate = new Date(tTsNew.getStartdate().toString());
|
|
|
+ startDate.setMonth(startDate.getMonth() + 1);
|
|
|
+ Date endDate = tTsNew.getEnddate();
|
|
|
+ params.put("startDate", Texts.of(formatter.format(startDate)).create());
|
|
|
+ params.put("endDate", Texts.of(formatter.format(endDate)).create());
|
|
|
+ String mentorStaffId = tTsNew.getMentorStaffId();
|
|
|
+ String staffId = tTsNew.getStaffId();
|
|
|
+ SysUser mentor = sysUserService.selectUserByStaffId(mentorStaffId);
|
|
|
+ SysUser apprentice = sysUserService.selectUserByStaffId(staffId);
|
|
|
+ params.put("tutorSignature", Pictures.ofLocal(fileName(mentor.getSignUrl())).size(100, 40).create());
|
|
|
+ params.put("traineeSignature", Pictures.ofLocal(fileName(apprentice.getSignUrl())).size(100, 40).create());
|
|
|
+ params.put("tutor", Texts.of(mentor.getNickName()).create());
|
|
|
+ params.put("trainee", Texts.of(apprentice.getNickName()).create());
|
|
|
+ String[][] planList = null;
|
|
|
+ String post = "";
|
|
|
+ Long planType = tTsNew.getPlanType();
|
|
|
+ Long newId = tTsNew.getNewId();
|
|
|
+ if (planType == 1L) {
|
|
|
+ post = "裂解";
|
|
|
+ TTsLjplan ljplan = new TTsLjplan();
|
|
|
+ ljplan.setNewId(newId);
|
|
|
+ List<TTsLjplan> tTsLjplans = tTsLjplanService.selectTTsLjplanListByNewId(ljplan);
|
|
|
+ planList = new String[tTsLjplans.size()+2][];
|
|
|
+ planList[0] = new String[] { "", "Training Topics 培训主题", "Training Date 培训日期", "Training Effectiveness Evaluation* 培训效果评价*", "Training Effectiveness Acknowledgement 培训效果确认", "", "Mentor comment 导师意见" };
|
|
|
+ planList[1] = new String[] { "", "", "", "", "Trainee 学徒", "Tutor 导师", "Proceed to next topic or not 是否转至下一主题" };
|
|
|
+ int i = 1;
|
|
|
+ for (TTsLjplan plan : tTsLjplans) {
|
|
|
+ i++;
|
|
|
+ planList[i] = new String[] { plan.getDetailPlan(), plan.getTopic(), "", "", "", "", "" };
|
|
|
+ }
|
|
|
+ } else if (planType == 2L) {
|
|
|
+ post = "压缩";
|
|
|
+ TTsYsplan ysplan = new TTsYsplan();
|
|
|
+ ysplan.setNewId(newId);
|
|
|
+ List<TTsYsplan> tTsYsplans = tTsYsplanService.selectTTsYsplanListByNewId(ysplan);
|
|
|
+ planList = new String[tTsYsplans.size()+2][];
|
|
|
+ planList[0] = new String[] { "", "Training Topics 培训主题", "Training Date 培训日期", "Training Effectiveness Evaluation* 培训效果评价*", "Training Effectiveness Acknowledgement 培训效果确认", "", "Mentor comment 导师意见" };
|
|
|
+ planList[1] = new String[] { "", "", "", "", "Trainee 学徒", "Tutor 导师", "Proceed to next topic or not 是否转至下一主题" };
|
|
|
+ int i = 1;
|
|
|
+ for (TTsYsplan plan : tTsYsplans) {
|
|
|
+ i++;
|
|
|
+ planList[i] = new String[] { plan.getDetailPlan(), plan.getTopic(), "", "", "", "", "" };
|
|
|
+ }
|
|
|
+ } else if (planType == 3L) {
|
|
|
+ post = "分离";
|
|
|
+ TTsFlplan flplan = new TTsFlplan();
|
|
|
+ flplan.setNewId(newId);
|
|
|
+ List<TTsFlplan> tTsFlplans = tTsFlplanService.selectTTsFlplanListByNewId(flplan);
|
|
|
+ planList = new String[tTsFlplans.size()+2][];
|
|
|
+ planList[0] = new String[] { "", "Training Topics 培训主题", "Training Date 培训日期", "Training Effectiveness Evaluation* 培训效果评价*", "Training Effectiveness Acknowledgement 培训效果确认", "", "Mentor comment 导师意见" };
|
|
|
+ planList[1] = new String[] { "", "", "", "", "Trainee 学徒", "Tutor 导师", "Proceed to next topic or not 是否转至下一主题" };
|
|
|
+ int i = 1;
|
|
|
+ for (TTsFlplan plan : tTsFlplans) {
|
|
|
+ i++;
|
|
|
+ planList[i] = new String[] { plan.getDetailPlan(), plan.getTopic(), "", "", "", "", "" };
|
|
|
+ }
|
|
|
+ } else if (planType == 4L) {
|
|
|
+ post = "芳烃";
|
|
|
+ TTsFtplan ftplan = new TTsFtplan();
|
|
|
+ ftplan.setNewId(newId);
|
|
|
+ List<TTsFtplan> tTsFtplans = tTsFtplanService.selectTTsFtplanListByNewId(ftplan);
|
|
|
+ planList = new String[tTsFtplans.size()+2][];
|
|
|
+ planList[0] = new String[] { "", "Training Topics 培训主题", "Training Date 培训日期", "Training Effectiveness Evaluation* 培训效果评价*", "Training Effectiveness Acknowledgement 培训效果确认", "", "Mentor comment 导师意见" };
|
|
|
+ planList[1] = new String[] { "", "", "", "", "Trainee 学徒", "Tutor 导师", "Proceed to next topic or not 是否转至下一主题" };
|
|
|
+ int i = 1;
|
|
|
+ for (TTsFtplan plan : tTsFtplans) {
|
|
|
+ i++;
|
|
|
+ planList[i] = new String[] { plan.getDetailPlan(), plan.getTopic(), "", "", "", "", "" };
|
|
|
+ }
|
|
|
+ }
|
|
|
+ params.put("tutorPost", Texts.of(post).create());
|
|
|
+ params.put("traineePost", Texts.of(post).create());
|
|
|
+ params.put("planList", Tables.of(planList).create());
|
|
|
+ // 渲染文本
|
|
|
+ return params;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成word
|
|
|
+ *
|
|
|
+ * @param templatePath word模板文件路径
|
|
|
+ * @param fileDir 生成的文件存放地址
|
|
|
+ * @param fileName 生成的文件名
|
|
|
+ * @param paramMap 参数集合
|
|
|
+ * @return 返回word生成的路径
|
|
|
+ */
|
|
|
+ private String createWord(String templatePath, String fileDir, String fileName, Map<String, Object> paramMap, String directory) throws IOException {
|
|
|
+ Assert.notNull(templatePath, "word模板文件路径不能为空");
|
|
|
+ Assert.notNull(fileDir, "生成的文件存放地址不能为空");
|
|
|
+ Assert.notNull(fileName, "生成的文件名不能为空");
|
|
|
+ File dir = new File(fileDir);
|
|
|
+ if (!dir.exists()) {
|
|
|
+ logger.info("目录不存在,创建文件夹{}!", fileDir);
|
|
|
+ dir.mkdirs();
|
|
|
+ }
|
|
|
+ fileName = fileName.replaceAll("/", "_"); //替换文件中敏感字段
|
|
|
+ logger.info("目录文件{}!", fileName);
|
|
|
+ String filePath = fileDir + "/" + fileName;
|
|
|
+ logger.info("目录{}!", filePath);
|
|
|
+ // 读取模板渲染参数
|
|
|
+ InputStream is = getClass().getClassLoader().getResourceAsStream(templatePath);
|
|
|
+ XWPFTemplate template = XWPFTemplate.compile(is).render(paramMap);
|
|
|
+ try {
|
|
|
+ // 将模板参数写入路径
|
|
|
+ template.writeToFile(filePath);
|
|
|
+ template.close();
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("生成word异常{}", e.getMessage());
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ String pathFileName = FileUploadUtils.getPathFileName(RuoYiConfig.getFilePath("/" + directory), fileName);
|
|
|
+ return pathFileName;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param
|
|
|
+ * @return 映射签名的文件名
|
|
|
+ * @throws IOException
|
|
|
+ */
|
|
|
+ private String fileName(String filepath) {
|
|
|
+ String newFilePath = filepath.replace("/profile", "");
|
|
|
+ String pathName = RuoYiConfig.getProfile() + newFilePath;
|
|
|
+ return pathName;
|
|
|
}
|
|
|
|
|
|
/**
|