/** * Copyright 2018 人人开源 https://www.renren.io *

* This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. *

* This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. *

* You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package com.epmet.controller; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import cn.afterturn.easypoi.excel.export.ExcelExportService; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.IcResiUserDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.CustomerFormResultDTO; import com.epmet.dto.result.FormGroupDTO; import com.epmet.dto.result.FormItem; import com.epmet.dto.result.HomeUserResultDTO; import com.epmet.excel.IcResiUserExcel; import com.epmet.feign.OperCustomizeOpenFeignClient; import com.epmet.service.IcResiUserService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.FileOutputStream; import java.io.IOException; import java.net.URLEncoder; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; /** * 用户基础信息 * * @author generator generator@elink-cn.com * @since v1.0.0 2021-10-26 */ @Slf4j @RestController @RequestMapping("icresiuser") public class IcResiUserController { private static final String BASE_TABLE_NAME = "ic_resi_user"; @Autowired private OperCustomizeOpenFeignClient operCustomizeOpenFeignClient; @Autowired private IcResiUserService icResiUserService; @GetMapping("page") public Result> page(@RequestParam Map params){ PageData page = icResiUserService.page(params); return new Result>().ok(page); } @GetMapping("{id}") public Result get(@PathVariable("id") String id){ IcResiUserDTO data = icResiUserService.get(id); return new Result().ok(data); } @PostMapping public Result save(@RequestBody IcResiUserDTO dto){ //效验数据 ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); icResiUserService.save(dto); return new Result(); } @PutMapping public Result update(@RequestBody IcResiUserDTO dto){ //效验数据 ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); icResiUserService.update(dto); return new Result(); } @PostMapping("delete") public Result delete(@LoginUser TokenDto tokenDto,@RequestBody DelIcResiUserFormDTO formDTO){ formDTO.setCustomerId(tokenDto.getCustomerId()); ValidatorUtils.validateEntity(formDTO,DelIcResiUserFormDTO.IdGroup.class); icResiUserService.delete(formDTO); return new Result(); } @GetMapping("export") public void export(@RequestParam Map params, HttpServletResponse response) throws Exception { List list = icResiUserService.list(params); ExcelUtils.exportExcelToTarget(response, null, list, IcResiUserExcel.class); } /** * @Author sun * @Description 党建互联平台--保存居民信息 **/ @PostMapping("add") public Result add(@LoginUser TokenDto tokenDto, @RequestBody List formDTO) { icResiUserService.add(tokenDto, formDTO); return new Result(); } /** * @Author sun * @Description 党建互联平台--修改居民信息 **/ @PostMapping("edit") public Result edit(@LoginUser TokenDto tokenDto, @RequestBody List formDTO) { icResiUserService.edit(tokenDto, formDTO); return new Result(); } @GetMapping("download/template") public void downloadTemplate(@RequestParam String customerId) throws Exception { CustomerFormResultDTO resultForm = getResiFormItems(customerId); XSSFWorkbook workbook = new XSSFWorkbook(); Map> sheetHeaderMap = buildHeaderByItem(resultForm); //Workbook workbook = null; for (Map.Entry> entry : sheetHeaderMap.entrySet()) { String sheetName = entry.getKey(); List headers = entry.getValue(); System.out.println("headers:"+sheetName+JSON.toJSONString(headers)); ExportParams exportParams = new ExportParams(null,sheetName); //exportParams.setAutoSize(true); List> dataSet = new ArrayList<>(); HashMap map = new HashMap<>(); map.put("1","2"); dataSet.add(map); new ExcelExportService().createSheetForMap(workbook, exportParams, headers, dataSet); } FileOutputStream fos = new FileOutputStream("//Users/liujianjun/Downloads/基础信息表/Dow.tt.xls"); workbook.write(fos); fos.close(); } @NotNull private CustomerFormResultDTO getResiFormItems(String customerId) { CustomerFormQueryDTO queryDTO = new CustomerFormQueryDTO(); queryDTO.setFormCode("resi_base_info"); queryDTO.setCustomerId(customerId); Result resultForm = operCustomizeOpenFeignClient.getCustomerForm(queryDTO); if (resultForm == null || !resultForm.success() ||resultForm.getData() == null){ throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); } System.out.println(JSON.toJSONString(resultForm.getData())); return resultForm.getData(); } @NotNull private Map> buildHeaderByItem(CustomerFormResultDTO resultForm) { //form中的itemlist 为一级表头 但是要排除每个item中含有childGroup的 List itemList = resultForm.getItemList(); List groupList = resultForm.getGroupList(); Map> everySheetHeaderMap = new LinkedHashMap<>(); List firstSheetHeaderList = new ArrayList<>(); //Map groupNameMap = groupList.stream().collect(Collectors.toMap(FormGroupDTO::getGroupId,FormGroupDTO::getLabel)); itemList.forEach(item->{ if (StringUtils.isBlank(item.getColumnName())){ return; } if (item.getChildGroup() == null){ ExcelExportEntity header = new ExcelExportEntity(item.getLabel(),item.getColumnName().concat(String.valueOf(item.getColumnNum())),30); header.setNeedMerge(true); firstSheetHeaderList.add(header); return; } everySheetHeaderMap.putIfAbsent(resultForm.getFormName(),firstSheetHeaderList); //这些是动态的 formGroup if (item.getChildGroup() != null){ //baseTableName单独的一个sheet System.out.println("childGroup:"+item.getLabel()); if (BASE_TABLE_NAME.equals(item.getTableName())){ // header = new ExcelExportEntity(item.getChildGroup().getLabel(),item.getChildGroup().getTableName()); //header.setNeedMerge(true); List otherSheetHeaderList = new ArrayList<>(); //这里是设置除基础信息之外的sheet的表头 item.getChildGroup().getItemList().forEach(item2->{ if (!BASE_TABLE_NAME.equals(item2.getTableName())){ everySheetHeaderMap.putIfAbsent(item.getLabel(),otherSheetHeaderList); } ExcelExportEntity secondHeader = new ExcelExportEntity(item2.getLabel(),item2.getColumnName().concat(String.valueOf(item2.getColumnNum()))); otherSheetHeaderList.add(secondHeader); if (!"radio".equals(item2.getItemType()) && CollectionUtils.isNotEmpty(item2.getOptions())){ secondHeader.setNeedMerge(true); List thirdHeaderList = new ArrayList<>(); item2.getOptions().forEach(child->{ ExcelExportEntity thirdHeader = new ExcelExportEntity(child.getLabel()); thirdHeaderList.add(thirdHeader); }); secondHeader.setList(thirdHeaderList); } }); //header.setList(secondHeaderList); //otherSheetHeaderList.add(header); } } }); groupList.forEach(item->{ /* if (!"兴趣爱好".equals(item.getLabel()) && !"宗教信仰".equals(item.getLabel())){ return; }*/ if (!BASE_TABLE_NAME.equals(item.getTableName())){ return; } ExcelExportEntity header = new ExcelExportEntity(item.getLabel(),item.getTableName()); header.setNeedMerge(true); List secondHeaderList = new ArrayList<>(); item.getItemList().forEach(item2->{ ExcelExportEntity secondHeader = new ExcelExportEntity(item2.getLabel(),item2.getColumnName().concat(String.valueOf(item2.getColumnNum()))); secondHeader.setNeedMerge(true); secondHeaderList.add(secondHeader); if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(item2.getOptions())){ List thirdHeaderList = new ArrayList<>(); item2.getOptions().forEach(child->{ ExcelExportEntity thirdHeader = new ExcelExportEntity(child.getLabel(),child.getValue()+ new Random(1).nextInt(2)); thirdHeader.setNeedMerge(true); thirdHeaderList.add(thirdHeader); }); secondHeader.setList(thirdHeaderList); } }); header.setList(secondHeaderList); firstSheetHeaderList.add(header); System.out.println(JSON.toJSONString(firstSheetHeaderList)); }); return everySheetHeaderMap; } private void buildHeader(Map> everySheetHeaderMap, FormItem item, ExcelExportEntity header) { List firstSheetHeaderList = new ArrayList<>(); List secondHeaderList = new ArrayList<>(); item.getChildGroup().getItemList().forEach(item2->{ if (!BASE_TABLE_NAME.equals(item2.getTableName())){ everySheetHeaderMap.putIfAbsent(item.getLabel(),firstSheetHeaderList); } ExcelExportEntity secondHeader = new ExcelExportEntity(item2.getLabel(),item2.getColumnName().concat(String.valueOf(item2.getColumnNum()))); secondHeader.setNeedMerge(true); secondHeaderList.add(secondHeader); if (CollectionUtils.isNotEmpty(item2.getOptions())){ List thirdHeaderList = new ArrayList<>(); item2.getOptions().forEach(child->{ ExcelExportEntity thirdHeader = new ExcelExportEntity(child.getLabel()); thirdHeaderList.add(thirdHeader); }); secondHeader.setList(thirdHeaderList); } }); header.setList(secondHeaderList); firstSheetHeaderList.add(header); everySheetHeaderMap.putIfAbsent(item.getLabel(),firstSheetHeaderList); } /** * @Description 根据房间号查人 * @Param formDTO * @Return {@link Result>} * @Author zhaoqifeng * @Date 2021/11/1 11:04 */ @PostMapping("getpeoplebyroom") public Result> getPeopleByRoom(@RequestBody IcResiUserDTO formDTO) { return new Result>().ok(icResiUserService.getPeopleByRoom(formDTO.getHomeId())); } @PostMapping("listresi") public Result>> queryListResi1(@LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO){ //pageFormDTO.setCustomerId("45687aa479955f9d06204d415238f7cc"); pageFormDTO.setCustomerId(tokenDto.getCustomerId()); ValidatorUtils.validateEntity(pageFormDTO,IcResiUserPageFormDTO.AddUserInternalGroup.class); return new Result>>().ok(icResiUserService.pageResiMap(pageFormDTO)); } /** * 编辑页面,显示居民信息详情 * * @param pageFormDTO * @return com.epmet.commons.tools.utils.Result * @author yinzuomei * @date 2021/10/28 10:29 上午 */ @PostMapping("detail") public Result queryIcResiDetail(@LoginUser TokenDto tokenDto,@RequestBody IcResiDetailFormDTO pageFormDTO){ //pageFormDTO.setCustomerId("45687aa479955f9d06204d415238f7cc"); pageFormDTO.setCustomerId(tokenDto.getCustomerId()); ValidatorUtils.validateEntity(pageFormDTO,IcResiDetailFormDTO.AddUserInternalGroup.class); return new Result().ok(icResiUserService.queryIcResiDetail(pageFormDTO)); } @RequestMapping(value = "/exportExcel") public void exportExcel(/*@LoginUser TokenDto tokenDto,*/ @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws IOException { pageFormDTO.setCustomerId("45687aa479955f9d06204d415238f7cc"); pageFormDTO.setPageFlag(false); //PageData> mapPageData = icResiUserService.pageResiMap(pageFormDTO); //List> list = mapPageData.getList(); List> list = icResiUserService.dynamicQuery(pageFormDTO.getCustomerId(), pageFormDTO.getFormCode(), BASE_TABLE_NAME, pageFormDTO.getConditions()); //list = (List>)JSON.parse("[{\"IS_BDHJ\":\"1\",\"IS_SPECIAL\":\"1\",\"IS_XFRY\":\"0\",\"REMARKS\":\"beizhu\",\"IS_PARTY\":\"1\",\"icResiUserId\":\"yzmtest2\",\"HOME_ID\":\"中海国际社区一里城1号楼1单元101\",\"HOUSE_TYPE\":\"平房\",\"UNIT_NAME\":\"1单元\",\"GRID_ID\":\"市北区-市北区第三网格3\",\"IS_DB\":\"0\",\"GENDER\":\"男\",\"BIRTHDAY\":\"2021-10-04\",\"IS_VETERANS\":\"0\",\"IS_MB\":\"0\",\"IS_UNEMPLOYED\":\"0\",\"DEMAND_NAME\":null,\"IS_KC\":\"0\",\"IS_ENSURE_HOUSE\":\"0\",\"IS_SD\":\"0\",\"NAME\":\"尹作梅\",\"RDSJ\":null,\"IS_VOLUNTEER\":\"1\",\"GRID_ID_VALUE\":\"e74829ffc43d5470eba6b5e060c11e63\",\"IS_SZ\":\"0\",\"IS_CJ\":\"0\",\"HOME_ID_VALUE\":\"200\",\"DEMAND_CATEGORY_IDS\":null,\"VILLAGE_NAME\":\"中海国际社区一里城\",\"IS_DBH\":\"0\",\"IS_SN\":\"0\",\"BUILD_NAME\":\"1号楼\",\"IS_YLFN\":\"0\",\"IS_UNITED_FRONT\":\"0\",\"ID_CARD\":\"371325199310260529\",\"MOBILE\":\"15764229697\",\"IS_OLD_PEOPLE\":\"0\",\"DOOR_NAME\":\"101\"},{\"IS_SPECIAL\":\"1\",\"IS_XFRY\":\"0\",\"REMARKS\":\"beizhu\",\"IS_PARTY\":\"1\",\"icResiUserId\":\"yzmtest\",\"HOME_ID\":\"中海国际社区一里城1号楼1单元101\",\"HOUSE_TYPE\":\"平房\",\"UNIT_NAME\":\"1单元\",\"GRID_ID\":\"市北区-市北区第三网格3\",\"IS_DB\":\"0\",\"GENDER\":\"男\",\"BIRTHDAY\":\"2021-10-04\",\"IS_VETERANS\":\"0\",\"IS_MB\":\"0\",\"IS_UNEMPLOYED\":\"0\",\"DEMAND_NAME\":\"心理咨询\",\"IS_KC\":\"0\",\"IS_ENSURE_HOUSE\":\"0\",\"IS_SD\":\"0\",\"NAME\":\"尹作梅\",\"RDSJ\":\"2021-10-28 00:00:00\",\"IS_VOLUNTEER\":\"1\",\"GRID_ID_VALUE\":\"e74829ffc43d5470eba6b5e060c11e63\",\"IS_SZ\":\"0\",\"IS_CJ\":\"0\",\"HOME_ID_VALUE\":\"200\",\"DEMAND_CATEGORY_IDS\":\"10180002\",\"VILLAGE_NAME\":\"中海国际社区一里城\",\"IS_DBH\":\"0\",\"IS_SN\":\"0\",\"BUILD_NAME\":\"1号楼\",\"IS_YLFN\":\"0\",\"IS_UNITED_FRONT\":\"0\",\"ID_CARD\":\"371325199310260529\",\"MOBILE\":\"15764229697\",\"IS_OLD_PEOPLE\":\"0\",\"DOOR_NAME\":\"101\"}]"); log.info("list:{}", JSON.toJSONString(list)); CustomerFormResultDTO resiFormItems = getResiFormItems(pageFormDTO.getCustomerId()); String templatePath = "excel/ic_resi_info_cid.xls"; TemplateExportParams params = new TemplateExportParams(templatePath,true); Map> sheetMap = new HashMap<>(); Map mapData = new HashMap<>(); mapData.put("list", list); sheetMap.put(0,mapData); AtomicInteger n = new AtomicInteger(); resiFormItems.getItemList().forEach(item->{ if (item.getChildGroup() != null){ if (!item.getChildGroup().getTableName().equals(BASE_TABLE_NAME)) { sheetMap.put( n.incrementAndGet(),mapData); System.out.println(n.get()); } } }); for (FormGroupDTO group : resiFormItems.getGroupList()) { } Workbook workbook = ExcelExportUtil.exportExcel(sheetMap, params); //header response.setHeader("content-Type", "application/vnd.ms-excel"); response.addHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("居民信息.xls", "UTF-8")); workbook.write(response.getOutputStream()); /* //方式1 通过mv导出 ModelAndView mv = new ModelAndView(new EasypoiTemplateExcelView()); mv.addObject(TemplateExcelConstants.FILE_NAME, "继续追踪导出详情-")); mv.addObject(TemplateExcelConstants.PARAMS, new TemplateExportParams(templatePath)); mv.addObject(TemplateExcelConstants.MAP_DATA, mapData); return mv;*/ } @PostMapping("import/excel") public Result importExcelByEasyExcel() { Object header = icResiUserService.importExcel(); return new Result().ok(header); } @PostMapping("test") public Result>> test(@LoginUser TokenDto tokenDto,@RequestBody DynamicQueryFormDTO formDTO){ formDTO.setCustomerId(tokenDto.getCustomerId()); return new Result>>().ok(icResiUserService.dynamicQuery(formDTO.getCustomerId(), formDTO.getFormCode(), formDTO.getResultTableName(), formDTO.getConditions())); } }