OrganizationRatingController.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. package com.ims.eval.controller;
  2. import cn.hutool.core.date.DateUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.ims.eval.config.CustomException;
  6. import com.ims.eval.entity.OrganizationRating;
  7. import com.ims.eval.entity.dto.result.R;
  8. import com.ims.eval.service.IOrganizationRatingService;
  9. import com.ims.eval.util.ExcelUtil;
  10. import io.swagger.annotations.ApiOperation;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.http.MediaType;
  13. import org.springframework.web.bind.annotation.*;
  14. import org.springframework.web.multipart.MultipartFile;
  15. import javax.servlet.http.HttpServletResponse;
  16. import java.io.IOException;
  17. import java.io.InputStream;
  18. import java.util.ArrayList;
  19. import java.util.Arrays;
  20. import java.util.List;
  21. /**
  22. * <p>
  23. * 年度评级 前端控制器
  24. * </p>
  25. *
  26. * @author wang
  27. * @since 2023-06-20
  28. */
  29. @RestController
  30. @RequestMapping("//organization-rating")
  31. public class OrganizationRatingController {
  32. @Autowired
  33. private IOrganizationRatingService organizationRatingService;
  34. /**
  35. * 单位考评评级
  36. */
  37. @PostMapping(value = "grade")
  38. public R grade(@RequestBody List<OrganizationRating> orgRating) {
  39. return organizationRatingService.grade(orgRating);
  40. // return R.ok().data(grade);
  41. }
  42. /**
  43. * 查询
  44. * @param pageNum
  45. * @param pageSize
  46. * @param id
  47. * @param binSection
  48. * @param year
  49. * @return
  50. */
  51. @GetMapping(value = "list")
  52. public R list(@RequestParam(value = "pageNum") Integer pageNum,
  53. @RequestParam(value = "pageSize") Integer pageSize,
  54. @RequestParam(value = "id", required = false) String id,
  55. @RequestParam(value = "organizationYearRatingId", required = false) String organizationYearRatingId,
  56. @RequestParam(value = "binSection", required = false) String binSection,
  57. @RequestParam(value = "year", required = false) String year,
  58. @RequestParam(value = "organizationShortName", required = false) String organizationShortName,
  59. @RequestParam(value = "organizationId", required = false) String organizationId,
  60. @RequestParam(value = "safetyEnvProtection", required = false) String safetyEnvProtection,
  61. @RequestParam(value = "veto", required = false) String veto,
  62. @RequestParam(value = "netProfit", required = false) String netProfit,
  63. @RequestParam(value = "compositeScore", required = false) String compositeScore,
  64. @RequestParam(value = "annualTarget", required = false) String annualTarget,
  65. @RequestParam(value = "bonusPoint", required = false) String bonusPoint,
  66. @RequestParam(value = "compositeScoreRaking", required = false) String compositeScoreRaking,
  67. @RequestParam(value = "projectLevel", required = false) String projectLevel) {
  68. IPage<OrganizationRating> list = organizationRatingService.list(pageNum, pageSize, id, organizationYearRatingId, binSection, year, organizationShortName, organizationId, safetyEnvProtection, veto, netProfit, compositeScore, annualTarget, bonusPoint, compositeScoreRaking, projectLevel);
  69. if (list.getRecords().isEmpty()) {
  70. return R.ok().data("");
  71. }
  72. return R.ok().data(list);
  73. }
  74. @PostMapping(value = "/save")
  75. @ApiOperation(value = "新增(修改)", notes = "新增(修改)")
  76. public R addAll(@RequestBody OrganizationRating organizationRating) {
  77. try {
  78. boolean b = organizationRatingService.saveOrUpdate(organizationRating);
  79. if (b) {
  80. return R.ok().data(b);
  81. } else {
  82. return R.error().data("保存失败!");
  83. }
  84. } catch (CustomException e) {
  85. return R.customError(e.getMessage()).data("失败!");
  86. }
  87. }
  88. @PostMapping(value = "/generateRating")
  89. @ApiOperation(value = "批量生成明细", notes = "批量生成明细")
  90. public R generateRating(@RequestParam(value = "organizationYearRatingId") String organizationYearRatingId,
  91. @RequestParam(value = "year") String year) {
  92. boolean b = organizationRatingService.generateRating(organizationYearRatingId, year);
  93. if (b) {
  94. return R.ok().data(b);
  95. } else {
  96. return R.error().data("操作失败!");
  97. }
  98. }
  99. /**
  100. * 批量删除
  101. *
  102. * @param ids
  103. * @return
  104. */
  105. @PostMapping(value = "/remove/{ids}")
  106. @ApiOperation(value = "删除", notes = "删除")
  107. public R deleteAll(@PathVariable("ids") String ids) {
  108. String[] strings = ids.split(",");
  109. boolean b = organizationRatingService.removeByIds(Arrays.asList(strings));
  110. if (b) {
  111. return R.ok().data(b);
  112. } else {
  113. return R.error().data("删除失败!");
  114. }
  115. }
  116. /**
  117. * 导入
  118. *
  119. * @param file 文件
  120. * @return 结果
  121. */
  122. @PostMapping(value = "/import")
  123. public R importData(@RequestParam("file") MultipartFile file) {
  124. if (!file.isEmpty()) {
  125. try {
  126. //获取原始的文件名
  127. String originalFilename = file.getOriginalFilename();
  128. //获取文件类型
  129. String fileType = originalFilename.substring(originalFilename.lastIndexOf(".") + 1, originalFilename.length());
  130. //默认从第一行开始读取
  131. int startRows = 1;
  132. //获取输入流
  133. InputStream is = file.getInputStream();
  134. List<OrganizationRating> organizationRatingList = new ArrayList<>();
  135. //Excel导入导出的单元类
  136. List<String[]> strings = ExcelUtil.readData(fileType, startRows - 1, true, is);
  137. //遍历Excel表每一行的数据
  138. for (String[] str : strings) {
  139. if (startRows == 1) {
  140. startRows++;
  141. continue;
  142. }
  143. OrganizationRating organizationRating = new OrganizationRating();
  144. organizationRating.setId(str[0]);//主键
  145. organizationRating.setOrganizationShortName(str[1]);//考评组织名称
  146. organizationRating.setOrganizationId(str[2]);//考评组织ID
  147. organizationRating.setBinSection(str[3]);//板块id
  148. organizationRating.setYear(str[4]);//年度
  149. organizationRating.setScjyRate(str[5]);//生产经营评级
  150. organizationRating.setQqRate(str[6]);//前期评级
  151. organizationRating.setJjRate(str[7]);//基建评级
  152. organizationRating.setYearRate(str[8]);//年度评级
  153. organizationRating.setRemark(str[9]);
  154. if (null == str[0] || "".equals(str[0])) {
  155. organizationRating.setCreateTime(DateUtil.date());
  156. } else {
  157. organizationRating.setUpdateTime(DateUtil.date());
  158. }
  159. organizationRatingList.add(organizationRating);
  160. }
  161. boolean b = organizationRatingService.saveOrUpdateBatch(organizationRatingList);
  162. if (b) {
  163. return R.ok().data(b);
  164. } else {
  165. return R.error().data("保存失败!");
  166. }
  167. } catch (Exception e) {
  168. return R.customError("失败");
  169. }
  170. }
  171. return R.customError("上传文件为空!");
  172. }
  173. /**
  174. * 导出文件
  175. */
  176. @GetMapping(value = "exportExcel", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
  177. public R exportExcel(HttpServletResponse response,
  178. @RequestParam(value = "binSection", required = false) String binSection,
  179. @RequestParam(value = "year", required = false) String year) throws IOException {
  180. organizationRatingService.exportExcel(response,binSection,year);
  181. return R.ok();
  182. }
  183. /**
  184. * 导入文件
  185. */
  186. @PostMapping(value = "/importExcel")
  187. public R importExcel(@RequestParam("file") MultipartFile file,
  188. @RequestParam(value = "binSection") String binSection,
  189. @RequestParam(value = "year") String year
  190. ) {
  191. return organizationRatingService.importExcel(file,binSection,year);
  192. }
  193. }