package com.ims.eval.controller;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ims.eval.config.CustomException;
import com.ims.eval.entity.OrganizationRating;
import com.ims.eval.entity.dto.result.R;
import com.ims.eval.service.IOrganizationRatingService;
import com.ims.eval.util.ExcelUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
*
* 年度评级 前端控制器
*
*
* @author wang
* @since 2023-06-20
*/
@RestController
@RequestMapping("//organization-rating")
public class OrganizationRatingController {
@Autowired
private IOrganizationRatingService organizationRatingService;
/**
* 单位考评评级
*/
@PostMapping(value = "grade")
public R grade(@RequestBody List orgRating) {
return organizationRatingService.grade(orgRating);
// return R.ok().data(grade);
}
/**
* 查询
* @param pageNum
* @param pageSize
* @param id
* @param binSection
* @param year
* @return
*/
@GetMapping(value = "list")
public R list(@RequestParam(value = "pageNum") Integer pageNum,
@RequestParam(value = "pageSize") Integer pageSize,
@RequestParam(value = "id", required = false) String id,
@RequestParam(value = "organizationYearRatingId", required = false) String organizationYearRatingId,
@RequestParam(value = "binSection", required = false) String binSection,
@RequestParam(value = "year", required = false) String year,
@RequestParam(value = "organizationShortName", required = false) String organizationShortName,
@RequestParam(value = "organizationId", required = false) String organizationId,
@RequestParam(value = "safetyEnvProtection", required = false) String safetyEnvProtection,
@RequestParam(value = "veto", required = false) String veto,
@RequestParam(value = "netProfit", required = false) String netProfit,
@RequestParam(value = "compositeScore", required = false) String compositeScore,
@RequestParam(value = "annualTarget", required = false) String annualTarget,
@RequestParam(value = "bonusPoint", required = false) String bonusPoint,
@RequestParam(value = "compositeScoreRaking", required = false) String compositeScoreRaking,
@RequestParam(value = "projectLevel", required = false) String projectLevel,
@RequestParam(value = "score", required = false) String score) {
IPage list = organizationRatingService.list(pageNum, pageSize, id, organizationYearRatingId, binSection, year, organizationShortName, organizationId, safetyEnvProtection, veto, netProfit, compositeScore, annualTarget, bonusPoint, compositeScoreRaking, projectLevel,score);
if (list.getRecords().isEmpty()) {
return R.ok().data("");
}
return R.ok().data(list);
}
@PostMapping(value = "/save")
@ApiOperation(value = "新增(修改)", notes = "新增(修改)")
public R addAll(@RequestBody OrganizationRating organizationRating) {
try {
boolean b = organizationRatingService.saveOrUpdate(organizationRating);
if (b) {
return R.ok().data(b);
} else {
return R.error().data("保存失败!");
}
} catch (CustomException e) {
return R.customError(e.getMessage()).data("失败!");
}
}
@PostMapping(value = "/generateRating")
@ApiOperation(value = "批量生成明细", notes = "批量生成明细")
public R generateRating(@RequestParam(value = "organizationYearRatingId") String organizationYearRatingId,
@RequestParam(value = "year") String year) {
boolean b = organizationRatingService.generateRating(organizationYearRatingId, year);
if (b) {
return R.ok().data(b);
} else {
return R.error().data("操作失败!");
}
}
/**
* 批量删除
*
* @param ids
* @return
*/
@PostMapping(value = "/remove/{ids}")
@ApiOperation(value = "删除", notes = "删除")
public R deleteAll(@PathVariable("ids") String ids) {
String[] strings = ids.split(",");
boolean b = organizationRatingService.removeByIds(Arrays.asList(strings));
if (b) {
return R.ok().data(b);
} else {
return R.error().data("删除失败!");
}
}
/**
* 导入
*
* @param file 文件
* @return 结果
*/
@PostMapping(value = "/import")
public R importData(@RequestParam("file") MultipartFile file) {
if (!file.isEmpty()) {
try {
//获取原始的文件名
String originalFilename = file.getOriginalFilename();
//获取文件类型
String fileType = originalFilename.substring(originalFilename.lastIndexOf(".") + 1, originalFilename.length());
//默认从第一行开始读取
int startRows = 1;
//获取输入流
InputStream is = file.getInputStream();
List organizationRatingList = new ArrayList<>();
//Excel导入导出的单元类
List strings = ExcelUtil.readData(fileType, startRows - 1, true, is);
//遍历Excel表每一行的数据
for (String[] str : strings) {
if (startRows == 1) {
startRows++;
continue;
}
OrganizationRating organizationRating = new OrganizationRating();
organizationRating.setId(str[0]);//主键
organizationRating.setOrganizationShortName(str[1]);//考评组织名称
organizationRating.setOrganizationId(str[2]);//考评组织ID
organizationRating.setBinSection(str[3]);//板块id
organizationRating.setYear(str[4]);//年度
organizationRating.setScjyRate(str[5]);//生产经营评级
organizationRating.setQqRate(str[6]);//前期评级
organizationRating.setJjRate(str[7]);//基建评级
organizationRating.setYearRate(str[8]);//年度评级
organizationRating.setRemark(str[9]);
if (null == str[0] || "".equals(str[0])) {
organizationRating.setCreateTime(DateUtil.date());
} else {
organizationRating.setUpdateTime(DateUtil.date());
}
organizationRatingList.add(organizationRating);
}
boolean b = organizationRatingService.saveOrUpdateBatch(organizationRatingList);
if (b) {
return R.ok().data(b);
} else {
return R.error().data("保存失败!");
}
} catch (Exception e) {
return R.customError("失败");
}
}
return R.customError("上传文件为空!");
}
/**
* 导出文件
*/
@GetMapping(value = "exportExcel", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public R exportExcel(HttpServletResponse response,
@RequestParam(value = "binSection", required = false) String binSection,
@RequestParam(value = "year", required = false) String year) throws IOException {
organizationRatingService.exportExcel(response,binSection,year);
return R.ok();
}
/**
* 导入文件
*/
@PostMapping(value = "/importExcel")
public R importExcel(@RequestParam("file") MultipartFile file,
@RequestParam(value = "binSection") String binSection,
@RequestParam(value = "year") String year
) {
return organizationRatingService.importExcel(file,binSection,year);
}
}