GyDataImportController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  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.GyDataExcelDO;
  6. import com.bootdo.datas.domain.GyDataUnitDO;
  7. import com.bootdo.datas.dto.GyDataImportDTO;
  8. import com.bootdo.datas.service.GyDataService;
  9. import com.bootdo.datas.service.GyDataUnitService;
  10. import com.bootdo.datas.tools.ExcelUtils;
  11. import com.bootdo.datas.tools.gm.FileCryptTool;
  12. import com.bootdo.system.domain.UserDO;
  13. import com.google.common.collect.Lists;
  14. import org.apache.shiro.authz.annotation.RequiresPermissions;
  15. import org.slf4j.Logger;
  16. import org.slf4j.LoggerFactory;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.stereotype.Controller;
  19. import org.springframework.transaction.annotation.Transactional;
  20. import org.springframework.ui.Model;
  21. import org.springframework.util.ObjectUtils;
  22. import org.springframework.web.bind.annotation.*;
  23. import org.springframework.web.multipart.MultipartFile;
  24. import javax.servlet.http.HttpServletResponse;
  25. import java.util.ArrayList;
  26. import java.util.Date;
  27. import java.util.List;
  28. import java.util.Map;
  29. @Controller
  30. @RequestMapping("/datas/gyDataImport")
  31. public class GyDataImportController {
  32. private static Logger log = LoggerFactory.getLogger(GyDataImportController.class);
  33. @Autowired
  34. private GyDataService gyDataService;
  35. @Autowired
  36. private GyDataUnitService gyDataUnitService;
  37. @GetMapping()
  38. @Log("访问数据导入")
  39. @RequiresPermissions("datas:gyDataImport:data")
  40. String Data() {
  41. return "datas/gyDataImport/data";
  42. }
  43. @GetMapping("dataInfo")
  44. @RequiresPermissions("datas:gyDataImport:data")
  45. String dataInfo(String type, Model model) {
  46. log.info("dataLevel:" + type);
  47. model.addAttribute("dataLevel", type);
  48. return "datas/gyDataImport/dataInfo";
  49. }
  50. @ResponseBody
  51. @GetMapping("/list")
  52. @RequiresPermissions("datas:gyDataImport:data")
  53. public PageUtils list(@RequestParam Map<String, Object> params) {
  54. // 查询列表数据
  55. Query query = new Query(params);
  56. String dataStatus = (String) params.get("dataStatus");
  57. if(StringUtils.isNotEmpty(dataStatus)) {
  58. query.put("dataStatusArrs", Lists.newArrayList((dataStatus)));
  59. }
  60. query.put("neqDataStatus", "4");
  61. List<GyDataImportDTO> dataList = gyDataService.list(query);
  62. int total = gyDataService.countTotal(query);
  63. PageUtils pageUtils = new PageUtils(dataList, total);
  64. return pageUtils;
  65. }
  66. @GetMapping("/add")
  67. @RequiresPermissions("datas:gyDataImport:add")
  68. String add() {
  69. return "datas/gyDataImport/add";
  70. }
  71. @GetMapping("/edit/{id}")
  72. @RequiresPermissions("datas:gyDataImport:edit")
  73. String edit(@PathVariable("id") Long id, Model model) {
  74. GyDataImportDTO data = gyDataService.get(id);
  75. model.addAttribute("data", data);
  76. return "datas/gyDataImport/edit";
  77. }
  78. /**
  79. * @Description: 跳转批量导入页面
  80. */
  81. @GetMapping("/batchAdd")
  82. @RequiresPermissions("datas:gyDataImport:data")
  83. String batchAdd() {
  84. return "datas/gyDataImport/batchAdd";
  85. }
  86. /**
  87. * 密文导入
  88. */
  89. @ResponseBody
  90. @PostMapping("/save")
  91. @RequiresPermissions("datas:gyDataImport:add")
  92. public R save(@RequestParam("data_file") MultipartFile file) {
  93. try {
  94. String fileName = file.getOriginalFilename();
  95. log.info("fileName:" + fileName);
  96. String type = fileName.substring(fileName.lastIndexOf(".") + 1);
  97. // 根据excel类型取数据
  98. if ("xlsx".equals(type) || "xlsx".equals(type)) {
  99. // 文件解密
  100. String decFlg = gyDataService.dec(file);
  101. log.info("decFlg:" + decFlg);
  102. if (StringUtils.isNotBlank(decFlg)) {
  103. try {
  104. String reault = gyDataService.cipherTextImport(decFlg, 1);
  105. if (!ObjectUtils.isEmpty(reault)) {
  106. return R.ok(fileName + ":" + reault);
  107. }
  108. } catch (Exception e) {
  109. log.info("Exception:", e);
  110. return R.error("文件异常!");
  111. }
  112. } else {
  113. return R.error("文件解密异常!");
  114. }
  115. } else {
  116. return R.error("请使用excel导入!");
  117. }
  118. return R.ok("0");
  119. } catch (BDException e){
  120. return R.error(e.getMessage());
  121. } catch (Exception e) {
  122. e.printStackTrace();
  123. return R.error("导入失败");
  124. }
  125. }
  126. /**
  127. * 删除
  128. */
  129. @PostMapping("/remove")
  130. @ResponseBody
  131. @RequiresPermissions("datas:gyDataImport:remove")
  132. public R remove(Long id) {
  133. Long[] longArray = new Long[]{id};
  134. gyDataService.batchRemove(longArray);
  135. return R.ok();
  136. }
  137. /**
  138. * 删除
  139. */
  140. @PostMapping("/batchRemove")
  141. @ResponseBody
  142. @RequiresPermissions("datas:gyDataImport:batchRemove")
  143. public R remove(@RequestParam("ids[]") Long[] ids) {
  144. gyDataService.batchRemove(ids);
  145. return R.ok();
  146. }
  147. /**
  148. * @Description: 批量导出
  149. */
  150. @GetMapping("/batchExports")
  151. @RequiresPermissions("datas:gyDataImport:export")
  152. public void batchExports(HttpServletResponse responses, String idValue) {
  153. log.info("批量导出 备案主键 idvalue:" + idValue);
  154. List<GyDataExcelDO> list = new ArrayList<>();
  155. JSONArray json = (JSONArray)JSONArray.parse(idValue);
  156. for (int i = 0; i < json.size(); i++) {
  157. String id = String.valueOf(json.get(i));
  158. log.info("批量导出 id:" + json.get(i));
  159. GyDataExcelDO data = new GyDataExcelDO();
  160. data = gyDataService.getDataExcel(Long.parseLong(id));
  161. data.setNo(i + 1); //序号
  162. list.add(data);
  163. }
  164. log.info("list size:" + list.size());
  165. // 导出xlsx操作
  166. try {
  167. ExcelUtils.export(responses, GyDataExcelDO.class, list, "数据备案导出信息");
  168. } catch (Exception e) {
  169. log.error("export error", e);
  170. }
  171. }
  172. /**
  173. * @Description: 加密导出
  174. */
  175. @GetMapping("/encryptExports")
  176. @RequiresPermissions("datas:gyDataImport:encryptExports")
  177. public void encryptExports(HttpServletResponse responses, String idValue) throws Exception {
  178. log.info("批量导出 备案主键 idvalue:" + idValue);
  179. // 导出xlsx操作
  180. try {
  181. gyDataService.encryptExports(responses,idValue);
  182. } catch (Exception e) {
  183. log.error("export error", e);
  184. }
  185. }
  186. /**
  187. * @Description: 送审
  188. */
  189. @Transactional
  190. @PostMapping("/sendVerify")
  191. @ResponseBody
  192. @RequiresPermissions("datas:gyDataImport:sendVerify")
  193. public R sendVerify(@RequestParam("ids[]") Long[] ids, @RequestParam("roleId") Long roleId) {
  194. UserDO currUser = ShiroUtils.getUser();
  195. log.info("送审 ids:" + ids.toString());
  196. List<GyDataUnitDO> gyDataUnitDOList = new ArrayList<>();
  197. for (Long id : ids) {
  198. log.info("送审 id:" + id);
  199. GyDataImportDTO data = new GyDataImportDTO();
  200. // 判断是否已审核过
  201. data = gyDataService.get(id);
  202. // 送审状态 0 未送审 1 送审 2 专家审核
  203. log.info("status:" + data.getSendVerify());
  204. if ("0".equals(data.getSendVerify())) {
  205. data.setId(id);
  206. data.setSendVerify("1");// 0 未送审 1 送审 2 专家审核
  207. // 0:待审核 1:删除 2:审核中 3:通过审核 4:驳回 5:联合审批 6:终审
  208. data.setDataStatus("2");
  209. data.setRoleId(roleId);
  210. gyDataService.updateStatus(data,"");
  211. if(gyDataUnitService.getByDataId(data.getId()) == null){
  212. GyDataUnitDO gyDataUnitDO = new GyDataUnitDO();
  213. gyDataUnitDO.setDataId(data.getId());
  214. gyDataUnitDO.setReporterUnit(data.getReporterUnit());
  215. gyDataUnitDO.setCreditCode(data.getCreditCode());
  216. gyDataUnitDO.setSupervisoryOrg(data.getSupervisoryOrg());
  217. gyDataUnitDO.setUnitCharacter(data.getUnitCharacter());
  218. gyDataUnitDO.setIndustryTypeOne(data.getIndustryTypeOne());
  219. gyDataUnitDO.setIndustryTypeTwo(data.getIndustryTypeTwo());
  220. gyDataUnitDO.setUnitProvince(data.getUnitProvince());
  221. gyDataUnitDO.setUnitCity(data.getUnitCity());
  222. gyDataUnitDO.setUnitMan(data.getUnitMan());
  223. gyDataUnitDO.setUnitOffice(data.getUnitOffice());
  224. gyDataUnitDO.setDataSecurityMan(data.getDataSecurityMan());
  225. gyDataUnitDO.setDataSecurityOffice(data.getDataSecurityOffice());
  226. gyDataUnitDO.setDataSecurityWay(data.getDataSecurityWay());
  227. gyDataUnitDO.setCreateUserId(currUser.getUserId());
  228. gyDataUnitDO.setUpdateUserId(currUser.getUserId());
  229. gyDataUnitDO.setCreateTime(new Date());
  230. gyDataUnitDO.setUpdateTime(new Date());
  231. gyDataUnitDOList.add(gyDataUnitDO);
  232. }
  233. }
  234. }
  235. if(!gyDataUnitDOList.isEmpty()){
  236. gyDataUnitService.batchSave(gyDataUnitDOList);
  237. }
  238. return R.ok();
  239. }
  240. /**
  241. * @Description: 跳转明文导入页面
  242. */
  243. @GetMapping("/dataImport")
  244. @RequiresPermissions("datas:gyDataImport:plainTextImport")
  245. String dataImport() {
  246. return "datas/gyDataImport/dataImport";
  247. }
  248. /**
  249. * @Description: 明文导入
  250. */
  251. @ResponseBody
  252. @PostMapping("/plainTextImport")
  253. @RequiresPermissions("datas:gyDataImport:plainTextImport")
  254. public R plainTextImport(@RequestParam("data_file") MultipartFile file) {
  255. try {
  256. String fileName = file.getOriginalFilename();
  257. log.info("fileName:" + fileName);
  258. String type = fileName.substring(fileName.lastIndexOf(".") + 1);
  259. // 根据excel类型取数据
  260. if ("xlsx".equals(type) || "xlsx".equals(type)) {
  261. String reault = gyDataService.plainTextImport(file, 1);
  262. if (!ObjectUtils.isEmpty(reault)) {
  263. return R.ok(fileName + ":" + reault);
  264. }
  265. } else {
  266. return R.error("请使用excel导入!");
  267. }
  268. return R.ok("0");
  269. } catch (BDException e){
  270. return R.error(e.getMessage());
  271. } catch (Exception e) {
  272. log.error(e.toString());
  273. return R.error("导入失败");
  274. }
  275. }
  276. public static void main(String[] args) {
  277. FileCryptTool.encryptFile("F:/dev-dys/sm2/sm2_client_enc_cert.crt", "F:/dev-dys/res/测试导入.xlsx", "F:/dev-dys/res/enc-测试导入.xlsx");
  278. }
  279. }