package com.huimv.farm.damsubsidy.controller;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.huimv.farm.damsubsidy.common.token.TokenSign;
import com.huimv.farm.damsubsidy.common.utils.Result;
import com.huimv.farm.damsubsidy.common.utils.UploadImage;
import com.huimv.farm.damsubsidy.entity.AreaAll;
import com.huimv.farm.damsubsidy.entity.BillSubsidy;
import com.huimv.farm.damsubsidy.entity.SysUser;
import com.huimv.farm.damsubsidy.service.IAreaAllService;
import com.huimv.farm.damsubsidy.service.IBillSubsidyService;
import com.huimv.farm.damsubsidy.common.utils.PdfUtil;
import com.huimv.farm.damsubsidy.service.ISysUserService;
import com.huimv.farm.damsubsidy.test.QrCodeExcelPrinter;
import com.huimv.farm.test.Print;
import com.huimv.farm.test.Print2;
import com.spire.xls.*;
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.util.*;
/**
*
* 补贴信息表 前端控制器
*
*
* @author author
* @since 2023-04-26
*/
@RestController
@RequestMapping("/bill-subsidy")
@CrossOrigin
public class BillSubsidyController {
@Autowired
private IBillSubsidyService iBillSubsidyService;
@Autowired
private IAreaAllService iAreaAllService;
@Autowired
private ISysUserService iSysUserService;
@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);
QrCodeExcelPrinter codeExcelPrinter = new QrCodeExcelPrinter();
codeExcelPrinter.test();
Print.print(subsidy);
String path = "/opt/subsidy/order_contract.xls";
//加载Excel文档
Workbook wb = new Workbook();
wb.loadFromFile(path);
Worksheet sheet = wb.getWorksheets().get(0);
//添加图片
ExcelPicture picture = sheet.getPictures().add(37, 10, "/opt/subsidy/a.png");
picture.setHeight(70);//设置图片高度
picture.setWidth(75);//设置图片宽度
Worksheet worksheet = wb.getWorksheets().get(0);
worksheet.getRange().get("E3").getStyle().setWrapText(true);//地址自动换行
worksheet.getRange().get("C3").getStyle().setWrapText(true);//名字自动换行
worksheet.getRange().get("C18").getStyle().setWrapText(true);//耳标号
//调用方法保存为PDF格式
String pdfPath = "/opt/subsidy/" + subsidy.getFarmerName() + ".pdf";
wb.saveToFile(pdfPath, FileFormat.PDF);
wb.dispose();
PdfUtil.returnPdfStream2(response, pdfPath, subsidy.getFarmerName());
//文件删除 TODO
File file = new File(pdfPath);
//
FileUtils.forceDelete(file);
}
@PostMapping("/updatePayStatus")
public Result updatePayStatus(@RequestBody Map paramsMap) {
String ids = paramsMap.get("ids");
String[] split = ids.split(",");
List list = new ArrayList();
for (String s : split) {
BillSubsidy billSubsidy = new BillSubsidy();
billSubsidy.setId(Long.parseLong(s));
billSubsidy.setIsPay(2);
list.add(billSubsidy);
}
subsidyService.updateBatchById(list);
return new Result(10000, "批量修改成功", true);
}
@PostMapping("/printPay2")
public Result printPay(HttpServletResponse response, @RequestBody Map paramsMap) throws IOException {
return subsidyService.printPay(response, paramsMap);
}
@GetMapping("/printPay")
public void printPay2(HttpServletResponse response, @RequestParam(name = "startDate", required = false) String startDate,
@RequestParam(name = "endDate", required = false) String endDate
) throws IOException {
subsidyService.printPay2(response, startDate, endDate);
}
//阶段性统计表
@GetMapping("/printAmount")
public void printAmount(HttpServletResponse response, HttpServletRequest httpServletRequest, @RequestParam(name = "country", required = false) String country
, @RequestParam(name = "startDate", required = true) String startDate, @RequestParam(name = "endDate", required = true) String endDate,
@RequestParam(name = "type", required = true) Integer type, @RequestParam(name = "id", required = false) String id
) throws Exception {
if (type == 0) {
//畜牧中心
if (country == null || "".equals(country)) {
//打印县
Map map = new HashMap<>();
map.put("start", startDate);
map.put("end", endDate);
map.put("code", "1");
iBillSubsidyService.printAmount(response, map);
String path = "/opt/subsidy/xian.xls";
PdfUtil.returnPdfStream3(response, path, "县阶段性统计表");
} else {
//打印镇
Map map = new HashMap<>();
map.put("start", startDate);
map.put("end", endDate);
map.put("code", country);
iBillSubsidyService.printAmount(response, map);
String path = "/opt/subsidy/amount.xls";
PdfUtil.returnPdfStream3(response, path, "镇阶段性统计表");
}
} else {
//专干
SysUser user = iSysUserService.getById(id);
country = user.getBriefAddressCode();//镇的编码
Map map = new HashMap<>();
map.put("start", startDate);
map.put("end", endDate);
map.put("code", country);
iBillSubsidyService.printAmount(response, map);
String path = "/opt/subsidy/amount.xls";
PdfUtil.returnPdfStream3(response, path, "镇阶段性统计表");
}
}
//阶段性待支付统计表
@GetMapping("/printWaitPay")
public void printWaitPay(HttpServletResponse response, @RequestParam(name = "country", required = false) String country
, @RequestParam(name = "startDate", required = true) String startDate, @RequestParam(name = "endDate", required = true) String endDate,
@RequestParam(name = "id", required = false) String id, @RequestParam(name = "type", required = false) Integer type
) throws Exception {
if (type == 0) {
//畜牧中心
Map map = new HashMap<>();
map.put("start", startDate);
map.put("end", endDate);
map.put("code", country);
iBillSubsidyService.printWaitPay(response, map);
String path = "/opt/subsidy/pay.xls";
PdfUtil.returnPdfStream3(response, path, "待支付表");
} else {
//专干
SysUser byId = iSysUserService.getById(id);
Map map = new HashMap<>();
map.put("start", startDate);
map.put("end", endDate);
map.put("code", byId.getBriefAddressCode());
iBillSubsidyService.printWaitPay(response, map);
String path = "/opt/subsidy/pay.xls";
PdfUtil.returnPdfStream3(response, path, "待支付表");
}
//文件删除 TODO
}
//阶段性统计表展示
@PostMapping("/listCount")
public Result listCount(HttpServletRequest httpServletRequest, @RequestBody Map parasMap) {
return iBillSubsidyService.countState(httpServletRequest, parasMap);
}
//阶段性待支付统计表展示
@PostMapping("/listCountPay")
public Result listCountPay(HttpServletRequest httpServletRequest, @RequestBody Map parasMap) {
return iBillSubsidyService.countPay(httpServletRequest, parasMap);
}
}