package com.ims.eval.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ims.eval.config.CustomException;
import com.ims.eval.entity.PartyBuildingMultiplier;
import com.ims.eval.entity.dto.result.R;
import com.ims.eval.service.IPartyBuildingMultiplierService;
import com.ims.eval.util.ExcelUtil;
import com.ims.eval.util.ExcelUtils;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.beans.IntrospectionException;
import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
*
* 前端控制器
*
*
* @author wang
* @since 2023-03-29
*/
@Slf4j
@RestController
@RequestMapping("//party-building-multiplier")
public class PartyBuildingMultiplierController {
@Autowired
private IPartyBuildingMultiplierService iPartyBuildingMultiplierService;
/**
* 查询
*
* @param id 主键ID
* @param departId 部门id
* @param sectionId 板块id
* @param year 年度
* @return
*/
@GetMapping(value = "/list")
public R list(@RequestParam(value = "pageNum", required = false) Integer pageNum,
@RequestParam(value = "pageSize", required = false) Integer pageSize,
@RequestParam(value = "id", required = false) String id,
@RequestParam(value = "departId", required = false) String departId,
@RequestParam(value = "sectionId", required = false) String sectionId,
@RequestParam(value = "year", required = false) String year) {
IPage list = iPartyBuildingMultiplierService.listAll(pageNum,pageSize,id, departId, sectionId, year);
return R.ok().data(list);
}
/**
* 查询
*
* @param id 主键ID
* @param departId 部门id
* @param sectionId 板块id
* @param year 年度
* @return
*/
@GetMapping(value = "/export1")
public void export1(HttpServletResponse response,
@RequestParam(value = "id", required = false) String id,
@RequestParam(value = "departId", required = false) String departId,
@RequestParam(value = "sectionId", required = false) String sectionId,
@RequestParam(value = "year", required = false) String year) throws IOException, IllegalAccessException, IntrospectionException, InvocationTargetException {
List list = iPartyBuildingMultiplierService.listByParam(id, departId, sectionId, year);
if (list.size() > 0){
OutputStream out = response.getOutputStream();
List titleList = new ArrayList<>();
titleList.add("id");
titleList.add("单位名称");
titleList.add("板块名称");
titleList.add("党建乘数");
titleList.add("年度");
titleList.add("备注");
HSSFWorkbook workBook = ExcelUtils.getWorkBook(titleList, list);
//响应到客户端
try {
this.setResponseHeader(response, "党建乘数.xls");
OutputStream os = response.getOutputStream();
BufferedOutputStream bufferOutput =new BufferedOutputStream(os);
bufferOutput.flush();
workBook.write(bufferOutput);
bufferOutput.close();
} catch (Exception e) {
e.printStackTrace();
}
}else {
throw new CustomException("党建乘数数据为空!");
}
}
/**
* 发送响应流方法
*/
public void setResponseHeader(HttpServletResponse response, String fileName) {
try {
try {
fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
response.setHeader("Expires", " 0");
} catch (Exception ex) {
ex.printStackTrace();
}
}
@PostMapping(value = "/import")
@ResponseBody
public R importAlertrule(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
if (!file.isEmpty()) {
try {
//获取原始的文件名
String originalFilename = file.getOriginalFilename();
//获取文件类型
String fileType = originalFilename.substring(originalFilename.lastIndexOf(".") + 1, originalFilename.length());
//默认从第一行开始读取
Integer startRows = 1;
//获取输入流
InputStream is = file.getInputStream();
List bindingList = new ArrayList<>();
//Excel导入导出的单元类
List strings = ExcelUtil.readData(fileType, startRows, true, is);
//遍历Excel表每一行的数据
for (String[] str : strings) {
PartyBuildingMultiplier partyBuildingMultiplier = new PartyBuildingMultiplier();
partyBuildingMultiplier.setId(str[0]);
partyBuildingMultiplier.setMultiplier(str[3]);
partyBuildingMultiplier.setYear(str[4]);
partyBuildingMultiplier.setRemarks(str[5]);
bindingList.add(partyBuildingMultiplier);
}
boolean b = iPartyBuildingMultiplierService.saveOrUpdateBatch(bindingList);
if (b) {
return R.ok().data(b);
} else {
return R.error().data("保存失败!");
}
} catch (Exception e) {
log.error("错误", e);
return R.customError(e.getMessage()).data("失败!");
}
}
return R.customError("上传文件为空!");
}
/**
* 添加
*
* @param partyBuildingMultiplier
* @return
*/
@PostMapping(value = "/save")
@ApiOperation(value = "新增(修改)", notes = "新增(修改)")
public R addAll(@RequestBody PartyBuildingMultiplier partyBuildingMultiplier) {
try {
boolean b = iPartyBuildingMultiplierService.saveOrUpdate(partyBuildingMultiplier);
if (b) {
return R.ok().data(b);
} else {
return R.error().data("保存失败!");
}
} catch (CustomException e){
return R.customError(e.getMessage()).data("失败!");
}
}
/**
* 批量删除
*
* @param ids
* @return
*/
@PostMapping(value = "/remove/{ids}")
@ApiOperation(value = "删除", notes = "删除")
public R deleteAll(@PathVariable("ids") String ids) {
String[] strings = ids.split(",");
boolean b = iPartyBuildingMultiplierService.removeByIds(Arrays.asList(strings));
if (b) {
return R.ok().data(b);
} else {
return R.error().data("删除失败!");
}
}
}