package com.web.pda.lyt.ftp.service.internal;
|
|
import com.app.base.data.ApiResponseResult;
|
import com.app.base.service.FtpClientService;
|
import com.web.pda.lyt.ftp.dao.FileCheckLytDao;
|
import com.web.pda.lyt.ftp.service.FileSampleSignService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.dao.DataAccessException;
|
import org.springframework.jdbc.core.CallableStatementCallback;
|
import org.springframework.jdbc.core.CallableStatementCreator;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Propagation;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.ByteArrayInputStream;
|
import java.io.OutputStream;
|
import java.net.URLEncoder;
|
import java.sql.CallableStatement;
|
import java.sql.Connection;
|
import java.sql.ResultSet;
|
import java.sql.SQLException;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
@Service(value = "fileSampleSignService")
|
@Transactional(propagation = Propagation.REQUIRED)
|
public class FileSampleSignImpl implements FileSampleSignService {
|
|
@Autowired
|
private FileCheckLytDao fileCheckDao;
|
|
@Autowired
|
private JdbcTemplate jdbcTemplate;
|
|
@Autowired
|
private FtpClientService ftpClientService;
|
|
@Override
|
public ApiResponseResult uploadFilepqc(String factory, String company, String username, int mid, int type,
|
String note, MultipartFile[] files) throws Exception {
|
// TODO Auto-generated method stub
|
List<String> a = getInfo(factory, company, username, mid, type);
|
System.out.println(a);
|
if (a.get(0).equals("0")) {
|
try {
|
for (MultipartFile file : files) {
|
if(file != null){
|
String a6 = a.get(6);// .replace("/",File.separator);
|
ApiResponseResult ar = ftpClientService.uploadFile(a.get(2), Integer.parseInt(a.get(5)), a.get(3),
|
a.get(4), a6, file.getOriginalFilename(), new ByteArrayInputStream(file.getBytes()));
|
if (ar.getStatus().equals("0")) {
|
// ftp上传成功
|
List<String> b = this.getpqcFile(factory, company, username, mid, type, 0,
|
file.getOriginalFilename(), note, 0);
|
System.out.println(b);
|
}
|
}
|
}
|
return ApiResponseResult.success("操作成功!");
|
} catch (Exception e) {
|
System.out.println(e.toString());
|
return ApiResponseResult.failure("上传文件到FTP失败!").data(e.toString());
|
}
|
} else {
|
return ApiResponseResult.failure("获取FTP信息失败!").data(a.get(1));
|
}
|
}
|
|
/**
|
*
|
* 获取ftp的信息-获取附件路径
|
*
|
* @param factory
|
* @param company
|
* @param uaername
|
* @param mid
|
* @param type1
|
* @return
|
*/
|
public List<String> getInfo(String factory, String company, String uaername, int mid, int type1) {
|
List<String> resultList = (List<String>) jdbcTemplate.execute(new CallableStatementCreator() {
|
@Override
|
public CallableStatement createCallableStatement(Connection con) throws SQLException {
|
String storedProc = "{call sp_pqc_app_qt_ftpfile(?,?,?,?,?,?,?,?,?,?)}";// 调用的sql
|
CallableStatement cs = con.prepareCall(storedProc);
|
cs.setString(1, factory);
|
cs.setString(2, company);
|
cs.setLong(3, mid);
|
cs.registerOutParameter(4, java.sql.Types.INTEGER);// 注册输出参数
|
cs.registerOutParameter(5, java.sql.Types.VARCHAR);// 注册输出参数
|
cs.registerOutParameter(6, java.sql.Types.VARCHAR);// 注册输出参数
|
cs.registerOutParameter(7, java.sql.Types.VARCHAR);// 注册输出参数
|
cs.registerOutParameter(8, java.sql.Types.VARCHAR);// 注册输出参数
|
cs.registerOutParameter(9, java.sql.Types.INTEGER);// 注册输出参数
|
cs.registerOutParameter(10, java.sql.Types.VARCHAR);// 注册输出参数
|
return cs;
|
}
|
}, new CallableStatementCallback() {
|
public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
|
List<String> result = new ArrayList<String>();
|
cs.execute();
|
result.add(cs.getString(4));
|
result.add(cs.getString(5));
|
result.add(cs.getString(6));
|
result.add(cs.getString(7));
|
result.add(cs.getString(8));
|
result.add(cs.getString(9));
|
result.add(cs.getString(10));
|
return result;
|
}
|
});
|
return resultList;
|
|
}
|
|
/**
|
* 文件操作-增删改附件记录
|
*
|
* @param factory
|
* @param company
|
* @param uaername
|
* @param mid
|
* @param type1
|
* @param Dmltype
|
* @param filename
|
* @param note
|
* @param fileid
|
* @return
|
*/
|
public List<String> getpqcFile(String factory, String company, String uaername, int mid, int type1, int Dmltype,
|
String filename, String note, Integer fileid) {
|
List<String> resultList = (List<String>) jdbcTemplate.execute(new CallableStatementCreator() {
|
@Override
|
public CallableStatement createCallableStatement(Connection con) throws SQLException {
|
String storedProc = "{call sp_pqc_app_qt_ftpfile_insert(?,?,?,?,?,?,?,?,?,?)}";// 调用的sql
|
CallableStatement cs = con.prepareCall(storedProc);
|
cs.setString(1, factory);
|
cs.setString(2, company);
|
cs.setString(3, uaername);
|
cs.setLong(4, mid);//
|
cs.setLong(5, Dmltype);// 操作类型,0是新增,1是修改,2是删除
|
cs.setString(6, filename);// 文件名
|
cs.setString(7, note);// 备注说明
|
cs.setLong(8, fileid);// 附件记录ID,Pi_Dmltype<>0的时候不允许为空
|
cs.registerOutParameter(9, java.sql.Types.INTEGER);// 注册输出参数
|
cs.registerOutParameter(10, java.sql.Types.VARCHAR);// 注册输出参数
|
return cs;
|
}
|
}, new CallableStatementCallback() {
|
public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
|
List<String> result = new ArrayList<String>();
|
cs.execute();
|
result.add(cs.getString(9));
|
result.add(cs.getString(10));
|
return result;
|
}
|
});
|
return resultList;
|
|
}
|
/**
|
* 获取附件列表
|
* **/
|
@Override
|
public ApiResponseResult getFilesList(String mid) throws Exception {
|
// TODO Auto-generated method stub
|
// List<Map<String, Object>> countList1 = fileCheckDao.getFileList(mid);
|
List<String> a = this.getRfFileList(mid);
|
/*
|
* if(countList1.size() == 0){ return ApiResponseResult.failure("文件为空");
|
* } return ApiResponseResult.success("").data(countList1);
|
*/
|
System.out.println(a);
|
if (a.get(0).equals("0")) {
|
String[] fn = a.get(2).substring(0, a.get(2).length() - 1).split("#");
|
String[] fq = a.get(3).substring(0, a.get(3).length() - 1).split("#");
|
String[] ft = a.get(4).substring(0, a.get(4).length() - 1).split("#");
|
String[] mi = a.get(5).substring(0, a.get(5).length() - 1).split("#");
|
String[] cd = a.get(6).substring(0, a.get(6).length() - 1).split("#");
|
String[] fu = a.get(7).substring(0, a.get(7).length() - 1).split("#");
|
List l = new ArrayList();
|
for (int i = 0; i < fn.length; i++) {
|
Map m = new HashMap();
|
m.put("FNOTE", fn[i]);
|
m.put("FATTACH", fq[i]);
|
m.put("FTYPE", ft[i]);
|
m.put("MID", mi[i]);
|
m.put("CD", cd[i]);
|
m.put("FURL", fu[i]);
|
|
l.add(m);
|
}
|
|
return ApiResponseResult.success().data(l);
|
} else {
|
return ApiResponseResult.failure(a.get(1));
|
}
|
}
|
|
public List<String> getRfFileList(String mid) {
|
List<String> resultList = (List<String>) jdbcTemplate.execute(new CallableStatementCreator() {
|
@Override
|
public CallableStatement createCallableStatement(Connection con) throws SQLException {
|
String storedProc = "{call sp_pqc_app_qt_ftpfile_list(?,?,?,?)}";// 调用的sql
|
CallableStatement cs = con.prepareCall(storedProc);
|
cs.setString(1, mid);
|
cs.registerOutParameter(2, java.sql.Types.INTEGER);// 注册输出参数
|
// 返回类型 返回标识
|
cs.registerOutParameter(3, java.sql.Types.VARCHAR);// 注册输出参数
|
// 返回类型 返回信息
|
cs.registerOutParameter(4, -10);// 注册输出参数 返回类型 返回批次号游标
|
return cs;
|
}
|
}, new CallableStatementCallback() {
|
public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
|
List<String> result = new ArrayList<String>();
|
cs.execute();
|
result.add(cs.getString(2));
|
result.add(cs.getString(3));
|
// 游标处理
|
ResultSet rs = (ResultSet) cs.getObject(4);
|
String ids = "";
|
String n = "";
|
String n1 = "";
|
String n2 = "";
|
String n3 = "";
|
String n4 = "";
|
while (rs.next()) {
|
ids += rs.getString("FNOTE") + "#";
|
n += rs.getString("FATTACH") + "#";
|
n1 += rs.getString("FTYPE") + "#";
|
n2 += rs.getString("MID") + "#";
|
n3 += rs.getString("CD") + "#";
|
n4 += rs.getString("FURL") + "#";
|
}
|
result.add(ids);
|
result.add(n);
|
result.add(n1);
|
result.add(n2);
|
result.add(n3);
|
result.add(n4);
|
return result;
|
}
|
});
|
return resultList;
|
}
|
|
@Override
|
public ApiResponseResult onlineView(String url, String fname, HttpServletResponse response) throws Exception {
|
// TODO Auto-generated method stub
|
// 获取ftp地址账号密码以及端口号
|
String ip = fileCheckDao.queryFtpServerIP().get(0).get("PV").toString();
|
String num = fileCheckDao.queryFtpPortNum().get(0).get("PV").toString();
|
String name = fileCheckDao.queryFtpUser().get(0).get("PV").toString();
|
String psw = fileCheckDao.queryFtpPsw().get(0).get("PV").toString();
|
ApiResponseResult result = ftpClientService.download(ip, Integer.parseInt(num), name, psw, url, fname);
|
try {
|
String fileName = URLEncoder.encode(fname, "UTF-8"); // 文件名称
|
// String extName = fsFile.getBsFileType(); //文件后缀名
|
response.setContentType("image/png");
|
response.addHeader("Content-Disposition", "inline;filename=" + fileName);
|
// response.addHeader("Content-Length", "" +
|
// fsFile.getBsFileSize());
|
// if(".png".equals(extName)){
|
// response.setContentType("image/png");
|
// }
|
OutputStream os = response.getOutputStream();
|
byte[] bytes = (byte[]) result.getData();
|
os.write(bytes);
|
os.flush();
|
os.close();
|
} catch (Exception e) {
|
System.out.println(e.toString());
|
}
|
return null;
|
}
|
|
}
|