新增使用删除词的类

master
xiaoCJ 2 years ago
parent 1f770888b8
commit 5b8411695b

@ -16,7 +16,11 @@
</description> </description>
<dependencies> <dependencies>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.10</version>
</dependency>
<!-- 通用工具--> <!-- 通用工具-->
<dependency> <dependency>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>

@ -12,7 +12,7 @@ public interface SysTrainingScoreMapper {
* This method was generated by MyBatis Generator. * This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_training_score * This method corresponds to the database table sys_training_score
* *
* @mbg.generated Thu Aug 10 10:52:01 CST 2023 * @mbg.generated Thu Aug 10 15:13:28 CST 2023
*/ */
long countByExample(SysTrainingScoreExample example); long countByExample(SysTrainingScoreExample example);
@ -20,7 +20,7 @@ public interface SysTrainingScoreMapper {
* This method was generated by MyBatis Generator. * This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_training_score * This method corresponds to the database table sys_training_score
* *
* @mbg.generated Thu Aug 10 10:52:01 CST 2023 * @mbg.generated Thu Aug 10 15:13:28 CST 2023
*/ */
int deleteByExample(SysTrainingScoreExample example); int deleteByExample(SysTrainingScoreExample example);
@ -28,7 +28,7 @@ public interface SysTrainingScoreMapper {
* This method was generated by MyBatis Generator. * This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_training_score * This method corresponds to the database table sys_training_score
* *
* @mbg.generated Thu Aug 10 10:52:01 CST 2023 * @mbg.generated Thu Aug 10 15:13:28 CST 2023
*/ */
int deleteByPrimaryKey(String id); int deleteByPrimaryKey(String id);
@ -36,7 +36,7 @@ public interface SysTrainingScoreMapper {
* This method was generated by MyBatis Generator. * This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_training_score * This method corresponds to the database table sys_training_score
* *
* @mbg.generated Thu Aug 10 10:52:01 CST 2023 * @mbg.generated Thu Aug 10 15:13:28 CST 2023
*/ */
int insert(SysTrainingScore record); int insert(SysTrainingScore record);
@ -44,7 +44,7 @@ public interface SysTrainingScoreMapper {
* This method was generated by MyBatis Generator. * This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_training_score * This method corresponds to the database table sys_training_score
* *
* @mbg.generated Thu Aug 10 10:52:01 CST 2023 * @mbg.generated Thu Aug 10 15:13:28 CST 2023
*/ */
int insertSelective(SysTrainingScore record); int insertSelective(SysTrainingScore record);
@ -52,7 +52,7 @@ public interface SysTrainingScoreMapper {
* This method was generated by MyBatis Generator. * This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_training_score * This method corresponds to the database table sys_training_score
* *
* @mbg.generated Thu Aug 10 10:52:01 CST 2023 * @mbg.generated Thu Aug 10 15:13:28 CST 2023
*/ */
List<SysTrainingScore> selectByExampleWithBLOBs(SysTrainingScoreExample example); List<SysTrainingScore> selectByExampleWithBLOBs(SysTrainingScoreExample example);
@ -60,7 +60,7 @@ public interface SysTrainingScoreMapper {
* This method was generated by MyBatis Generator. * This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_training_score * This method corresponds to the database table sys_training_score
* *
* @mbg.generated Thu Aug 10 10:52:01 CST 2023 * @mbg.generated Thu Aug 10 15:13:28 CST 2023
*/ */
List<SysTrainingScore> selectByExample(SysTrainingScoreExample example); List<SysTrainingScore> selectByExample(SysTrainingScoreExample example);
@ -68,7 +68,7 @@ public interface SysTrainingScoreMapper {
* This method was generated by MyBatis Generator. * This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_training_score * This method corresponds to the database table sys_training_score
* *
* @mbg.generated Thu Aug 10 10:52:01 CST 2023 * @mbg.generated Thu Aug 10 15:13:28 CST 2023
*/ */
SysTrainingScore selectByPrimaryKey(String id); SysTrainingScore selectByPrimaryKey(String id);
@ -76,7 +76,7 @@ public interface SysTrainingScoreMapper {
* This method was generated by MyBatis Generator. * This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_training_score * This method corresponds to the database table sys_training_score
* *
* @mbg.generated Thu Aug 10 10:52:01 CST 2023 * @mbg.generated Thu Aug 10 15:13:28 CST 2023
*/ */
int updateByExampleSelective(@Param("record") SysTrainingScore record, @Param("example") SysTrainingScoreExample example); int updateByExampleSelective(@Param("record") SysTrainingScore record, @Param("example") SysTrainingScoreExample example);
@ -84,7 +84,7 @@ public interface SysTrainingScoreMapper {
* This method was generated by MyBatis Generator. * This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_training_score * This method corresponds to the database table sys_training_score
* *
* @mbg.generated Thu Aug 10 10:52:01 CST 2023 * @mbg.generated Thu Aug 10 15:13:28 CST 2023
*/ */
int updateByExampleWithBLOBs(@Param("record") SysTrainingScore record, @Param("example") SysTrainingScoreExample example); int updateByExampleWithBLOBs(@Param("record") SysTrainingScore record, @Param("example") SysTrainingScoreExample example);
@ -92,7 +92,7 @@ public interface SysTrainingScoreMapper {
* This method was generated by MyBatis Generator. * This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_training_score * This method corresponds to the database table sys_training_score
* *
* @mbg.generated Thu Aug 10 10:52:01 CST 2023 * @mbg.generated Thu Aug 10 15:13:28 CST 2023
*/ */
int updateByExample(@Param("record") SysTrainingScore record, @Param("example") SysTrainingScoreExample example); int updateByExample(@Param("record") SysTrainingScore record, @Param("example") SysTrainingScoreExample example);
@ -100,7 +100,7 @@ public interface SysTrainingScoreMapper {
* This method was generated by MyBatis Generator. * This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_training_score * This method corresponds to the database table sys_training_score
* *
* @mbg.generated Thu Aug 10 10:52:01 CST 2023 * @mbg.generated Thu Aug 10 15:13:28 CST 2023
*/ */
int updateByPrimaryKeySelective(SysTrainingScore record); int updateByPrimaryKeySelective(SysTrainingScore record);
@ -108,7 +108,7 @@ public interface SysTrainingScoreMapper {
* This method was generated by MyBatis Generator. * This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_training_score * This method corresponds to the database table sys_training_score
* *
* @mbg.generated Thu Aug 10 10:52:01 CST 2023 * @mbg.generated Thu Aug 10 15:13:28 CST 2023
*/ */
int updateByPrimaryKeyWithBLOBs(SysTrainingScore record); int updateByPrimaryKeyWithBLOBs(SysTrainingScore record);
@ -116,7 +116,7 @@ public interface SysTrainingScoreMapper {
* This method was generated by MyBatis Generator. * This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_training_score * This method corresponds to the database table sys_training_score
* *
* @mbg.generated Thu Aug 10 10:52:01 CST 2023 * @mbg.generated Thu Aug 10 15:13:28 CST 2023
*/ */
int updateByPrimaryKey(SysTrainingScore record); int updateByPrimaryKey(SysTrainingScore record);
} }

@ -1,7 +1,14 @@
package com.ruoyi.system.service; package com.ruoyi.system.service;
import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.web.multipart.MultipartFile;
import java.math.BigInteger; import java.math.BigInteger;
public interface ISysTrainingScoreService { public interface ISysTrainingScoreService {
Boolean checkStatus(BigInteger userId); Boolean checkStatus(BigInteger userId);
AjaxResult uploadReport(MultipartFile file, String fileName, Long id);
AjaxResult submitReport(String content, Long userId);
} }

@ -1,19 +1,77 @@
package com.ruoyi.system.service.impl; package com.ruoyi.system.service.impl;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.system.domain.SysTrainingScore;
import com.ruoyi.system.domain.SysTrainingScoreExample;
import com.ruoyi.system.mapper.SysTrainingScoreMapper; import com.ruoyi.system.mapper.SysTrainingScoreMapper;
import com.ruoyi.system.service.ISysTrainingScoreService; import com.ruoyi.system.service.ISysTrainingScoreService;
import com.ruoyi.system.util.IFileUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import java.math.BigInteger; import java.math.BigInteger;
import java.util.List;
@Service @Service
public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService { public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService {
@Autowired @Autowired
SysTrainingScoreMapper trainingScoreMapper; SysTrainingScoreMapper trainingScoreMapper;
@Autowired
private IFileUtil fileUtil;
@Override @Override
public Boolean checkStatus(BigInteger userId) { public Boolean checkStatus(BigInteger userId) {
// trainingScoreMapper.selectByExample() // trainingScoreMapper.selectByExample()
return null; return null;
} }
@Override
public AjaxResult uploadReport(MultipartFile file, String fileName, Long id) {
String filePath = fileUtil.upload(file);
SysTrainingScoreExample sysTrainingScoreExample = new SysTrainingScoreExample();
sysTrainingScoreExample.createCriteria().andUseridEqualTo(id);
List<SysTrainingScore> sysTrainingScores = trainingScoreMapper.selectByExample(sysTrainingScoreExample);
if (!sysTrainingScores.isEmpty()) {
SysTrainingScore sysTrainingScore = sysTrainingScores.get(0);
if (!sysTrainingScore.getReportContent().isEmpty()) {
return AjaxResult.error("报告已提交,不允许上传和修改");
}
if (StringUtils.hasText(sysTrainingScore.getReportUploadPath())) {
fileUtil.remove(sysTrainingScore.getReportUploadPath());
sysTrainingScore.setReportUploadPath(filePath);
sysTrainingScore.setReportFilename(fileName);
trainingScoreMapper.updateByExample(sysTrainingScore, sysTrainingScoreExample);
return AjaxResult.error("上传成功");
} else {
sysTrainingScore.setReportUploadPath(filePath);
sysTrainingScore.setReportFilename(fileName);
trainingScoreMapper.insert(sysTrainingScore);
return AjaxResult.error("上传成功");
}
}
return null;
}
@Override
public AjaxResult submitReport(String content, Long userId) {
SysTrainingScoreExample trainingScoreExample = new SysTrainingScoreExample();
trainingScoreExample.createCriteria().andUseridEqualTo(userId);
List<SysTrainingScore> sysTrainingScores = trainingScoreMapper.selectByExample(trainingScoreExample);
if (!sysTrainingScores.isEmpty()){
SysTrainingScore sysTrainingScore = sysTrainingScores.get(0);
if (sysTrainingScore.getReportUploadPath()==null){
return AjaxResult.error("请先上传再提交");
}
sysTrainingScore.setReportContent(content);
trainingScoreMapper.updateByExample(sysTrainingScore,trainingScoreExample);
}
return null;
}
} }

@ -0,0 +1,86 @@
package com.ruoyi.system.util;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
/**
*
*
* @author
*/
public interface IFileUtil {
/**
* http
*
* @param file formhttp
* @return
*/
String upload(MultipartFile file);
/**
*
*
* @param objectName
* @param fileIn
* @return
*/
String upload(String objectName, InputStream fileIn);
/**
*
*
* @param path
* @return true
*/
boolean remove(String path);
/**
*
*
* @param response
* @param fileName
* @param filePath
*/
void download(HttpServletResponse response, String fileName, String filePath);
/**
*
*
* @param response
* @param filePath
*/
void download(HttpServletResponse response, String filePath);
/**
*
*
* @param relativePath
* @return
*/
String getFullPath(String relativePath);
/**
*
*
* @param fileName
* @return suffix
*/
String getSuffix(String fileName);
/**
*
*
* @param fileName
* @param suffix
* @return
*/
String getDiskRelativePath(String fileName, String suffix);
}

@ -0,0 +1,177 @@
package com.ruoyi.system.util;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.IdUtil;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.nio.file.Files;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public class LocalFileUtil implements IFileUtil {
private final static List<String> excludeSp = Arrays.asList("exe", "bin", "sh");
private final String localPath;
public LocalFileUtil(String localPath) {
this.localPath = localPath;
}
@Override
public String upload(MultipartFile file) {
return upload(null, file);
}
@Override
public String upload(String objectName, InputStream fileIn) {
Assert.notNull(fileIn, "文件不能为空");
Assert.hasText(objectName, "文件名为空");
Assert.isTrue(objectName.lastIndexOf(".") > 0, "文件名称需携带扩展后缀");
FileOutputStream out = null;
try {
String relativePath = getDiskRelativePath(objectName, null);
File file = new File(getFullPath(relativePath));
file.getParentFile().mkdirs();
out = new FileOutputStream(file);
byte[] buff = new byte[4096];
int len;
while ((len = fileIn.read(buff)) != -1) {
out.write(buff, 0, len);
}
out.flush();
return relativePath;
} catch (IOException e) {
e.printStackTrace();
throw new IllegalArgumentException("上传文件失败,IO错误");
} finally {
try {
fileIn.close();
if (out != null) out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public boolean remove(String path) {
if (!StringUtils.hasText(path)) return false;
File file = new File(getFullPath(path));
if (!file.exists()) return false;
return file.delete();
}
@Override
public void download(HttpServletResponse response, String fileName, String relativePath) {
Assert.hasText(relativePath, "路径为空");
System.out.println("------------------------------------" + getFullPath(relativePath));
File file = new File(getFullPath(relativePath));
Assert.isTrue(file.exists(), "附件不存在");
String sp = relativePath.substring(relativePath.lastIndexOf(".") + 1);
Assert.isTrue(!excludeSp.contains(sp.toLowerCase()), "文件类型错误");
if (!StringUtils.hasText(fileName)) {
fileName = file.getName().substring(0, file.getName().lastIndexOf("."));
}
InputStream fis = null;
try {
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode((fileName + "." + sp), CharsetUtil.UTF_8));
fis = new BufferedInputStream(Files.newInputStream(file.toPath()));
response.addHeader("Content-Length", String.valueOf(fis.available()));
byte[] buff = new byte[4096];
int len;
while ((len = fis.read(buff)) != -1) {
response.getOutputStream().write(buff, 0, len);
}
} catch (Exception e) {
throw new IllegalArgumentException("下载文件失败: " + e.getMessage());
} finally {
try {
if (fis != null) fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void download(HttpServletResponse response, String relativePath) {
download(response, null, relativePath);
}
@Override
public String getFullPath(String relativePath) {
if (!relativePath.startsWith("/")) {
relativePath = "/" + relativePath;
}
return localPath + relativePath;
}
@Override
public String getSuffix(String fileName) {
Assert.hasText(fileName, "文件名不存在!");
if (fileName.lastIndexOf(".") < 0) {
return null;
}
return fileName.substring(fileName.lastIndexOf(".") + 1);
}
public String upload(String fileName, MultipartFile file) {
return upload(fileName, file, null);
}
@Override
public String getDiskRelativePath(String fileName, String suffix) {
Calendar c = Calendar.getInstance();
Date d = new Date();
c.setTime(d);
String year = Integer.toString(c.get(Calendar.YEAR));
String month = Integer.toString(c.get(Calendar.MONTH) + 1);
String day = Integer.toString(c.get(Calendar.DATE));
StringBuilder path = new StringBuilder();
path.append("/").append(year)
.append("/").append(month)
.append("/").append(day)
.append("/").append(fileName);
if (StringUtils.hasText(suffix)) path.append(".").append(suffix);
return path.toString();
}
private String upload(String fileName, MultipartFile file, String relativePath) {
Assert.isTrue(!file.isEmpty(), "文件不存在");
String originalFilename = file.getOriginalFilename();
if (fileName == null) fileName = IdUtil.simpleUUID();
String sp = getSuffix(originalFilename);
Assert.notNull(sp, "文件类型错误");
Assert.isTrue(!excludeSp.contains(sp.toLowerCase()), "文件类型错误");
try {
String filePath;
if (relativePath == null) {
filePath = getDiskRelativePath(fileName, sp);
} else {
relativePath = relativePath.endsWith("/") ? relativePath : relativePath + "/";
filePath = relativePath + fileName + "." + sp;
}
File destFile = new File(getFullPath(filePath));
destFile.getParentFile().mkdirs();
file.transferTo(destFile);
return filePath;
} catch (FileNotFoundException e) {
throw new IllegalArgumentException("上传文件失败,FileNotFound错误");
} catch (IOException e) {
throw new IllegalArgumentException("上传文件失败,IO错误");
}
}
}
Loading…
Cancel
Save