From ed7d7e411534f3bcc649f681aa8c529672b31e89 Mon Sep 17 00:00:00 2001 From: cy <1664593601@qq.com> Date: 星期五, 01 十二月 2023 17:43:42 +0800 Subject: [PATCH] feat: 报废 --- consum-base/src/main/java/com/consum/base/controller/DepFormScrappedController.java | 180 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 179 insertions(+), 1 deletions(-) diff --git a/consum-base/src/main/java/com/consum/base/controller/DepFormScrappedController.java b/consum-base/src/main/java/com/consum/base/controller/DepFormScrappedController.java index 7d75df1..fe0d734 100644 --- a/consum-base/src/main/java/com/consum/base/controller/DepFormScrappedController.java +++ b/consum-base/src/main/java/com/consum/base/controller/DepFormScrappedController.java @@ -1,22 +1,41 @@ package com.consum.base.controller; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.TemplateExportParams; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ReflectUtil; import com.consum.base.BaseController; import com.consum.base.core.utils.CommonUtil; import com.consum.base.pojo.LDeptFormScrappedParam; import com.consum.base.pojo.query.LDeptFormScrappedQry; import com.consum.base.service.DepFormScrappedServiceImpl; import com.consum.model.po.FinSysTenantUser; +import com.walker.db.page.GenericPager; +import com.walker.infrastructure.utils.CollectionUtils; +import com.walker.infrastructure.utils.DateUtils; import com.walker.web.ResponseValue; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * @ClassName DepFormScrappedController @@ -65,6 +84,165 @@ return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�"); } param.setAgencyId(sysInfo.getTenantId()); - return ResponseValue.success(depFormScrappedService.queryList(param)); + + GenericPager<Map<String, Object>> mapGenericPager = depFormScrappedService.queryList(param); + // 澶勭悊涓�涓嬫暟鎹� + List<Map<String, Object>> datas = mapGenericPager.getDatas(); + if (CollectionUtils.isEmpty(datas)) { + return ResponseValue.success(mapGenericPager); + } + List<Map<String, Object>> maps = mergeData(datas); + ReflectUtil.setFieldValue(mapGenericPager, "datas", maps); + return ResponseValue.success(mapGenericPager); + } + + private static List<Map<String, Object>> mergeData(List<Map<String, Object>> dataList) { + Map<Long, Map<String, Object>> mergedDataMap = new HashMap<>(); + // 閬嶅巻鍘熷鏁版嵁杩涜鍚堝苟 + for (Map<String, Object> data : dataList) { + Long id = Convert.toLong(data.get("id")); + HashMap hashMap = new HashMap(); + hashMap.put("baseGoodsTemplateId", data.get("operatorName")); + hashMap.put("baseGoodsTemplateName", data.get("baseGoodsTemplateName")); + hashMap.put("totalCount", data.get("totalCount")); + hashMap.put("unit", data.get("unit")); + + if (!mergedDataMap.containsKey(id)) { + // 濡傛灉id鍦ㄥ悎骞舵暟鎹腑涓嶅瓨鍦紝鍒欐柊澧炰竴鏉¤褰� + Map<String, Object> mergedMap = new HashMap<>(); + mergedMap.put("departmentName", data.get("departmentName")); + mergedMap.put("dealTime", data.get("dealTime")); + mergedMap.put("businessFormCode", data.get("businessFormCode")); + mergedMap.put("operatorName", data.get("operatorName")); + mergedMap.put("id", data.get("id")); + ArrayList<HashMap> goodsList = new ArrayList<>(); + goodsList.add(hashMap); + mergedMap.put("goods", goodsList); + mergedDataMap.put(id, mergedMap); + } else { + // 濡傛灉id鍦ㄥ悎骞舵暟鎹腑宸插瓨鍦紝鍒欏皢k3杩藉姞鍒板凡瀛樺湪璁板綍鐨刱3鍒楄〃涓� + Map<String, Object> mergedMap = mergedDataMap.get(id); + ArrayList<HashMap> goodsList = (ArrayList<HashMap>) mergedMap.get("goods"); + goodsList.add(hashMap); + } + } + // 灏嗗悎骞跺悗鐨勬暟鎹浆鎹负List杩斿洖 + return new ArrayList<>(mergedDataMap.values()); + } + + /** + * @Description 鏍规嵁id鏌ヨ璇︽儏 + */ + @ApiOperation(value = "鏍规嵁id鏌ヨ璇︽儏", notes = "鏍规嵁id鏌ヨ璇︽儏") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "鎶ュ簾鍗昳d", dataType = "Long", paramType = "query") + }) + @GetMapping("/deptDetail") + public ResponseValue getById(Long id) { + if (id == null) { + return ResponseValue.error("鎶ュ簾鍗昳d涓虹┖"); + } + return ResponseValue.success(this.depFormScrappedService.getById(id)); + } + + @ApiOperation(value = "瀵煎嚭鎶ュ簾鍗�", notes = "瀵煎嚭鎶ュ簾鍗�") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "鎶ュ簾鍗昳d", dataType = "Long", paramType = "query") + }) + @GetMapping("/deptList/export") + public void export(Long id, HttpServletResponse response) throws Exception { + if (id == null) { + throw new RuntimeException("鎶ュ簾鍗昳d涓虹┖"); + } + FinSysTenantUser sysInfo = getSysInfo(); + if (sysInfo == null) { + throw new RuntimeException("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�"); + } + List<Map<String, Object>> export = depFormScrappedService.export(id, sysInfo.getTenantId()); + if (CollectionUtils.isEmpty(export)) { + throw new RuntimeException("鏁版嵁涓虹┖"); + } + TemplateExportParams exportParams = new TemplateExportParams("import/deptScrapped.xlsx"); + exportParams.setHeadingStartRow(2); + Map<String, Object> scrappedInfoExcelTemplate = export.get(0); + + Long dealTime = Convert.toLong(scrappedInfoExcelTemplate.get("dealTime")); + String operatorName = Convert.toStr(scrappedInfoExcelTemplate.get("operatorName")); + String businessFormCode = Convert.toStr(scrappedInfoExcelTemplate.get("businessFormCode")); + + Map<String, Object> map = new HashMap<>(); + map.put("code", businessFormCode); + map.put("date", DateUtils.toShowDate(dealTime)); + map.put("name", operatorName); + map.put("countNum", 0); + map.put("totalAmount", 0); + map.put("dataList", export); + + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, map); + // 璁剧疆鍝嶅簲澶� + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); + response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode("閮ㄩ棬鎶ュ簾鍗�.xlsx", "utf-8")); + try (OutputStream outputStream = response.getOutputStream()) { + workbook.write(outputStream); + workbook.close(); + } + } + + public static void main(String[] args) { + TemplateExportParams exportParams = new TemplateExportParams("D:\\MyProjects\\jmy\\浣庡�兼槗鑰楀搧\\low-consum-manage\\deploy-jar-single\\src\\main\\resources\\import\\deptScrapped.xlsx"); + exportParams.setHeadingStartRow(2); + + List<Map<String, Object>> export = new ArrayList<>(); + + // 鍒涘缓绗竴鏉℃暟鎹� + Map<String, Object> data1 = new HashMap<>(); + data1.put("agencyName", 1); + data1.put("baseGoodsTemplateName", "Bob"); + data1.put("scrappedName", "Bob"); + data1.put("bz", "Bob"); + data1.put("baseGoodsModelsName", 30); + data1.put("counts", 30); + data1.put("totalPrice", 30); + export.add(data1); + + // 鍒涘缓绗簩鏉℃暟鎹� + Map<String, Object> data2 = new HashMap<>(); + data2.put("agencyName", 2); + data2.put("baseGoodsTemplateName", "Bob"); + data2.put("scrappedName", "Bob"); + data2.put("bz", "Bob"); + data2.put("baseGoodsModelsName", 30); + data2.put("counts", 30); + data2.put("totalPrice", 30); + export.add(data2); + + + Map<String, Object> map = new HashMap<>(); + map.put("code", "2023"); + map.put("date", "2023"); + map.put("name", "operatorName"); + map.put("countNum", 0); + map.put("totalAmount", 0); + map.put("maplist", export); + + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, map); + + File file = new File("C:\\Users\\cy\\Desktop\\鏂板缓鏂囦欢澶�"); + OutputStream stream = null; + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd"); + stream = new FileOutputStream(new File(file, "鏈烘瀯瀹㈡埛淇℃伅琛�.xls")); + //document.write(stream); + workbook.write(stream); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (stream != null) ; + try { + stream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } } } -- Gitblit v1.9.1