DeptAssessmentDeclarationController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. package com.ims.eval.controller;
  2. import cn.hutool.core.convert.Convert;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import cn.hutool.json.JSONArray;
  5. import cn.hutool.json.JSONUtil;
  6. import com.alibaba.fastjson.JSONObject;
  7. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  8. import com.baomidou.mybatisplus.core.metadata.IPage;
  9. import com.ims.common.utils.StringUtils;
  10. import com.ims.eval.config.CustomException;
  11. import com.ims.eval.entity.DeptAssessmentDeclaration;
  12. import com.ims.eval.entity.DeptAssessmentDeclarationContent;
  13. import com.ims.eval.entity.dto.request.EmployeeDTO;
  14. import com.ims.eval.entity.dto.request.UserDTO;
  15. import com.ims.eval.entity.dto.result.R;
  16. import com.ims.eval.service.IDeptAssessmentDeclarationContentService;
  17. import com.ims.eval.service.IDeptAssessmentDeclarationService;
  18. import com.ims.eval.service.IUserService;
  19. import com.ims.eval.util.ExcelUtil;
  20. import com.ims.eval.util.ExcelUtils;
  21. import lombok.extern.slf4j.Slf4j;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.web.bind.annotation.*;
  24. import org.springframework.web.multipart.MultipartFile;
  25. import javax.servlet.http.HttpServletRequest;
  26. import javax.servlet.http.HttpServletResponse;
  27. import java.io.InputStream;
  28. import java.net.URLEncoder;
  29. import java.util.ArrayList;
  30. import java.util.Arrays;
  31. import java.util.List;
  32. /**
  33. * 绩效结果考核申报
  34. *
  35. * @author hlf
  36. * @date 2023/5/29 15:15
  37. * 文件说明:
  38. */
  39. @Slf4j
  40. @RestController
  41. @RequestMapping("//evaluation-dept-ad")
  42. public class DeptAssessmentDeclarationController {
  43. @Autowired
  44. private IDeptAssessmentDeclarationService deptAssessmentDeclarationService;
  45. @Autowired
  46. private IDeptAssessmentDeclarationContentService deptAssessmentDeclarationContentService;
  47. @Autowired
  48. private IUserService userService;
  49. @Autowired
  50. private HttpServletRequest request;
  51. /**
  52. * 绩效结果考核申报列表信息(分页)
  53. *
  54. * @param pageNum 当前记录起始索引
  55. * @param pageSize 每页显示记录数
  56. * @param orderNumber 单号
  57. * @param deptId 部门主键
  58. * @param annual 年度
  59. * @param declarationMonth 申报月份
  60. * @return 结果
  61. */
  62. @GetMapping(value = "/list")
  63. public R list(
  64. @RequestParam(value = "pageNum") Integer pageNum,
  65. @RequestParam(value = "pageSize") Integer pageSize,
  66. @RequestParam(value = "orderNumber", required = false) String orderNumber,
  67. @RequestParam(value = "deptId", required = false) String deptId,
  68. @RequestParam(value = "annual", required = false) String annual,
  69. @RequestParam(value = "declarationMonth", required = false) String declarationMonth) {
  70. IPage<DeptAssessmentDeclaration> list = deptAssessmentDeclarationService.listPage(pageNum, pageSize, orderNumber, deptId, annual, declarationMonth);
  71. return R.ok().data(list);
  72. }
  73. /**
  74. * 绩效结果考核申报信息
  75. *
  76. * @return 结果
  77. */
  78. @GetMapping(value = "/listAll")
  79. public R listAll() {
  80. List<DeptAssessmentDeclaration> list = deptAssessmentDeclarationService.list();
  81. return R.ok().data(list);
  82. }
  83. /**
  84. * 新增绩效结果考核申报信息
  85. *
  86. * @param deptAssessmentDeclaration 绩效结果考核申报实体
  87. * @return 结果
  88. */
  89. @PostMapping(value = "/save")
  90. public R addAll(@RequestBody DeptAssessmentDeclaration deptAssessmentDeclaration, HttpServletRequest request) {
  91. try {
  92. boolean b = deptAssessmentDeclarationService.save(deptAssessmentDeclaration, request);
  93. if (b) {
  94. return R.ok().data(b);
  95. } else {
  96. return R.error().data("保存失败!");
  97. }
  98. } catch (CustomException e) {
  99. return R.customError(e.getMessage()).data("失败!");
  100. }
  101. }
  102. /**
  103. * 修改绩效结果考核申报信息
  104. *
  105. * @param deptAssessmentDeclaration 绩效结果考核申报实体
  106. * @return 结果
  107. */
  108. @PostMapping(value = "/modify")
  109. public R modify(@RequestBody DeptAssessmentDeclaration deptAssessmentDeclaration) {
  110. try {
  111. boolean b = deptAssessmentDeclarationService.updateById(deptAssessmentDeclaration);
  112. if (b) {
  113. return R.ok().data(b);
  114. } else {
  115. return R.error().data("修改失败!");
  116. }
  117. } catch (CustomException e) {
  118. return R.customError(e.getMessage()).data("失败!");
  119. }
  120. }
  121. /**
  122. * 批量删除绩效结果考核申报信息
  123. *
  124. * @param ids 主键s
  125. * @return 结果
  126. */
  127. @PostMapping(value = "/removeAll/{ids}")
  128. public R deleteAll(@PathVariable("ids") String ids) {
  129. String[] strings = ids.split(",");
  130. boolean b = deptAssessmentDeclarationService.removeByIds(Arrays.asList(strings));
  131. if (b) {
  132. return R.ok().data(b);
  133. } else {
  134. return R.error().data("删除失败!");
  135. }
  136. }
  137. /**
  138. * 详情-头部信息
  139. *
  140. * @param id 业务主键
  141. * @return 结果
  142. */
  143. @GetMapping(value = "/detailsHead/{id}")
  144. public R detailsHead(@PathVariable("id") String id) {
  145. DeptAssessmentDeclaration deptAssessmentDeclaration = deptAssessmentDeclarationService.getById(id);
  146. return R.ok().data(deptAssessmentDeclaration);
  147. }
  148. /**
  149. * 详情
  150. *
  151. * @param id 业务主键
  152. * @return 结果
  153. */
  154. @GetMapping(value = "/details/{id}")
  155. public R details(@PathVariable("id") String id) {
  156. List<DeptAssessmentDeclarationContent> list = deptAssessmentDeclarationContentService.detailsList(id);
  157. return R.ok().data(list);
  158. }
  159. /**
  160. * 详情-修改/新增
  161. *
  162. * @param deptAssessmentDeclarationContentList 修改内容
  163. * @return 结果
  164. */
  165. @PostMapping(value = "/update")
  166. public R update(@RequestBody List<DeptAssessmentDeclarationContent> deptAssessmentDeclarationContentList) {
  167. try {
  168. boolean b = deptAssessmentDeclarationContentService.saveOrUpdateBatch(deptAssessmentDeclarationContentList);
  169. if (b) {
  170. return R.ok().data(b);
  171. } else {
  172. return R.ok().data("人员已重复!");
  173. }
  174. } catch (CustomException e) {
  175. return R.customError(e.getMessage()).data("失败!");
  176. }
  177. }
  178. /**
  179. * 导入
  180. *
  181. * @param file 文件
  182. * @return 结果
  183. */
  184. @PostMapping(value = "/import")
  185. public R importData(@RequestParam("file") MultipartFile file) {
  186. if (!file.isEmpty()) {
  187. try {
  188. //获取原始的文件名
  189. String originalFilename = file.getOriginalFilename();
  190. //获取文件类型
  191. String fileType = originalFilename.substring(originalFilename.lastIndexOf(".") + 1, originalFilename.length());
  192. //默认从第一行开始读取
  193. int startRows = 1;
  194. //获取输入流
  195. InputStream is = file.getInputStream();
  196. List<DeptAssessmentDeclarationContent> deptAssessmentDeclarationContentList = new ArrayList<>();
  197. //Excel导入导出的单元类
  198. List<String[]> strings = ExcelUtil.readData(fileType, startRows, true, is);
  199. //遍历Excel表每一行的数据
  200. for (String[] str : strings) {
  201. DeptAssessmentDeclarationContent deptAssessmentDeclarationContent = new DeptAssessmentDeclarationContent();
  202. deptAssessmentDeclarationContent.setAssessmentDeclarationId(str[0]);
  203. deptAssessmentDeclarationContent.setEmployeeNo(str[1]);
  204. DeptAssessmentDeclaration deptAssessmentDeclaration = deptAssessmentDeclarationService.getById(str[0]);
  205. if (ObjectUtil.isNotNull(deptAssessmentDeclaration)){
  206. JSONObject jsonArr = userService.pageList(1, 500, deptAssessmentDeclaration.getDeptId(), "", "", "", "", "", request);
  207. JSONObject jsonArr1 = (JSONObject) jsonArr.get("data");
  208. JSONArray array = JSONUtil.parseArray(jsonArr1.get("records"));
  209. List<UserDTO> userList = JSONUtil.toList(array, UserDTO.class);
  210. UserDTO user = userList.stream().filter(item -> item.getNo().equals(str[2])).findFirst().orElse(null);
  211. if (ObjectUtil.isNotNull(user)){
  212. deptAssessmentDeclarationContent.setEmployeeId(user.getId());
  213. }
  214. }
  215. deptAssessmentDeclarationContent.setEmployeeName(str[2]);
  216. deptAssessmentDeclarationContent.setSerialNumber(Convert.toInt(str[3]));
  217. deptAssessmentDeclarationContent.setSuggestedValue(str[4]);
  218. deptAssessmentDeclarationContentList.add(deptAssessmentDeclarationContent);
  219. }
  220. boolean b = deptAssessmentDeclarationContentService.importDataList(deptAssessmentDeclarationContentList);
  221. if (b) {
  222. return R.ok().data(b);
  223. } else {
  224. return R.error().data("保存失败!");
  225. }
  226. } catch (Exception e) {
  227. log.error("错误", e);
  228. return R.customError(e.getMessage()).data("失败!");
  229. }
  230. }
  231. return R.customError("上传文件为空!");
  232. }
  233. /**
  234. * 修改状态
  235. *
  236. * @param id 主键
  237. * @param stage 状态
  238. * @return 结果
  239. */
  240. @PostMapping(value = "/targetStart")
  241. public R targetStart(@RequestParam(value = "id") String id,
  242. @RequestParam(value = "stage") String stage) {
  243. try {
  244. DeptAssessmentDeclaration deptAssessmentDeclaration = deptAssessmentDeclarationService.getById(id);
  245. deptAssessmentDeclaration.setStage(stage);
  246. boolean b = deptAssessmentDeclarationService.updateById(deptAssessmentDeclaration);
  247. if (b) {
  248. return R.ok().data(b);
  249. } else {
  250. return R.error().data("失败!");
  251. }
  252. } catch (CustomException e) {
  253. return R.customError(e.getMessage()).data("失败!");
  254. }
  255. }
  256. /**
  257. * 生成报表
  258. *
  259. * @param id 主键
  260. * @param response response
  261. * @throws Exception 异常
  262. */
  263. @GetMapping(value = "/generateReport/{id}")
  264. public void generateReport(@PathVariable("id") String id, HttpServletResponse response) throws Exception {
  265. response.setContentType("application/vnd.ms-excel;charset=UTF-8");
  266. response.setHeader("Content-disposition", "attachment; filename=".concat(URLEncoder.encode("公司本部部门及员工月度绩效考核结果申报表.xlsx", "UTF-8")));
  267. response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
  268. response.setHeader("Pragma", "no-cache");
  269. response.setDateHeader("Expires", 0);
  270. List<EmployeeDTO> employeeDTOList = new ArrayList<>();
  271. // 添加员工信息
  272. QueryWrapper<DeptAssessmentDeclarationContent> qw = new QueryWrapper<>();
  273. if (StringUtils.isNotEmpty(id)) {
  274. qw.lambda().like(DeptAssessmentDeclarationContent::getAssessmentDeclarationId, id);
  275. }
  276. List<DeptAssessmentDeclarationContent> deptAssessmentDeclarationContentList = deptAssessmentDeclarationContentService.list(qw);
  277. for (DeptAssessmentDeclarationContent deptAssessmentDeclarationContent : deptAssessmentDeclarationContentList) {
  278. EmployeeDTO employeeDTO = new EmployeeDTO();
  279. employeeDTO.setName(deptAssessmentDeclarationContent.getEmployeeName());
  280. employeeDTO.setCoefficient(deptAssessmentDeclarationContent.getSuggestedValue());
  281. employeeDTOList.add(employeeDTO);
  282. }
  283. DeptAssessmentDeclaration deptAssessmentDeclaration = deptAssessmentDeclarationService.getById(id);
  284. String departmentName = deptAssessmentDeclaration.getDeptName();
  285. String month = deptAssessmentDeclaration.getDeclarationMonth();
  286. String level = deptAssessmentDeclaration.getDeclarationLevel();
  287. String leader = deptAssessmentDeclaration.getDeptLeaderName();
  288. String declarationReason = deptAssessmentDeclaration.getDeclarationReason();
  289. ExcelUtils.createExcel(employeeDTOList, departmentName, month, level, leader, declarationReason, response.getOutputStream());
  290. }
  291. }