From 2bd9ddd56697e202a443d04139f854afa2559e95 Mon Sep 17 00:00:00 2001
From: WangHan <wwh_work@126.com>
Date: 星期一, 29 四月 2024 14:26:58 +0800
Subject: [PATCH] 漏洞修改

---
 consum-base/src/main/java/com/consum/base/controller/DepFormScrappedController.java |  202 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 181 insertions(+), 21 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..fbb78f4 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 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.web.ResponseValue;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+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 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.DepFormScrappedService;
+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.infrastructure.utils.StringUtils;
+import com.walker.web.ResponseValue;
+
+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 io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 
 /**
  * @ClassName DepFormScrappedController
@@ -25,34 +44,34 @@
  * @Description
  * @Version 1.0
  **/
-@Api(value = "搴撶鍛�", tags = "搴撶鍛�")
+@Api(value = "閮ㄩ棬鎶ュ簾", tags = "閮ㄩ棬鎶ュ簾")
 @RestController
 @RequestMapping("/pc/l/wh/form/scrapped")
 public class DepFormScrappedController extends BaseController {
     @Resource
-    private DepFormScrappedServiceImpl depFormScrappedService;
+    private DepFormScrappedService depFormScrappedService;
 
     @ApiOperation(value = "鏂板鎶ュ簾鍗�", notes = "鏂板鎶ュ簾鍗�")
     @PostMapping("/deptAdd")
-    public ResponseValue deptAdd() {
+    public ResponseValue deptAdd() throws Exception {
         LDeptFormScrappedParam param = CommonUtil.getObjFromReqBody(LDeptFormScrappedParam.class);
         LDeptFormScrappedParam query = new LDeptFormScrappedParam();
         CommonUtil.copyProperties(param, query);
         param = query;
 
         FinSysTenantUser sysInfo = this.getSysInfo();
-        return depFormScrappedService.add(param, this.getCurrentUser(), sysInfo);
+
+        depFormScrappedService.add(param, this.getCurrentUser(), sysInfo);
+        return ResponseValue.success();
     }
 
     /**
-     * @Description 鍒楄〃鏌ヨ
-     * 1.鏌ヨ鎶ュ簾鍗� 2.鏌ヨ鎶ュ簾鍗曠墿鍝�
+     * @Description 鍒楄〃鏌ヨ 1.鏌ヨ鎶ュ簾鍗� 2.鏌ヨ鎶ュ簾鍗曠墿鍝�
      * @Date
      */
     @ApiOperation(value = "鍒楄〃鏌ヨ", notes = "鍒楄〃鏌ヨ")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "param", value = "鏌ヨ鏉′欢", dataType = "LWhFormScrappedQry", paramType = "query")
-    })
+        @ApiImplicitParam(name = "param", value = "鏌ヨ鏉′欢", dataType = "LWhFormScrappedQry", paramType = "query")})
     @GetMapping("/deptList")
     public ResponseValue queryList() {
         LDeptFormScrappedQry param = CommonUtil.getObjFromReq(LDeptFormScrappedQry.class);
@@ -65,6 +84,147 @@
             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 ResponseValue<String> 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("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();
+//        }
+        String filePath = downLoadExcel("閲囪喘鍏ュ簱鍗�", workbook);
+        return ResponseValue.success("瀵煎嚭鎴愬姛", filePath);
+
+    }
+
+    @GetMapping("/deptListByModel")
+    public ResponseValue export() {
+        LDeptFormScrappedQry param = CommonUtil.getObjFromReq(LDeptFormScrappedQry.class);
+        LDeptFormScrappedQry query = new LDeptFormScrappedQry();
+        CommonUtil.copyProperties(param, query);
+        param = query;
+
+        FinSysTenantUser sysInfo = getSysInfo();
+        if (sysInfo == null) {
+            throw new RuntimeException("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
+        }
+        /*褰撳墠鐧诲綍浜哄彧鑳界湅鍒拌嚜宸辨満鏋勪笅鐨勫垪琛�*/
+        String tenantId = sysInfo.getTenantId();
+        String paramAgencyId = param.getAgencyId();
+        if (StringUtils.isEmpty(paramAgencyId) || !paramAgencyId.startsWith(tenantId)) {
+            param.setAgencyId(tenantId);
+        }
+
+        List<Map<String, Object>> export = depFormScrappedService.listByModel(param);
+        return ResponseValue.success(export);
+    }
+
+    @GetMapping("/deptListByModel2")
+    public ResponseValue deptListByModel2() {
+        LDeptFormScrappedQry param = CommonUtil.getObjFromReq(LDeptFormScrappedQry.class);
+        LDeptFormScrappedQry query = new LDeptFormScrappedQry();
+        CommonUtil.copyProperties(param, query);
+        param = query;
+
+        FinSysTenantUser sysInfo = getSysInfo();
+        if (sysInfo == null) {
+            throw new RuntimeException("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
+        }
+        /*褰撳墠鐧诲綍浜哄彧鑳界湅鍒拌嚜宸辨満鏋勪笅鐨勫垪琛�*/
+        String tenantId = sysInfo.getTenantId();
+        String paramAgencyId = param.getAgencyId();
+        if (StringUtils.isEmpty(paramAgencyId) || !paramAgencyId.startsWith(tenantId)) {
+            param.setAgencyId(tenantId);
+        }
+        return ResponseValue.success(depFormScrappedService.listByModel2(param));
+    }
+
 }

--
Gitblit v1.9.1