package com.yuanchu.mom.controller;
|
|
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.http.HttpUtil;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.yuanchu.mom.annotation.ValueAuth;
|
import com.yuanchu.mom.annotation.ValueClassify;
|
import com.yuanchu.mom.dto.InsReportDto;
|
import com.yuanchu.mom.dto.ReportPageDto;
|
import com.yuanchu.mom.exception.ErrorException;
|
import com.yuanchu.mom.service.InsReportService;
|
import com.yuanchu.mom.utils.JackSonUtil;
|
import com.yuanchu.mom.vo.Result;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.File;
|
import java.io.IOException;
|
import java.io.PrintWriter;
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
import java.util.Map;
|
import java.util.Objects;
|
import java.util.Scanner;
|
|
@RestController
|
@RequestMapping("/insReport")
|
@Api(tags = "检验报告")
|
public class InsReportController {
|
|
@Resource
|
private InsReportService insReportService;
|
|
@Value("${wordUrl}")
|
private String wordUrl;
|
|
@ValueClassify("报告编制")
|
@ApiOperation(value = "查询检验报告数据")
|
@PostMapping("/pageInsReport")
|
public Result pageInsReport(@RequestBody Map<String, Object> data) throws Exception {
|
Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
|
ReportPageDto reportPageDto = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ReportPageDto.class);
|
return Result.success(insReportService.pageInsReport(page, reportPageDto));
|
}
|
|
@ValueClassify("报告编制")
|
@ApiOperation(value = "报告上传")
|
@PostMapping("/inReport")
|
public Result inReport(MultipartFile file, Integer id) {
|
String urlString;
|
String pathName;
|
try {
|
String path = wordUrl;
|
File realpath = new File(path);
|
if (!realpath.exists()) {
|
realpath.mkdirs();
|
}
|
pathName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")) + "_" + file.getOriginalFilename();
|
urlString = realpath + "/" + pathName;
|
file.transferTo(new File(urlString));
|
return Result.success(insReportService.inReport("/word/" + pathName, id));
|
} catch (Exception e) {
|
throw new ErrorException("文件上传失败");
|
}
|
}
|
|
@ValueClassify("报告编制")
|
@ApiOperation(value = "报告还原")
|
@PostMapping("/upReportUrl")
|
public Result upReportUrl(Integer id) {
|
return Result.success(insReportService.upReportUrl(id));
|
}
|
|
/*@ValueClassify("报告编制")
|
@ApiOperation(value = "报告在线编制")
|
@GetMapping("/upReportFile")
|
public Result upReportFile() {
|
return Result.success();
|
}*/
|
|
@ValueClassify("报告编制")
|
@ApiOperation(value = "提交")
|
@PostMapping("/writeReport")
|
public Result writeReport(Integer id) {
|
return Result.success(insReportService.writeReport(id));
|
}
|
|
@ValueClassify("报告编制")
|
@ApiOperation(value = "审核")
|
@PostMapping("/examineReport")
|
public Result examineReport(Integer id, Integer isExamine, String examineTell) {
|
return Result.success(insReportService.examineReport(id, isExamine, examineTell));
|
}
|
|
@ValueClassify("报告编制")
|
@ApiOperation(value = "批准")
|
@PostMapping("/ratifyReport")
|
public Result ratifyReport(Integer id, Integer isRatify, String ratifyTell,String sealUrl) {
|
return Result.success(insReportService.ratifyReport(id, isRatify, ratifyTell,sealUrl));
|
}
|
|
@RequestMapping("/onlyOffice/save")
|
@ValueAuth
|
public void saveFile(@RequestParam String fileName, HttpServletRequest request, HttpServletResponse response) {
|
PrintWriter writer = null;
|
try {
|
writer = response.getWriter();
|
// 获取传输的json数据
|
Scanner scanner = new Scanner(request.getInputStream()).useDelimiter("\\A");
|
String body = scanner.hasNext() ? scanner.next() : "";
|
JSONObject jsonObject = JSONObject.parseObject(body);
|
|
if (jsonObject.containsKey("url")) {
|
String jsonArray = jsonObject.get("lastsave").toString(); // 更新时间
|
String fileUrl = jsonObject.get("url").toString(); // 更新文件url
|
HttpUtil.downloadFile(fileUrl, FileUtil.file(wordUrl + "/" + fileName));
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
writer.write("{\"error\":-1}");
|
return;
|
}
|
/*
|
* status = 1,我们给onlyOffice的服务返回{"error":"0"}的信息。
|
* 这样onlyOffice会认为回调接口是没问题的,这样就可以在线编辑文档了,否则的话会弹出窗口说明
|
*/
|
if (Objects.nonNull(writer)) {
|
writer.write("{\"error\":0}");
|
}
|
}
|
|
@ValueAuth
|
@ApiOperation(value = "报告批量下载")
|
@GetMapping("/downAll")
|
public Result downAll(String ids) {
|
return Result.success(insReportService.downAll(ids));
|
}
|
|
@ValueAuth
|
@ApiOperation(value = "报告批量上传")
|
@PostMapping("/upAll")
|
public Result upAll(MultipartFile file) throws IOException {
|
return Result.success(insReportService.upAll(file));
|
}
|
|
@ValueAuth
|
@ApiOperation(value = "查出该订单下每个样品下每个站点的检验次数")
|
@GetMapping("/getInsOrderStateCount")
|
public Result getInsOrderStateCount(Integer id,Integer sampleId){
|
return Result.success(insReportService.getInsOrderStateCount(id,sampleId));
|
}
|
|
//取消2.26
|
@ValueClassify("报告编制")
|
@ApiOperation(value = "判断是否生成总报告")
|
@PostMapping("/isReport")
|
public Result isReport(@RequestBody InsReportDto insReportDto) {
|
return Result.success(insReportService.isReport(insReportDto));
|
}
|
}
|