package com.consum.base.controller; 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 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 * @Author cy * @Date 2023/11/30 * @Description * @Version 1.0 **/ @Api(value = "部门报废", tags = "部门报废") @RestController @RequestMapping("/pc/l/wh/form/scrapped") public class DepFormScrappedController extends BaseController { @Resource private DepFormScrappedService depFormScrappedService; @ApiOperation(value = "新增报废单", notes = "新增报废单") @PostMapping("/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(); depFormScrappedService.add(param, this.getCurrentUser(), sysInfo); return ResponseValue.success(); } /** * @Description 列表查询 1.查询报废单 2.查询报废单物品 * @Date */ @ApiOperation(value = "列表查询", notes = "列表查询") @ApiImplicitParams({ @ApiImplicitParam(name = "param", value = "查询条件", dataType = "LWhFormScrappedQry", paramType = "query")}) @GetMapping("/deptList") public ResponseValue queryList() { LDeptFormScrappedQry param = CommonUtil.getObjFromReq(LDeptFormScrappedQry.class); LDeptFormScrappedQry query = new LDeptFormScrappedQry(); CommonUtil.copyProperties(param, query); param = query; FinSysTenantUser sysInfo = getSysInfo(); if (sysInfo == null) { return ResponseValue.error("登录用户信息不存在"); } param.setAgencyId(sysInfo.getTenantId()); GenericPager> mapGenericPager = depFormScrappedService.queryList(param); // 处理一下数据 List> datas = mapGenericPager.getDatas(); if (CollectionUtils.isEmpty(datas)) { return ResponseValue.success(mapGenericPager); } List> maps = mergeData(datas); ReflectUtil.setFieldValue(mapGenericPager, "datas", maps); return ResponseValue.success(mapGenericPager); } private static List> mergeData(List> dataList) { Map> mergedDataMap = new HashMap<>(); // 遍历原始数据进行合并 for (Map 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 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 goodsList = new ArrayList<>(); goodsList.add(hashMap); mergedMap.put("goods", goodsList); mergedDataMap.put(id, mergedMap); } else { // 如果id在合并数据中已存在,则将k3追加到已存在记录的k3列表中 Map mergedMap = mergedDataMap.get(id); ArrayList goodsList = (ArrayList)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 ResponseValue export(Long id, HttpServletResponse response) throws Exception { if (id == null) { throw new RuntimeException("报废单id为空"); } FinSysTenantUser sysInfo = getSysInfo(); if (sysInfo == null) { throw new RuntimeException("登录用户信息不存在"); } List> export = depFormScrappedService.export(id, sysInfo.getTenantId()); if (CollectionUtils.isEmpty(export)) { throw new RuntimeException("数据为空"); } TemplateExportParams exportParams = new TemplateExportParams("import/deptScrapped.xlsx"); exportParams.setHeadingStartRow(2); Map 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 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> 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)); } }