package com.huimv.farm.damsubsidy.controller;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.UUID;
import com.huimv.farm.damsubsidy.common.utils.Result;
import com.huimv.farm.damsubsidy.common.utils.UploadImage;
import com.huimv.farm.damsubsidy.entity.BillSubsidy;
import com.huimv.farm.damsubsidy.service.IBillSubsidyService;
import com.huimv.farm.damsubsidy.common.utils.PdfUtil;
import com.huimv.farm.test.Print;
import com.spire.xls.FileFormat;
import com.spire.xls.Workbook;
import org.apache.tomcat.util.http.fileupload.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
*
* 补贴信息表 前端控制器
*
*
* @author author
* @since 2023-04-26
*/
@RestController
@RequestMapping("/bill-subsidy")
@CrossOrigin
public class BillSubsidyController {
@Autowired
private IBillSubsidyService iBillSubsidyService;
@PostMapping("/addApplication")
public Result addApplication(HttpServletRequest httpServletRequest, @RequestBody BillSubsidy billSubsidy){
return iBillSubsidyService.addApplication(httpServletRequest,billSubsidy);
}
@PostMapping("/saveApplication")
public Result saveApplication(HttpServletRequest httpServletRequest, @RequestBody BillSubsidy billSubsidy){
return iBillSubsidyService.saveApplication(httpServletRequest,billSubsidy);
}
@Autowired
private IBillSubsidyService subsidyService;
@RequestMapping("/list")
public Result list(HttpServletRequest httpServletRequest, @RequestBody Map paramsMap) {
return subsidyService.list(httpServletRequest, paramsMap);
}
@RequestMapping("/listById")
public Result listById(HttpServletRequest httpServletRequest, @RequestBody Map paramsMap) {
return subsidyService.listById(httpServletRequest, paramsMap);
}
@RequestMapping("/edit")
public Result edit(HttpServletRequest httpServletRequest, @RequestBody Map paramsMap) {
return subsidyService.edit(httpServletRequest, paramsMap);
}
@RequestMapping("/edit2")
public Result edit2(HttpServletRequest httpServletRequest,
@RequestParam("workImg") MultipartFile workImg,
@RequestParam("id") String id,
@RequestParam("type") String type,
@RequestParam("rejectReason") String rejectReason) {
String imgname = "成功";
String originalFilename = workImg.getOriginalFilename();
String filenameExtension = StringUtils.getFilenameExtension(originalFilename);
String path = DateUtil.format(new Date(), "yyyy-MM");
try {
InputStream inputStream = workImg.getInputStream();
BufferedInputStream in = new BufferedInputStream(inputStream);
ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
byte[] temp = new byte[1024];
int size = 0;
while ((size = in.read(temp)) != -1) {
out.write(temp, 0, size);
}
in.close();
byte[] content = out.toByteArray();
imgname = UUID.randomUUID() + "." + filenameExtension;
UploadImage.sshSftp(content, path, imgname);
} catch (Exception e) {
e.printStackTrace();
}
String content = "https://img.ifarmcloud.com/images/" + path + "/" + imgname;
Map map = new HashMap<>();
map.put("id", id);
map.put("type", type);
map.put("rejectReason", rejectReason);
map.put("workAccptUrl", content);
return subsidyService.edit2(httpServletRequest, map);
}
@RequestMapping("/appeal")
public Result appeal(HttpServletRequest httpServletRequest, @RequestBody Map paramsMap) {
return subsidyService.appeal(httpServletRequest, paramsMap);
}
@PostMapping("/editApplication")
public Result editApplication(HttpServletRequest httpServletRequest, @RequestBody Map parasMap){
return iBillSubsidyService.editApplication(httpServletRequest,parasMap);
}
@PostMapping("/listApplication")
public Result listApplication(HttpServletRequest httpServletRequest, @RequestBody Map parasMap){
return iBillSubsidyService.listApplication(httpServletRequest,parasMap);
}
@PostMapping("/getLast")
public Result getLast(HttpServletRequest httpServletRequest, @RequestBody Map parasMap){
return iBillSubsidyService.getLast(httpServletRequest,parasMap);
}
@PostMapping("/listPcSub")
public Result listPcSub(HttpServletRequest httpServletRequest, @RequestBody Map parasMap){
return subsidyService.listPcSub(httpServletRequest,parasMap);
}
@PostMapping("/listFlow")
public Result listFlow(@RequestBody Map parasMap){
return iBillSubsidyService.listFlow(parasMap);
}
//打印
@GetMapping("/print")
public void print(HttpServletResponse response, HttpServletRequest httpServletRequest,@RequestParam(name = "id", required = true) Integer id) throws Exception {
// Integer id=Integer.parseInt(parasMap.get("id"));
BillSubsidy subsidy = subsidyService.getById(id);
Print.print(subsidy);
String path = "/opt/subsidy/order_contract.xls";
//加载Excel文档
Workbook wb = new Workbook();
wb.loadFromFile(path);
//调用方法保存为PDF格式
String pdfPath = "/opt/subsidy/"+subsidy.getFarmerName()+".pdf";
wb.saveToFile(pdfPath, FileFormat.PDF);
// wb.getConverterSetting().setSheetFitToPage(true);
// OutputStream outputStream = null;
// wb.saveToStream(outputStream);
PdfUtil.returnPdfStream2(response,pdfPath,subsidy.getFarmerName());
//文件删除 TODO
// File file = new File("G://"+subsidy.getFarmerName() + ".pdf");
//
// FileUtils.forceDelete(file);
// Path path1 = Paths.get("/opt/subsidy/"+subsidy.getFarmerName()+".pdf");
// Files.delete(path1);
// Path path2 = Paths.get("/opt/subsidy/"+"order_contract"+".xls");
// Files.delete(path2);
}
}