SalesDataUploadController.java 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. package com.kmall.admin.controller;
  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.ByteArrayInputStream;
  5. import java.net.InetAddress;
  6. import java.net.URLEncoder;
  7. import java.text.SimpleDateFormat;
  8. import java.util.*;
  9. import java.util.zip.ZipEntry;
  10. import java.util.zip.ZipOutputStream;
  11. import com.kmall.admin.entity.SalesDataDownloadEntity;
  12. import com.kmall.admin.entity.SalesDataUploadEntity;
  13. import com.kmall.admin.fromcomm.entity.SysUserEntity;
  14. import com.kmall.admin.service.SalesDataUploadService;
  15. import com.kmall.admin.utils.ParamUtils;
  16. import com.kmall.admin.utils.ShiroUtils;
  17. import com.kmall.common.fileserver.util.FileManager;
  18. import com.kmall.common.utils.*;
  19. import org.apache.shiro.authz.annotation.RequiresPermissions;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.http.ResponseEntity;
  22. import org.springframework.stereotype.Controller;
  23. import org.springframework.web.bind.annotation.*;
  24. import org.springframework.web.multipart.MultipartFile;
  25. import javax.servlet.http.HttpServletResponse;
  26. /**
  27. * 销售数据上传表Controller
  28. *
  29. * @author emato
  30. * @email admin@qhdswl.com
  31. * @date 2020-11-16 14:11:53
  32. */
  33. @Controller
  34. @RequestMapping("salesdataupload")
  35. public class SalesDataUploadController {
  36. @Autowired
  37. private SalesDataUploadService salesDataUploadService;
  38. /**
  39. * 查看列表
  40. */
  41. @RequestMapping("/list")
  42. // @RequiresPermissions("salesdataupload:list")
  43. @ResponseBody
  44. public R list(@RequestParam Map<String, Object> params) {
  45. ParamUtils.setQueryPowerByRoleType(params, "shopSN", "merchSN", "thirdMerchSN");
  46. //查询列表数据
  47. Query query = new Query(params);
  48. List<SalesDataUploadEntity> salesDataUploadList = salesDataUploadService.queryList(query);
  49. int total = salesDataUploadService.queryTotal(query);
  50. PageUtils pageUtil = new PageUtils(salesDataUploadList, total, query.getLimit(), query.getPage());
  51. return R.ok().put("page", pageUtil);
  52. }
  53. /**
  54. * 查看信息
  55. */
  56. @RequestMapping("/info/{fileId}")
  57. @RequiresPermissions("salesdataupload:info")
  58. @ResponseBody
  59. public R info(@PathVariable("fileId") Integer fileId) {
  60. SalesDataUploadEntity salesDataUpload = salesDataUploadService.queryObject(fileId);
  61. return R.ok().put("salesDataUpload", salesDataUpload);
  62. }
  63. /**
  64. * 保存
  65. */
  66. @RequestMapping("/save")
  67. // @RequiresPermissions("salesdataupload:save")
  68. @ResponseBody
  69. public R save(@RequestBody SalesDataUploadEntity salesDataUpload) {
  70. salesDataUploadService.save(salesDataUpload);
  71. return R.ok();
  72. }
  73. /**
  74. * 修改
  75. */
  76. @RequestMapping("/update")
  77. @RequiresPermissions("salesdataupload:update")
  78. @ResponseBody
  79. public R update(@RequestBody SalesDataUploadEntity salesDataUpload) {
  80. salesDataUploadService.update(salesDataUpload);
  81. return R.ok();
  82. }
  83. /**
  84. * 删除
  85. */
  86. @RequestMapping("/delete")
  87. // @RequiresPermissions("salesdataupload:delete")
  88. @ResponseBody
  89. public R delete(@RequestBody Integer[] fileIds) {
  90. salesDataUploadService.deleteBatch(fileIds);
  91. return R.ok();
  92. }
  93. /**
  94. * 查看所有列表
  95. */
  96. @RequestMapping("/queryAll")
  97. @ResponseBody
  98. public R queryAll(@RequestParam Map<String, Object> params) {
  99. List<SalesDataUploadEntity> list = salesDataUploadService.queryList(params);
  100. return R.ok().put("list", list);
  101. }
  102. /**
  103. * 上传文件
  104. * @param file
  105. * @return
  106. * @throws Exception
  107. */
  108. @RequestMapping("/upload")
  109. @ResponseBody
  110. public R upload(@RequestParam("file") MultipartFile file,@RequestParam Map<String, Object> params) throws Exception {
  111. if (file.isEmpty()) {
  112. throw new RRException("上传文件不能为空");
  113. }
  114. //上传文件
  115. String url = FileManager.upload(file);
  116. SalesDataUploadEntity salesDataUploadEntity = new SalesDataUploadEntity();
  117. salesDataUploadEntity.setFileName(file.getOriginalFilename());
  118. salesDataUploadEntity.setFileType(file.getContentType());
  119. salesDataUploadEntity.setUploadAddress(url);
  120. salesDataUploadEntity.setCreaterSn(ShiroUtils.getUserId().intValue());
  121. salesDataUploadEntity.setCreaterTime(new Date());
  122. salesDataUploadEntity.setMerchSN((String) params.get("merchSN"));
  123. salesDataUploadEntity.setThirdMerchSN((String) params.get("thirdMerchSN"));
  124. salesDataUploadEntity.setShopSN((String) params.get("shopSN"));
  125. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  126. salesDataUploadEntity.setBillTime(sdf.parse((String) params.get("billTime")));
  127. salesDataUploadEntity.setCheckTime(sdf.parse((String) params.get("checkTime")));
  128. salesDataUploadService.save(salesDataUploadEntity);
  129. R r = R.ok();
  130. r.put("url", url);
  131. r.put("salesDataUpload", salesDataUploadEntity);
  132. return r;
  133. }
  134. /**
  135. * 文件下载
  136. * @param filePath
  137. * @return
  138. * @throws Exception
  139. */
  140. @RequestMapping("/download")
  141. public ResponseEntity<byte[]> download(
  142. HttpServletResponse response,
  143. @RequestParam("filePath") String filePath, @RequestParam("fileName") String fileName, @RequestParam("fileId") String fileId) throws Exception {
  144. if(StringUtils.isNotEmpty(filePath)){
  145. Map<String, byte[]> files = new HashMap<String, byte[]>();
  146. String[] filePaths = filePath.split(",");
  147. String[] fileNames = fileName.split(",");
  148. String[] fileIds = fileId.split(",");
  149. for(int i = 0 ; i < filePaths.length ; i++){
  150. SalesDataDownloadEntity salesDataDownloadEntity = new SalesDataDownloadEntity();
  151. salesDataDownloadEntity.setFileId(Integer.valueOf(fileIds[i]));
  152. salesDataDownloadEntity.setDownloadSn(ShiroUtils.getUserId().intValue());
  153. salesDataDownloadEntity.setDownloadTime(new Date());
  154. InetAddress localHost = InetAddress.getLocalHost();
  155. salesDataDownloadEntity.setDownloadIP(localHost.getHostAddress());
  156. salesDataUploadService.saveSalesDownload(salesDataDownloadEntity);
  157. ResponseEntity<byte[]> download = FileManager.download(filePaths[i], fileNames[i].substring(0, fileNames[i].lastIndexOf(".")));
  158. byte[] msg = download.getBody();
  159. files.put(fileNames[i],msg);
  160. }
  161. downloadBatchByFile(response,files,"CW保税+新零售销售额统计.zip");
  162. }
  163. return null;
  164. }
  165. /**
  166. * 根据文件,进行压缩,批量下载
  167. * @param response
  168. * @param files
  169. * @throws Exception
  170. */
  171. public void downloadBatchByFile(HttpServletResponse response, Map<String, byte[]> files, String zipName){
  172. try{
  173. response.setContentType("application/x-msdownload");
  174. response.setHeader("content-disposition", "attachment;filename="+ URLEncoder.encode(zipName, "utf-8"));
  175. ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());
  176. BufferedOutputStream bos = new BufferedOutputStream(zos);
  177. for(Map.Entry<String, byte[]> entry : files.entrySet()){
  178. String fileName = entry.getKey(); //每个zip文件名
  179. byte[] file = entry.getValue(); //这个zip文件的字节
  180. BufferedInputStream bis = new BufferedInputStream(new ByteArrayInputStream(file));
  181. zos.putNextEntry(new ZipEntry(fileName));
  182. int len = 0;
  183. byte[] buf = new byte[10 * 1024];
  184. while( (len=bis.read(buf, 0, buf.length)) != -1){
  185. bos.write(buf, 0, len);
  186. }
  187. bis.close();
  188. bos.flush();
  189. }
  190. bos.close();
  191. }catch(Exception e){
  192. e.printStackTrace();
  193. }
  194. }
  195. }