cy
2023-12-09 6665ddbc6dd0fe82ea3d47cd2bb5e48a5a27a712
consum-base/src/main/java/com/consum/base/controller/DepFormScrappedController.java
@@ -1,22 +1,38 @@
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.infrastructure.utils.StringUtils;
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.OutputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @ClassName DepFormScrappedController
@@ -41,6 +57,7 @@
        param = query;
        FinSysTenantUser sysInfo = this.getSysInfo();
        return depFormScrappedService.add(param, this.getCurrentUser(), sysInfo);
    }
@@ -65,6 +82,206 @@
            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追加到已存在记录的k3列表中
                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 = "报废单id", dataType = "Long", paramType = "query")
    })
    @GetMapping("/deptDetail")
    public ResponseValue getById(Long id) {
        if (id == null) {
            return ResponseValue.error("报废单id为空");
        }
        return ResponseValue.success(this.depFormScrappedService.getById(id));
    }
    @ApiOperation(value = "导出报废单", notes = "导出报废单")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "报废单id", dataType = "Long", paramType = "query")
    })
    @GetMapping("/deptList/export")
    public void export(Long id, HttpServletResponse response) throws Exception {
        if (id == null) {
            throw new RuntimeException("报废单id为空");
        }
        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();
        }
    }
    @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));
    }
//    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();
//            }
//        }
//    }
}