DataController.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477
  1. package com.bootdo.datas.controller;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.bootdo.common.annotation.Log;
  4. import com.bootdo.common.utils.*;
  5. import com.bootdo.datas.domain.GbDataExcelDO;
  6. import com.bootdo.datas.domain.GbDataExcelExpDO;
  7. import com.bootdo.datas.domain.GyDataExcelDO;
  8. import com.bootdo.datas.dto.GyDataImportDTO;
  9. import com.bootdo.datas.service.DataService;
  10. import com.bootdo.datas.service.GyDataService;
  11. import com.bootdo.datas.tools.ExcelUtils;
  12. import com.google.common.collect.Lists;
  13. import org.apache.shiro.authz.annotation.RequiresPermissions;
  14. import org.slf4j.Logger;
  15. import org.slf4j.LoggerFactory;
  16. import org.springframework.beans.BeanUtils;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.stereotype.Controller;
  19. import org.springframework.ui.Model;
  20. import org.springframework.util.ObjectUtils;
  21. import org.springframework.web.bind.annotation.*;
  22. import org.springframework.web.multipart.MultipartFile;
  23. import javax.servlet.http.HttpServletResponse;
  24. import java.util.ArrayList;
  25. import java.util.List;
  26. import java.util.Map;
  27. /**
  28. * 重要数据表
  29. *
  30. * @author admin
  31. * @email admin@163.com
  32. * @date 2022-03-06 10:37:54
  33. */
  34. @Controller
  35. @RequestMapping("/datas/data")
  36. public class DataController {
  37. private static Logger log = LoggerFactory.getLogger(DataController.class);
  38. @Autowired
  39. private GyDataService gyDataService;
  40. @GetMapping()
  41. @Log("访问数据目录")
  42. @RequiresPermissions("datas:data:data")
  43. String Data() {
  44. return "datas/data/data";
  45. }
  46. @GetMapping("dataInfo")
  47. @RequiresPermissions("datas:data:data")
  48. String dataInfo(String type, String status, String cityName, Model model) {
  49. log.info("dataLevel:" + type);
  50. log.info("dataStatus:" + status);
  51. log.info("cityName:" + cityName);
  52. model.addAttribute("dataLevel", type);
  53. model.addAttribute("dataStatus", status);
  54. model.addAttribute("cityName", cityName);
  55. return "datas/data/dataInfo";
  56. }
  57. @GetMapping("dataInfoNoPerms")
  58. String dataInfoNoPerms(String type, String status, String cityName, Model model) {
  59. log.info("dataLevel:" + type);
  60. log.info("dataStatus:" + status);
  61. log.info("cityName:" + cityName);
  62. model.addAttribute("dataLevel", type);
  63. model.addAttribute("dataStatus", status);
  64. model.addAttribute("cityName", cityName);
  65. return "datas/data/dataInfo";
  66. }
  67. @ResponseBody
  68. @GetMapping("/list")
  69. @RequiresPermissions("datas:data:data")
  70. public PageUtils list(@RequestParam Map<String, Object> params) {
  71. // 查询列表数据
  72. Query query = new Query(params);
  73. query.put("dataStatusArrs", Lists.newArrayList(3));
  74. query.put("auditStageMenu", "2");
  75. query.put("neqDataStatus", "4");
  76. List<GyDataImportDTO> dataList = gyDataService.list(query);
  77. int total = gyDataService.countTotal(query);
  78. PageUtils pageUtils = new PageUtils(dataList, total);
  79. return pageUtils;
  80. }
  81. @ResponseBody
  82. @GetMapping("/listNoPerms")
  83. public PageUtils listNoPerms(@RequestParam Map<String, Object> params) {
  84. // 查询列表数据
  85. Query query = new Query(params);
  86. query.put("dataStatusArrs", Lists.newArrayList(3));
  87. query.put("auditStageMenu", "2");
  88. query.put("neqDataStatus", "4");
  89. List<GyDataImportDTO> dataList = gyDataService.list(query);
  90. int total = gyDataService.countTotal(query);
  91. PageUtils pageUtils = new PageUtils(dataList, total);
  92. return pageUtils;
  93. }
  94. @GetMapping("/add")
  95. @RequiresPermissions("datas:data:add")
  96. String add() {
  97. return "datas/data/add";
  98. }
  99. /**
  100. * @Description: 跳转批量导入页面
  101. * @Author: wangp
  102. * @Date: 2022/3/21 10:06
  103. * @param
  104. * @Return: String
  105. */
  106. @GetMapping("/batchAdd")
  107. @RequiresPermissions("datas:data:data")
  108. String batchAdd() {
  109. return "datas/data/batchAdd";
  110. }
  111. @GetMapping("/edit/{id}")
  112. @RequiresPermissions("datas:data:edit")
  113. String edit(@PathVariable("id") Long id, Model model) {
  114. GyDataImportDTO data = gyDataService.get(id);
  115. model.addAttribute("data", data);
  116. return "datas/data/edit";
  117. }
  118. /**
  119. * 密文导入
  120. */
  121. @ResponseBody
  122. @PostMapping("/save")
  123. @RequiresPermissions("datas:data:add")
  124. public R save(@RequestParam("data_file") MultipartFile file) {
  125. try {
  126. String fileName = file.getOriginalFilename();
  127. log.info("fileName:" + fileName);
  128. String type = fileName.substring(fileName.lastIndexOf(".") + 1);
  129. // 根据excel类型取数据
  130. if ("xlsx".equals(type) || "xlsx".equals(type)) {
  131. // dataService.save(file);
  132. // 文件解密
  133. String decFlg = gyDataService.dec(file);
  134. log.info("decFlg:" + decFlg);
  135. if (StringUtils.isNotBlank(decFlg)) {
  136. String reault = gyDataService.cipherTextImport(decFlg, 2);
  137. if (!ObjectUtils.isEmpty(reault)) {
  138. return R.ok(fileName + ":" + reault);
  139. }
  140. } else {
  141. return R.error("文件解密异常!");
  142. }
  143. } else {
  144. return R.error("请使用excel导入!");
  145. }
  146. return R.ok("0");
  147. } catch (BDException e){
  148. return R.error(e.getMessage());
  149. } catch (Exception e) {
  150. e.printStackTrace();
  151. return R.error("导入失败");
  152. }
  153. }
  154. /**
  155. * 删除
  156. */
  157. @PostMapping("/remove")
  158. @ResponseBody
  159. @RequiresPermissions("datas:data:remove")
  160. public R remove(Long id) {
  161. //判断一下该条数据是否被风评系统使用
  162. int cnt = gyDataService.countAaAssData(id);
  163. if(cnt > 0){
  164. return R.error("该条数据已经被风评系统使用,不能删除!");
  165. }
  166. Long[] longArray = new Long[]{id};
  167. gyDataService.batchRemove(longArray);
  168. return R.ok();
  169. }
  170. /**
  171. * 删除
  172. */
  173. @PostMapping("/batchRemove")
  174. @ResponseBody
  175. @RequiresPermissions("datas:data:batchRemove")
  176. public R remove(@RequestParam("ids[]") Long[] ids) {
  177. gyDataService.batchRemove(ids);
  178. return R.ok();
  179. }
  180. /**
  181. * @Description: 列表页面 审核通过
  182. * @Author: wangp
  183. * @Date: 2022/3/6 16:35
  184. * @param id
  185. * @Return: R
  186. */
  187. @PostMapping("/verify")
  188. @ResponseBody
  189. @RequiresPermissions("datas:data:verify")
  190. public R verify(Long id) {
  191. log.info("审核通过 id:" + id);
  192. GyDataImportDTO data = new GyDataImportDTO();
  193. // 0:待审核 1:删除 2:已上报 3:通过审核 4:驳回
  194. data.setId(id);
  195. data.setDataStatus("3");
  196. gyDataService.updateStatus(data);
  197. return R.ok();
  198. }
  199. /**
  200. * @Description: 批量审核
  201. * @Author: wangp
  202. * @Date: 2022/3/6 16:35
  203. * @param ids
  204. * @Return: R
  205. */
  206. @PostMapping("/batchVerify")
  207. @ResponseBody
  208. @RequiresPermissions("datas:data:verify")
  209. public R batchVerify(@RequestParam("ids[]") Long[] ids) {
  210. log.info("批量审核通过 ids:" + ids.toString());
  211. List<String> failedDataNames = new ArrayList<>();
  212. List<GyDataImportDTO> dataImportDTOList = new ArrayList<>();
  213. for (Long id : ids) {
  214. log.info("审核通过 id:" + id);
  215. GyDataImportDTO data = new GyDataImportDTO();
  216. // 判断是否已审核过
  217. data = gyDataService.get(id);
  218. log.info("status:" + data.getDataStatus());
  219. if ("2".equals(data.getDataStatus()) || "5".equals(data.getDataStatus())
  220. || "6".equals(data.getDataStatus())) {
  221. // 0:待审核 1:删除 2:已上报 3:通过审核 4:驳回 5:联合审批 6:终审
  222. data.setId(id);
  223. data.setDataStatus("3");
  224. dataImportDTOList.add(data);
  225. } else {
  226. failedDataNames.add(data.getDataName());
  227. }
  228. }
  229. if (failedDataNames.size() > 0) {
  230. return R.error(String.join(",", failedDataNames) + ",审核失败");
  231. } else {
  232. if(dataImportDTOList.size() > 0){
  233. for(GyDataImportDTO importDTO : dataImportDTOList){
  234. gyDataService.updateStatus(importDTO);
  235. }
  236. }
  237. }
  238. return R.ok();
  239. }
  240. /**
  241. * @Description: 列表页面 驳回
  242. * @Author: wangp
  243. * @Date: 2022/3/6 16:35
  244. * @param id
  245. * @Return: R
  246. */
  247. @PostMapping("/rebut")
  248. @ResponseBody
  249. @RequiresPermissions("datas:data:rebut")
  250. public R rebut(Long id) {
  251. log.info("驳回 id:" + id);
  252. GyDataImportDTO data = new GyDataImportDTO();
  253. // 0:正常 1:删除 2:已上报 3:通过审核 4:驳回
  254. data.setId(id);
  255. data.setDataStatus("4");
  256. gyDataService.updateStatus(data);
  257. return R.ok();
  258. }
  259. /**
  260. * @Description: 批量审核
  261. * @Author: wangp
  262. * @Date: 2022/3/3 14:10
  263. * @param ids
  264. * @Return: R
  265. */
  266. @PostMapping("/batchRebut")
  267. @ResponseBody
  268. @RequiresPermissions("datas:data:rebut")
  269. public R batchRebut(@RequestParam("ids[]") Long[] ids) {
  270. log.info("审核通过 备案主键 ids:" + ids);
  271. List<String> failedDataNames = new ArrayList<>();
  272. List<GyDataImportDTO> dataImportDTOList = new ArrayList<>();
  273. for (Long id : ids) {
  274. log.info("审核通过 id:" + id);
  275. GyDataImportDTO data = new GyDataImportDTO();
  276. // 判断是否已审核过
  277. data = gyDataService.get(id);
  278. log.info("status:" + data.getDataStatus());
  279. if ("2".equals(data.getDataStatus()) || "5".equals(data.getDataStatus())
  280. || "6".equals(data.getDataStatus())) {
  281. // 0:待审核 1:删除 2:已上报 3:通过审核 4:驳回 5:联合审批 6:终审
  282. data.setId(id);
  283. data.setDataStatus("4");
  284. dataImportDTOList.add(data);
  285. } else {
  286. failedDataNames.add(data.getDataName());
  287. }
  288. }
  289. if (failedDataNames.size() > 0) {
  290. return R.error(String.join(",", failedDataNames) + ",驳回失败");
  291. } else {
  292. if(dataImportDTOList.size() > 0){
  293. for(GyDataImportDTO importDTO : dataImportDTOList){
  294. gyDataService.updateStatus(importDTO);
  295. }
  296. }
  297. }
  298. return R.ok();
  299. }
  300. /**
  301. * @Description: 批量导出
  302. * @Author: wangp
  303. * @Date: 2022/3/16 10:46
  304. * @param idValue
  305. * @Return: R
  306. */
  307. @GetMapping("/batchExports")
  308. public void batchExports(HttpServletResponse responses, String idValue) {
  309. log.info("批量导出 备案主键 idvalue:" + idValue);
  310. List<GyDataExcelDO> list = new ArrayList<>();
  311. JSONArray json = (JSONArray)JSONArray.parse(idValue);
  312. for (int i = 0; i < json.size(); i++) {
  313. String id = String.valueOf(json.get(i));
  314. log.info("批量导出 id:" + json.get(i));
  315. GyDataExcelDO data = new GyDataExcelDO();
  316. data = gyDataService.getDataExcel(Long.parseLong(id));
  317. data.setNo(i + 1); //序号
  318. list.add(data);
  319. }
  320. log.info("list size:" + list.size());
  321. // 导出xlsx操作
  322. try {
  323. ExcelUtils.export(responses, GyDataExcelDO.class, list, "数据备案导出信息");
  324. } catch (Exception e) {
  325. log.error("export error", e);
  326. }
  327. }
  328. /**
  329. * @Description: 国办导出
  330. */
  331. @GetMapping("/gbExports")
  332. @RequiresPermissions("datas:data:gbExport")
  333. public void gbExports(HttpServletResponse responses, String idValue) {
  334. log.info("批量导出 备案主键 idvalue:" + idValue);
  335. List<GbDataExcelExpDO> list = new ArrayList<>();
  336. JSONArray json = (JSONArray)JSONArray.parse(idValue);
  337. for (int i = 0; i < json.size(); i++) {
  338. String id = String.valueOf(json.get(i));
  339. log.info("批量导出 id:" + json.get(i));
  340. GbDataExcelDO dataDb = gyDataService.getGbDataExcel(Long.parseLong(id));
  341. GbDataExcelExpDO data = new GbDataExcelExpDO();
  342. BeanUtils.copyProperties(dataDb,data);
  343. data.setNo(i + 1); //序号
  344. list.add(data);
  345. }
  346. log.info("list size:" + list.size());
  347. // 导出xlsx操作
  348. try {
  349. ExcelUtils.export(responses, GbDataExcelExpDO.class, list, "国办导出信息");
  350. } catch (Exception e) {
  351. log.error("export error", e);
  352. }
  353. }
  354. /**
  355. * @Description: 加密导出
  356. */
  357. @GetMapping("/encryptExports")
  358. @RequiresPermissions("datas:data:encryptExports")
  359. public void encryptExports(HttpServletResponse responses, String idValue) throws Exception {
  360. log.info("批量导出 备案主键 idvalue:" + idValue);
  361. // 导出xlsx操作
  362. try {
  363. gyDataService.encryptExports(responses,idValue);
  364. } catch (Exception e) {
  365. log.error("export error", e);
  366. }
  367. }
  368. /**
  369. * @Description: 联合审批
  370. * @Author: wangp
  371. * @Date: 2022/3/6 16:35
  372. * @param ids
  373. * @Return: R
  374. */
  375. @PostMapping("/nextVerify/{deptId}")
  376. @ResponseBody
  377. @RequiresPermissions("datas:data:nextVerify")
  378. public R nextVerify(@RequestParam("ids[]") Long[] ids, @PathVariable("deptId") Long deptId) {
  379. log.info("联合审批通过 ids:" + ids.toString());
  380. log.info("联合审批通过 deptId:" + deptId);
  381. for (Long id : ids) {
  382. log.info("联合审批通过 id:" + id);
  383. GyDataImportDTO data = new GyDataImportDTO();
  384. // 判断是否已审核过
  385. data = gyDataService.get(id);
  386. log.info("status:" + data.getDataStatus());
  387. if ("2".equals(data.getDataStatus())) {
  388. // 0:待审核 1:删除 2:已上报 3:通过审核 4:驳回
  389. data.setId(id);
  390. data.setSendVerify("3");
  391. data.setNextVerifyDept(deptId);
  392. gyDataService.updateStatus(data);
  393. }
  394. }
  395. return R.ok();
  396. }
  397. /**
  398. * @Description: 跳转批量导入页面
  399. * @Author: wangp
  400. * @Date: 2022/3/21 10:06
  401. * @param
  402. * @Return: String
  403. */
  404. @GetMapping("/dataImport")
  405. @RequiresPermissions("datas:data:plainTextImport")
  406. String dataImport() {
  407. return "datas/data/dataImport";
  408. }
  409. /**
  410. * @Description: 明文导入
  411. * @Author: wangp
  412. * @Date: 2022/6/10 15:01
  413. * @param file
  414. * @Return: R
  415. */
  416. @ResponseBody
  417. @PostMapping("/plainTextImport")
  418. @RequiresPermissions("datas:data:plainTextImport")
  419. public R plainTextImport(@RequestParam("data_file") MultipartFile file) {
  420. try {
  421. String fileName = file.getOriginalFilename();
  422. log.info("fileName:" + fileName);
  423. String type = fileName.substring(fileName.lastIndexOf(".") + 1);
  424. // 根据excel类型取数据
  425. if ("xlsx".equals(type) || "xlsx".equals(type)) {
  426. String reault = gyDataService.plainTextImport(file, 2);
  427. if (!ObjectUtils.isEmpty(reault)) {
  428. return R.ok(fileName + ":" + reault);
  429. }
  430. } else {
  431. return R.error("请使用excel导入!");
  432. }
  433. return R.ok("0");
  434. } catch (BDException e){
  435. return R.error(e.getMessage());
  436. } catch (Exception e) {
  437. e.printStackTrace();
  438. return R.error("导入失败");
  439. }
  440. }
  441. }