package com.yuanchu.mom.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.PageReadListener;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.excel.FeCalibrationScheduleExport;
import com.yuanchu.mom.pojo.FeCalibrationSchedule;
import com.yuanchu.mom.service.FeCalibrationScheduleService;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
*
* 仪器设备检定/校准计划表 前端控制器
*
*
* @author 芯导软件(江苏)有限公司
* @since 2024-11-13 02:53:05
*/
@Api(tags = "量值溯源计划")
@RestController
@RequestMapping("/feCalibrationSchedule")
public class FeCalibrationScheduleController {
@Resource
private FeCalibrationScheduleService feCalibrationScheduleService;
@ValueClassify(value = "量值溯源计划")
@ApiOperation(value = "量值溯源计划查询")
@GetMapping("/getPageCalibrationSchedule")
public Result> getPageCalibrationSchedule(Page page, String instrumentName, String managementNumber) {
IPage ipage = feCalibrationScheduleService.page(page,instrumentName, managementNumber);
return Result.success(ipage);
}
@ValueClassify(value = "量值溯源计划")
@ApiOperation(value = "量值溯源计划新增编辑")
@PostMapping("/addCalibrationSchedule")
public Result addCalibrationSchedule(@RequestBody FeCalibrationSchedule feCalibrationSchedule) {
return Result.success(feCalibrationScheduleService.saveOrUpdate(feCalibrationSchedule));
}
@ValueClassify(value = "量值溯源计划")
@ApiOperation(value = "量值溯源计划删除")
@GetMapping("/removeCalibrationSchedule")
public Result removeCalibrationSchedule(Integer id) {
return Result.success(feCalibrationScheduleService.removeById(id));
}
@ValueClassify(value = "量值溯源计划")
@ApiOperation(value = "量值溯源计划导出")
@PostMapping("exportOfValueTraceabilityPlan")
public void exportOfValueTraceabilityPlan(String instrumentName, String managementNumber,
HttpServletResponse response) throws Exception {
IPage data = feCalibrationScheduleService.page(new Page<>(-1, -1),instrumentName, managementNumber);
List studentList = JSONObject.parseArray(JSON.toJSONString(data.getRecords()), FeCalibrationScheduleExport.class);
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("requestType", "excel");
response.setHeader("Access-Control-Expose-Headers", "requestType");
// 设置单元格样式
// 保存到第一个sheet中
EasyExcel.write(response.getOutputStream())
.head(FeCalibrationScheduleExport.class)
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 自适应列宽
.sheet("sheet")
.doWrite(studentList);
}
@ValueClassify(value = "量值溯源计划")
@ApiOperation(value = "量值溯源计划导入")
@PostMapping("/importOfValueTraceabilityPlan")
public void importOfValueTraceabilityPlan(MultipartFile file) throws IOException {
if (file.isEmpty()) {
return;
}
EasyExcel.read(file.getInputStream(), FeCalibrationScheduleExport.class, new PageReadListener(dataList -> {
List studentList = JSONObject.parseArray(JSON.toJSONString(dataList), FeCalibrationSchedule.class);
feCalibrationScheduleService.saveOrUpdateBatch(studentList);
})).sheet().doRead();
}
}