学生作业上传增加SFTP上传下载
This commit is contained in:
parent
fcc7a963c8
commit
5702d3f521
|
@ -275,7 +275,7 @@ public class ZyInfoStudentController extends JeecgController<ZyInfoStudent, IZyI
|
|||
@AutoLog(value = "学生作业上传")
|
||||
@ApiOperation(value="学生作业上传", notes="学生作业上传")
|
||||
@RequestMapping(value = "/zyscStu", method = {RequestMethod.PUT,RequestMethod.POST})
|
||||
public Result<String> zyscStu(@RequestBody ZyInfoStudent zyInfoStudent) {
|
||||
public Result<String> zyscStu(@RequestBody ZyInfoStudent zyInfoStudent, HttpServletResponse response) {
|
||||
|
||||
ZyInfoStudent stuPar = zyInfoStudentService.getById(zyInfoStudent.getId());
|
||||
ZyInfo zyInfo = zyInfoService.getById(stuPar.getMainId());
|
||||
|
@ -310,7 +310,7 @@ public class ZyInfoStudentController extends JeecgController<ZyInfoStudent, IZyI
|
|||
zyInfoStudent.setPdfPath(pdfName);
|
||||
}
|
||||
}
|
||||
zyInfoStudentService.updateById(zyInfoStudent);
|
||||
zyInfoStudentService.updateById(zyInfoStudent, response);
|
||||
|
||||
//作业代办提醒
|
||||
ZyDbtx zyDbtx = new ZyDbtx();
|
||||
|
|
|
@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||
import org.jeecg.modules.kc.zyInfoStudent.entity.ZyInfoStudent;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -20,7 +22,7 @@ public interface IZyInfoStudentService extends IService<ZyInfoStudent> {
|
|||
|
||||
void deleteMainId(String id);
|
||||
|
||||
public boolean updateById(ZyInfoStudent zyInfoStudent);
|
||||
public boolean updateById(ZyInfoStudent zyInfoStudent, HttpServletResponse response);
|
||||
|
||||
void editFabu(ZyInfoStudent zyInfoStudent);
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.jeecg.common.constant.CommonConstant;
|
||||
import org.jeecg.common.system.vo.LoginUser;
|
||||
import org.jeecg.modules.kc.blZycc.entity.BlZycc;
|
||||
import org.jeecg.modules.kc.kcSysConfig.entity.KcSysConfig;
|
||||
import org.jeecg.modules.kc.kcSysConfig.service.IKcSysConfigService;
|
||||
import org.jeecg.common.util.SFTPUtil;
|
||||
import org.jeecg.common.util.SftpConfig;
|
||||
import org.jeecg.modules.kc.ktgl.entity.KcKechengbiao;
|
||||
import org.jeecg.modules.kc.ktgl.service.IKcKechengbiaoService;
|
||||
import org.jeecg.modules.kc.zyCcjg.entity.ZyCcjg;
|
||||
|
@ -28,6 +28,8 @@ import org.springframework.stereotype.Service;
|
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
import javax.activation.MimetypesFileTypeMap;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.*;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
|
@ -53,6 +55,9 @@ public class ZyInfoStudentServiceImpl extends ServiceImpl<ZyInfoStudentMapper, Z
|
|||
@Autowired
|
||||
private IKcKechengbiaoService kcKechengbiaoService;
|
||||
|
||||
@Autowired
|
||||
SftpConfig sftpConfig;
|
||||
|
||||
private static String uploadpath;
|
||||
|
||||
@Value("${jeecg.path.upload}")
|
||||
|
@ -60,6 +65,9 @@ public class ZyInfoStudentServiceImpl extends ServiceImpl<ZyInfoStudentMapper, Z
|
|||
this.uploadpath = uploadPath;
|
||||
}
|
||||
|
||||
@Value(value="${jeecg.uploadType}")
|
||||
private String uploadType;
|
||||
|
||||
private static String weipuId;
|
||||
|
||||
@Value("${weipu.userId}")
|
||||
|
@ -74,6 +82,8 @@ public class ZyInfoStudentServiceImpl extends ServiceImpl<ZyInfoStudentMapper, Z
|
|||
this.weipuKey = weipuKey;
|
||||
}
|
||||
|
||||
@Value(value = "${jeecg.path.webapp}")
|
||||
private String downloadpath;
|
||||
|
||||
@Override
|
||||
public boolean save(ZyInfoStudent zyInfoStudent) {
|
||||
|
@ -88,7 +98,7 @@ public class ZyInfoStudentServiceImpl extends ServiceImpl<ZyInfoStudentMapper, Z
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean updateById(ZyInfoStudent zyInfoStudent) {
|
||||
public boolean updateById(ZyInfoStudent zyInfoStudent, HttpServletResponse response) {
|
||||
baseMapper.updateById(zyInfoStudent);
|
||||
zyInfoStudent = baseMapper.selectById(zyInfoStudent.getId());
|
||||
ZyInfo zyInfo = zyInfoService.getById(zyInfoStudent.getMainId());
|
||||
|
@ -105,21 +115,21 @@ public class ZyInfoStudentServiceImpl extends ServiceImpl<ZyInfoStudentMapper, Z
|
|||
zyInfoStudent.setCatename(catename);
|
||||
//外网查重及提交检测
|
||||
if(StringUtils.equals(zyInfo.getWwcc(),"1")){
|
||||
wwccSave(zyInfoStudent);
|
||||
wwccSave(zyInfoStudent,response);
|
||||
}
|
||||
//内网查重及提交检测
|
||||
if(StringUtils.equals(zyInfo.getNwcc(),"1")){
|
||||
nwccSave(zyInfoStudent);
|
||||
nwccSave(zyInfoStudent,response);
|
||||
}
|
||||
//aigc查重及提交检测
|
||||
if(StringUtils.equals(zyInfo.getAigccc(),"1")){
|
||||
aigcSave(zyInfoStudent);
|
||||
aigcSave(zyInfoStudent,response);
|
||||
}
|
||||
//校内查重及提交检测
|
||||
if(StringUtils.equals(zyInfo.getXncc(),"1")){
|
||||
zyInfoStudent.setCateid("DBSDQXZYBDK001");
|
||||
zyInfoStudent.setCatename("东北师大全校作业比对库");
|
||||
xnccSave(zyInfoStudent,"0");//提交比对
|
||||
xnccSave(zyInfoStudent,"0",response);//提交比对
|
||||
}else{
|
||||
// zyInfoStudent.setCateid("DBSDQXZYBDK001");
|
||||
// zyInfoStudent.setCatename("东北师大全校作业比对库");
|
||||
|
@ -146,10 +156,11 @@ public class ZyInfoStudentServiceImpl extends ServiceImpl<ZyInfoStudentMapper, Z
|
|||
}
|
||||
|
||||
//aigc提交
|
||||
private void aigcSave(ZyInfoStudent zyInfoStudent) {
|
||||
private void aigcSave(ZyInfoStudent zyInfoStudent,HttpServletResponse response) {
|
||||
String url = "https://vims.fanyu.com/tool/AIGCCheck/paperSubmit";
|
||||
//文件路径,文件存在,不存在的话需要先下载下来
|
||||
String fileName = uploadpath+"/"+ zyInfoStudent.getFilePath();
|
||||
// String fileName = uploadpath+"/"+ zyInfoStudent.getFilePath();
|
||||
String fileName = getFileName(zyInfoStudent.getFilePath(),response);
|
||||
Map<String, String> textMap = new HashMap<String, String>();
|
||||
//可以设置多个input的name,value
|
||||
String sign = getSign();
|
||||
|
@ -214,10 +225,11 @@ public class ZyInfoStudentServiceImpl extends ServiceImpl<ZyInfoStudentMapper, Z
|
|||
}
|
||||
|
||||
//小范围提交(校园内网提交)
|
||||
private void nwccSave(ZyInfoStudent zyInfoStudent) {
|
||||
private void nwccSave(ZyInfoStudent zyInfoStudent,HttpServletResponse response) {
|
||||
String url = "https://vims.fanyu.com/toole/smallcheck/submitData";
|
||||
//文件路径,文件存在,不存在的话需要先下载下来
|
||||
String fileName = uploadpath+"/"+ zyInfoStudent.getFilePath();
|
||||
// String fileName = uploadpath+"/"+ zyInfoStudent.getFilePath();
|
||||
String fileName = getFileName(zyInfoStudent.getFilePath(),response);
|
||||
Map<String, String> textMap = new HashMap<String, String>();
|
||||
String titlePar =fileName.substring(fileName.lastIndexOf("/")+1,fileName.length());
|
||||
String title = titlePar.split("_")[0];
|
||||
|
@ -259,10 +271,11 @@ public class ZyInfoStudentServiceImpl extends ServiceImpl<ZyInfoStudentMapper, Z
|
|||
}
|
||||
|
||||
//小范围提交(校园内网提交)
|
||||
private void xnccSave(ZyInfoStudent zyInfoStudent,String type) {
|
||||
private void xnccSave(ZyInfoStudent zyInfoStudent,String type,HttpServletResponse response) {
|
||||
String url = "https://vims.fanyu.com/toole/smallcheck/submitData";
|
||||
//文件路径,文件存在,不存在的话需要先下载下来
|
||||
String fileName = uploadpath+"/"+ zyInfoStudent.getFilePath();
|
||||
// String fileName = uploadpath+"/"+ zyInfoStudent.getFilePath();
|
||||
String fileName = getFileName(zyInfoStudent.getFilePath(),response);
|
||||
Map<String, String> textMap = new HashMap<String, String>();
|
||||
String titlePar =fileName.substring(fileName.lastIndexOf("/")+1,fileName.length());
|
||||
String title = titlePar.split("_")[0];
|
||||
|
@ -327,11 +340,12 @@ public class ZyInfoStudentServiceImpl extends ServiceImpl<ZyInfoStudentMapper, Z
|
|||
}
|
||||
|
||||
//外网查重提交方法
|
||||
private String wwccSave(ZyInfoStudent zyInfoStudent) {
|
||||
private String wwccSave(ZyInfoStudent zyInfoStudent,HttpServletResponse response) {
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String url = "https://vims.fanyu.com/toole/jianceorgan/papersubmit.aspx";
|
||||
//文件路径,文件存在,不存在的话需要先下载下来
|
||||
String fileName = uploadpath+"/"+ zyInfoStudent.getFilePath();
|
||||
// String fileName = uploadpath+"/"+ zyInfoStudent.getFilePath();
|
||||
String fileName = getFileName(zyInfoStudent.getFilePath(),response);
|
||||
Map<String, String> textMap = new HashMap<String, String>();
|
||||
//可以设置多个input的name,value
|
||||
String sign = getSign();
|
||||
|
@ -373,8 +387,6 @@ public class ZyInfoStudentServiceImpl extends ServiceImpl<ZyInfoStudentMapper, Z
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//外网开始检测
|
||||
public String wwKsjc(ZyCcjg zyCcjg) {
|
||||
String url = "https://vims.fanyu.com/toole/jianceorgan/paperbegincheck.aspx";
|
||||
|
@ -394,8 +406,85 @@ public class ZyInfoStudentServiceImpl extends ServiceImpl<ZyInfoStudentMapper, Z
|
|||
return message;
|
||||
}
|
||||
|
||||
private String getFileName(String imgPath, HttpServletResponse response){
|
||||
String fileName = "";
|
||||
if(CommonConstant.UPLOAD_TYPE_LOCAL.equals(uploadType)) {
|
||||
fileName = uploadpath+"/"+ imgPath;
|
||||
}else if(CommonConstant.UPLOAD_TYPE_SFTP.equals(uploadType)){
|
||||
InputStream inputStream = null;
|
||||
OutputStream outputStream = null;
|
||||
try{
|
||||
int index = imgPath.lastIndexOf("/");
|
||||
String path = "temp";
|
||||
if(index != -1){
|
||||
path = imgPath.substring(0,index);
|
||||
}
|
||||
|
||||
Map<String,String> map = SFTPUtil.download(sftpConfig,imgPath,getDownloadPath(path));
|
||||
if(!map.get("code").equals("0")){
|
||||
response.setStatus(404);
|
||||
throw new RuntimeException(map.get("msg"));
|
||||
}
|
||||
String localFilePath = map.get("fileName");
|
||||
File file = new File(localFilePath);
|
||||
if(!file.exists()){
|
||||
response.setStatus(404);
|
||||
throw new RuntimeException("文件["+imgPath+"]不存在..");
|
||||
}
|
||||
// 设置强制下载不打开
|
||||
response.setContentType("application/force-download");
|
||||
response.addHeader("Content-Disposition", "attachment;fileName=" + new String(file.getName().getBytes("UTF-8"),"iso-8859-1"));
|
||||
inputStream = new BufferedInputStream(new FileInputStream(localFilePath));
|
||||
outputStream = response.getOutputStream();
|
||||
byte[] buf = new byte[1024];
|
||||
int len;
|
||||
while ((len = inputStream.read(buf)) > 0) {
|
||||
outputStream.write(buf, 0, len);
|
||||
}
|
||||
response.flushBuffer();
|
||||
fileName = localFilePath;
|
||||
}catch (Exception e){
|
||||
// e.printStackTrace();
|
||||
}finally {
|
||||
SFTPUtil.disChannel();
|
||||
SFTPUtil.disSession();
|
||||
if (inputStream != null) {
|
||||
try {
|
||||
inputStream.close();
|
||||
} catch (IOException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
if (outputStream != null) {
|
||||
try {
|
||||
outputStream.close();
|
||||
} catch (IOException e) {
|
||||
// log.error(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return fileName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件真实路径
|
||||
* @param path
|
||||
* @return
|
||||
*/
|
||||
private String getDownloadPath(String path){
|
||||
String filePath = "";
|
||||
if(org.jeecg.common.util.text.StringUtils.isEmpty(path)){
|
||||
return "";
|
||||
}
|
||||
int idx = path.indexOf(downloadpath);
|
||||
if(idx==-1){
|
||||
filePath = downloadpath + File.separator + path;
|
||||
}else{
|
||||
filePath = path;
|
||||
}
|
||||
return filePath;
|
||||
}
|
||||
|
||||
|
||||
//生成sign
|
||||
|
|
Loading…
Reference in New Issue