From 940cab832331ab054d2a4c74f13aacc6847dd79d Mon Sep 17 00:00:00 2001 From: zhangchao <zc857179121@qq.com> Date: 星期五, 08 十一月 2024 08:43:26 +0800 Subject: [PATCH] Merge branch 'phyzwms2' into phyzasrs-erp --- src/main/java/com/zy/asrs/controller/ReportDownloadController.java | 235 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 235 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/ReportDownloadController.java b/src/main/java/com/zy/asrs/controller/ReportDownloadController.java new file mode 100644 index 0000000..e6cf1d5 --- /dev/null +++ b/src/main/java/com/zy/asrs/controller/ReportDownloadController.java @@ -0,0 +1,235 @@ +package com.zy.asrs.controller; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.core.common.Cools; +import com.core.common.DateUtils; +import com.core.common.R; +import com.zy.asrs.entity.*; +import com.zy.asrs.mapper.ReportQueryMapper; +import com.zy.asrs.service.AgvWrkMastLogService; +import com.zy.common.web.BaseController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import javax.xml.soap.SAAJResult; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/report/download") +public class ReportDownloadController extends BaseController { + + + @Autowired + private ReportQueryMapper reportQueryMapper; + + + @Autowired + private AgvWrkMastLogService wrkMastLogService; + + + /** + * 鏂囦欢涓嬭浇骞朵笖澶辫触鐨勬椂鍊欒繑鍥瀓son锛堥粯璁ゅけ璐ヤ簡浼氳繑鍥炰竴涓湁閮ㄥ垎鏁版嵁鐨凟xcel锛� + * 鏃ュ叆搴撴眹鎬绘煡璇� + * + * @since 2.1.1 + */ + @GetMapping("/countIn") + public void download1(HttpServletResponse response, @RequestParam Map<String, Object> param) throws IOException { + try { + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴 + String fileName = URLEncoder.encode("鏃ュ叆搴撴眹鎬�", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + // 杩欓噷闇�瑕佽缃笉鍏抽棴娴� + EasyExcel.write(response.getOutputStream(), ViewWorkCountInView.class).autoCloseStream(Boolean.FALSE).sheet("sheet1").doWrite(getInData(param)); + } catch (Exception e) { + // 閲嶇疆response + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + Map<String, String> map = new HashMap<>(); + map.put("status", "failure"); + map.put("message", "涓嬭浇鏂囦欢澶辫触" + e.getMessage()); + response.getWriter().println(JSON.toJSONString(map)); + } + } + + + private List<ViewWorkCountInView> getInData(Map<String, Object> param) { + String startTime = "1970.1.2"; + String endTime = "2099.1.2"; + if (!Cools.isEmpty(param.get("query_date"))) { + String queryDate = (String) param.get("query_date"); + String[] split = queryDate.split(" - "); + startTime = split[0].split(" ")[0].replace("-", "."); + endTime = split[1].split(" ")[0].replace("-", "."); + } + List<ViewWorkCountInView> allCountIn = reportQueryMapper.selectWorkCountIn(null, null, (String) param.get("matnr"), startTime, endTime); + return allCountIn; + } + + /** + * 鏂囦欢涓嬭浇骞朵笖澶辫触鐨勬椂鍊欒繑鍥瀓son锛堥粯璁ゅけ璐ヤ簡浼氳繑鍥炰竴涓湁閮ㄥ垎鏁版嵁鐨凟xcel锛� + * 鏃ュ叆搴撴眹鎬绘煡璇� + * + * @since 2.1.1 + */ + @RequestMapping("/countOut") + public void download2(HttpServletResponse response, @RequestParam Map<String, Object> param) throws IOException { + try { + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴 + String fileName = URLEncoder.encode("鏃ュ嚭搴撴眹鎬�", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + List<ViewWorkCountInView> outData = getOutData(param); + // 杩欓噷闇�瑕佽缃笉鍏抽棴娴� + EasyExcel.write(response.getOutputStream(), ViewWorkCountInView.class).autoCloseStream(Boolean.FALSE).sheet("sheet1").doWrite(outData); + } catch (Exception e) { + // 閲嶇疆response + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + Map<String, String> map = new HashMap<>(); + map.put("status", "failure"); + map.put("message", "涓嬭浇鏂囦欢澶辫触" + e.getMessage()); + response.getWriter().println(JSON.toJSONString(map)); + } + } + + + private List<ViewWorkCountInView> getOutData(Map<String, Object> param) { + String startTime = "1970.1.2"; + String endTime = "2099.1.2"; + if (!Cools.isEmpty(param.get("query_date"))) { + String queryDate = (String) param.get("query_date"); + String[] split = queryDate.split(" - "); + startTime = split[0].split(" ")[0].replace("-", "."); + endTime = split[1].split(" ")[0].replace("-", "."); + } + List<ViewWorkCountInView> allCountIn = reportQueryMapper.selectWorkCountOut(null,null, (String) param.get("matnr"), startTime, endTime); + return allCountIn; + } + + + /** + * 鏂囦欢涓嬭浇骞朵笖澶辫触鐨勬椂鍊欒繑鍥瀓son锛堥粯璁ゅけ璐ヤ簡浼氳繑鍥炰竴涓湁閮ㄥ垎鏁版嵁鐨凟xcel锛� + * 鏃ュ叆搴撴眹鎬绘煡璇� + * + * @since 2.1.1 + */ + @RequestMapping("/wrkMastLog") + public void wrkMastLog(HttpServletResponse response, @RequestParam Map<String, Object> param) throws IOException { + try { + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴 + String fileName = URLEncoder.encode("宸ヤ綔妗g淮鎶ゆ棩蹇�", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + // 杩欓噷闇�瑕佽缃笉鍏抽棴娴� + EasyExcel.write(response.getOutputStream(), ViewWorkCountInView.class).autoCloseStream(Boolean.FALSE).sheet("sheet1").doWrite(getWrkMastLogData(param)); + } catch (Exception e) { + // 閲嶇疆response + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + Map<String, String> map = new HashMap<>(); + map.put("status", "failure"); + map.put("message", "涓嬭浇鏂囦欢澶辫触" + e.getMessage()); + response.getWriter().println(JSON.toJSONString(map)); + } + } + + + private List<AgvWrkMastLog> getWrkMastLogData(Map<String, Object> param) { + excludeTrash(param); + EntityWrapper<AgvWrkMastLog> wrapper = new EntityWrapper<>(); + convert(param, wrapper); + return wrkMastLogService.selectList(wrapper); + } + + private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper) { + for (Map.Entry<String, Object> entry : map.entrySet()) { + String val = String.valueOf(entry.getValue()); + if (val.contains(RANGE_TIME_LINK)) { + String[] dates = val.split(RANGE_TIME_LINK); + wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); + wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); + } else { + if (entry.getKey().equals("manu_type")) { + wrapper.like(entry.getKey(), val); + } else { + wrapper.eq(entry.getKey(), val); + } + } + } + } + + + /** + * 鏂囦欢涓嬭浇骞朵笖澶辫触鐨勬椂鍊欒繑鍥瀓son锛堥粯璁ゅけ璐ヤ簡浼氳繑鍥炰竴涓湁閮ㄥ垎鏁版嵁鐨凟xcel锛� + * 鏃ュ嚭搴撴槑缁嗙粺璁� + * + * @since 2.1.1 + */ + @RequestMapping("/out") + public void out(HttpServletResponse response, @RequestParam(required = false) ViewWorkInBean bean) throws IOException { + try { + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴 + String fileName = URLEncoder.encode("鏃ュ嚭搴撴槑缁嗙粺璁�", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + List<ViewWorkInBean> list = reportQueryMapper.queryViewWorkOutList(bean); + // 杩欓噷闇�瑕佽缃笉鍏抽棴娴� + EasyExcel.write(response.getOutputStream(), ViewWorkInBean.class).autoCloseStream(Boolean.FALSE).sheet("sheet1").doWrite(list); + } catch (Exception e) { + // 閲嶇疆response + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + Map<String, String> map = new HashMap<>(); + map.put("status", "failure"); + map.put("message", "涓嬭浇鏂囦欢澶辫触" + e.getMessage()); + response.getWriter().println(JSON.toJSONString(map)); + } + } + + /** + * 鏂囦欢涓嬭浇骞朵笖澶辫触鐨勬椂鍊欒繑鍥瀓son锛堥粯璁ゅけ璐ヤ簡浼氳繑鍥炰竴涓湁閮ㄥ垎鏁版嵁鐨凟xcel锛� + * 鏃ュ叆搴撴槑缁嗙粺璁� + * + * @since 2.1.1 + */ + @RequestMapping("/in") + public void in(HttpServletResponse response, @RequestParam(required = false) ViewWorkInBean bean) throws IOException { + try { + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴 + String fileName = URLEncoder.encode("鏃ュ叆搴撴槑缁嗙粺璁�", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + List<ViewWorkInBean> list = reportQueryMapper.queryViewWorkInList(bean); + // 杩欓噷闇�瑕佽缃笉鍏抽棴娴� + EasyExcel.write(response.getOutputStream(), ViewWorkInBean.class).autoCloseStream(Boolean.FALSE).sheet("sheet1").doWrite(list); + } catch (Exception e) { + // 閲嶇疆response + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + Map<String, String> map = new HashMap<>(); + map.put("status", "failure"); + map.put("message", "涓嬭浇鏂囦欢澶辫触" + e.getMessage()); + response.getWriter().println(JSON.toJSONString(map)); + } + } +} -- Gitblit v1.9.1