|
@@ -7,13 +7,23 @@ import com.ghsc.partybuild.model.*;
|
|
|
import com.ghsc.partybuild.service.*;
|
|
|
import com.ghsc.partybuild.util.DateUtils;
|
|
|
import com.ghsc.partybuild.util.ExcelHelper;
|
|
|
+import com.ghsc.partybuild.util.FtpHelper;
|
|
|
import com.ghsc.partybuild.util.StringUtils;
|
|
|
import com.github.pagehelper.PageInfo;
|
|
|
+import org.apache.commons.net.ftp.FTP;
|
|
|
+import org.apache.commons.net.ftp.FTPClient;
|
|
|
+import org.apache.tools.zip.ZipEntry;
|
|
|
+import org.apache.tools.zip.ZipOutputStream;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.ByteArrayOutputStream;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.OutputStream;
|
|
|
+import java.net.URLEncoder;
|
|
|
import java.util.*;
|
|
|
|
|
|
@RestController
|
|
@@ -26,6 +36,8 @@ public class CheckDataController {
|
|
|
private UserService userService;
|
|
|
@Autowired
|
|
|
private DateUtils dateUtils;
|
|
|
+ @Autowired
|
|
|
+ FtpHelper ftpHelper;
|
|
|
|
|
|
@ResponseBody
|
|
|
@GetMapping("/getCheckNameList")
|
|
@@ -83,6 +95,7 @@ public class CheckDataController {
|
|
|
res.setItem(checkDataService.getCheckName(id));
|
|
|
return res;
|
|
|
}
|
|
|
+
|
|
|
@ResponseBody
|
|
|
@GetMapping("/getCheckDataList")
|
|
|
public RequsetData<PageInfo<HashMap<String, Object>>> getCheckDataList(int pageindex, int pagesize, Integer year, String dzzdm, String remark) {
|
|
@@ -93,7 +106,7 @@ public class CheckDataController {
|
|
|
|
|
|
@ResponseBody
|
|
|
@PostMapping("/saveCheckdata")
|
|
|
- public RequsetData<Integer> saveCheckdata(@RequestBody PtCheckdata item,String userid,String username) {
|
|
|
+ public RequsetData<Integer> saveCheckdata(@RequestBody PtCheckdata item, String userid, String username) {
|
|
|
RequsetData<Integer> res = new RequsetData<>();
|
|
|
try {
|
|
|
item.setCheckdatauserid(userService.getLoginUser().getUserid());
|
|
@@ -102,7 +115,7 @@ public class CheckDataController {
|
|
|
item.setCreatetime(new Date());
|
|
|
item.setCreateuserid(userService.getLoginUser().getUserid());
|
|
|
item.setCreateusername(userService.getUserInfobyId(userService.getLoginUser().getUserid()).getName());
|
|
|
- int id = checkDataService.saveCheckdata(item,userid,username);
|
|
|
+ int id = checkDataService.saveCheckdata(item, userid, username);
|
|
|
res.setItem(id);
|
|
|
res.setMsg("保存成功!");
|
|
|
} catch (Exception ex) {
|
|
@@ -125,12 +138,13 @@ public class CheckDataController {
|
|
|
}
|
|
|
return res;
|
|
|
}
|
|
|
+
|
|
|
@RequestMapping(value = "/exportCheckData", method = RequestMethod.GET)
|
|
|
public void exportCheckData(HttpServletResponse response,
|
|
|
- Integer year, String dzzdm, String remark) throws Exception {
|
|
|
+ Integer year, String dzzdm, String remark) throws Exception {
|
|
|
|
|
|
/**查询数据**/
|
|
|
- List<HashMap<String, Object>> dataList = checkDataService.getCheckDataList(1,9999, year, dzzdm, remark).getList();
|
|
|
+ List<HashMap<String, Object>> dataList = checkDataService.getCheckDataList(1, 9999, year, dzzdm, remark).getList();
|
|
|
|
|
|
ExcelHelper excelHelper = new ExcelHelper();
|
|
|
ExcelHelper.ExcelData data = excelHelper.new ExcelData();
|
|
@@ -163,4 +177,61 @@ public class CheckDataController {
|
|
|
|
|
|
excelHelper.exportExcel(response, "考核材料信息.xlsx", data);
|
|
|
}
|
|
|
+
|
|
|
+ @RequestMapping("/downCheckDataZip")
|
|
|
+ public String downCheckDataZip(HttpServletResponse response,
|
|
|
+ String year,
|
|
|
+ HttpServletRequest request) {
|
|
|
+ ZipOutputStream out=null;
|
|
|
+ String fileName = String.format("%s年度考核材料.zip", year);
|
|
|
+ try {
|
|
|
+ ByteArrayOutputStream fileOStream = new ByteArrayOutputStream();
|
|
|
+ out = new ZipOutputStream(fileOStream);
|
|
|
+ out.setEncoding("gbk");
|
|
|
+ List<HashMap<String, Object>> dataList = checkDataService.getCheckDataFleList(year);
|
|
|
+ FTPClient ftpClient = new FTPClient();
|
|
|
+ ftpHelper.connectToServer(ftpClient);
|
|
|
+ ftpClient.enterLocalPassiveMode();
|
|
|
+ ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
|
|
|
+
|
|
|
+ for (HashMap<String, Object> item : dataList) {
|
|
|
+ //打包显示的文件名
|
|
|
+ String fileExt = item.get("fileurl").toString().substring(item.get("fileurl").toString().lastIndexOf(".")).toLowerCase();
|
|
|
+ out.putNextEntry(new ZipEntry(String.format("%s_%s(%s)%s", item.get("dzzdm").toString(), item.get("checkdatausername"), item.get("dzzmc"), fileExt)));
|
|
|
+ ftpClient.retrieveFile(item.get("fileurl").toString(), out);
|
|
|
+ out.flush();
|
|
|
+ out.closeEntry();
|
|
|
+ }
|
|
|
+ ftpHelper.closeConnect(ftpClient);
|
|
|
+ //所有文件写完后一定要关闭输出流,否则文件下载会不完整。
|
|
|
+ out.flush();
|
|
|
+ out.close();
|
|
|
+ //将zip文件写入响应
|
|
|
+ String name;
|
|
|
+ String agent = request.getHeader("USER-AGENT");
|
|
|
+ if (agent != null && agent.toLowerCase().indexOf("firefox") > 0) {
|
|
|
+ name = "=?UTF-8?B?" + (Base64.getEncoder().encodeToString(fileName.getBytes("UTF-8"))) + "?=";
|
|
|
+ } else {
|
|
|
+ name = URLEncoder.encode(fileName, "UTF-8");
|
|
|
+ }
|
|
|
+ response.setContentType("application/force-download");// 设置强制下载不打开
|
|
|
+ response.setContentType("multipart/form-data;charset=UTF-8");
|
|
|
+ response.setContentType("application/octet-stream");
|
|
|
+ response.addHeader("Content-Disposition", "attachment;filename=" + name);
|
|
|
+
|
|
|
+ OutputStream os = response.getOutputStream();
|
|
|
+ fileOStream.writeTo(os);
|
|
|
+ os.flush();
|
|
|
+ } catch (Exception e) {
|
|
|
+ if (out != null) {
|
|
|
+ try {
|
|
|
+ out.close();
|
|
|
+ } catch (IOException ie) {
|
|
|
+ ie.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ throw new RuntimeException();
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
}
|