From 01aac4ae9180661380b15f46f6e38c7d90e4fa4c Mon Sep 17 00:00:00 2001 From: lzh Date: Mon, 1 Nov 2021 21:48:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=A5=BC=E5=AE=87=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/exception/EpmetErrorCode.java | 5 ++- .../epmet/dto/form/IcBulidingUnitFormDTO.java | 42 +++++++++++++++++++ .../epmet/controller/BuildingController.java | 40 ++++++++++++++---- .../com/epmet/controller/HouseController.java | 11 +++-- .../controller/NeighborHoodController.java | 13 +++--- .../service/impl/BuildingServiceImpl.java | 17 ++++---- .../service/impl/NeighborHoodServiceImpl.java | 3 -- 7 files changed, 100 insertions(+), 31 deletions(-) create mode 100644 epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingUnitFormDTO.java diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java index fa30ff3a3c..92c190c7ec 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java @@ -214,8 +214,11 @@ public enum EpmetErrorCode { SAME_RULE_NAME(8916,"该积分事件已存在,请重新调整保存"), UP_LIMIT_POINT(8917,"积分上限需为单位积分倍数,请重新调整保存"), - BADGE_CHECK(8918,""); + BADGE_CHECK(8918,""), + ORG_ADD_FAILED(8919,"添加失败"), + ORG_EDIT_FAILED(8920,"编辑失败"), + ORG_DEL_FAILED(8921,"删除失败"); private int code; private String msg; diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingUnitFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingUnitFormDTO.java new file mode 100644 index 0000000000..74a38b8e2b --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingUnitFormDTO.java @@ -0,0 +1,42 @@ +/** + * 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.dto.form; + +import com.epmet.commons.tools.validator.group.AddGroup; +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import com.epmet.commons.tools.validator.group.UpdateGroup; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + + +@Data +public class IcBulidingUnitFormDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotBlank(message = "楼栋ID不能为空") + private String buildingId; + + + + +} \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java index fa78b6f791..2e65729cab 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java @@ -19,6 +19,8 @@ package com.epmet.controller; import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.exception.ErrorCode; import com.epmet.commons.tools.security.dto.TokenDto; @@ -28,12 +30,15 @@ import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.constant.NeighborhoodConstant; +import com.epmet.dao.IcBuildingUnitDao; import com.epmet.dto.BuildingTreeLevelDTO; import com.epmet.dto.IcNeighborHoodDTO; import com.epmet.dto.form.IcBulidingFormDTO; +import com.epmet.dto.form.IcBulidingUnitFormDTO; import com.epmet.dto.form.IcNeighborHoodFormDTO; import com.epmet.dto.form.ListIcNeighborHoodFormDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; +import com.epmet.entity.IcBuildingUnitEntity; import com.epmet.excel.IcBuildingExcel; import com.epmet.excel.IcHouseExcel; import com.epmet.excel.IcNeighborHoodExcel; @@ -77,13 +82,15 @@ public class BuildingController { private IcBuildingService icBuildingService; @Autowired private BuildingService buildingService; + @Autowired + private IcBuildingUnitDao icBuildingUnitDao; @PostMapping("buildinglist") public Result houseList(@RequestBody ListIcNeighborHoodFormDTO formDTO){ //效验数据 - ValidatorUtils.validateEntity(ListIcNeighborHoodFormDTO.class); + ValidatorUtils.validateEntity(formDTO); IcNeighborHoodResultDTO icNeighborHoodResultDTO = buildingService.listBuilding(formDTO); return new Result().ok(icNeighborHoodResultDTO); @@ -126,13 +133,12 @@ public class BuildingController { } /** * 导出模板 - * @param formDTO * @param response * @throws Exception */ @PostMapping("exporttemplate") - public void exportTemplate(@RequestBody ListIcNeighborHoodFormDTO formDTO, HttpServletResponse response) throws Exception { - ValidatorUtils.validateEntity(ListIcNeighborHoodFormDTO.class); + public void exportTemplate( HttpServletResponse response) throws Exception { + TemplateExportParams templatePath = new TemplateExportParams("excel/building_template.xlsx"); Map map = new HashMap<>(); map.put("maplist",new ArrayList()); @@ -147,7 +153,7 @@ public class BuildingController { */ @RequestMapping("exportbuildinginfo") public void exportbuildinginfo(@RequestBody ListIcNeighborHoodFormDTO formDTO, HttpServletResponse response) throws Exception { - ValidatorUtils.validateEntity(ListIcNeighborHoodFormDTO.class); + ValidatorUtils.validateEntity(formDTO); buildingService.exportBuildinginfo(formDTO,response); } @@ -161,7 +167,7 @@ public class BuildingController { @GetMapping("export") public void export(HttpServletResponse response) throws Exception { ListIcNeighborHoodFormDTO formDTO = new ListIcNeighborHoodFormDTO(); - ValidatorUtils.validateEntity(ListIcNeighborHoodFormDTO.class); + ValidatorUtils.validateEntity(formDTO); buildingService.exportBuildinginfo(formDTO,response); } @@ -186,7 +192,7 @@ public class BuildingController { for ( IcBuildingExcel entity : failList) { log.error("第{}行,{}",entity.getRowNum(),entity.getErrorMsg());//打印失败的行 和失败的信息 } - return new Result().error(8000,failList.get(0).getErrorMsg()); + return new Result().error(8001,failList.get(0).getErrorMsg()); } List result =importResult.getList(); @@ -194,5 +200,25 @@ public class BuildingController { return new Result().ok("导入成功"); } + /** + * 查看楼宇单元列表 + * @param tokenDTO + * @return + * @throws IOException + */ + @PostMapping("buildingunitlist") + public Result buildingunitlist(@LoginUser TokenDto tokenDTO,@RequestBody IcBulidingUnitFormDTO icBulidingUnitFormDTO ){ + ValidatorUtils.validateEntity(icBulidingUnitFormDTO); + List icBuildingUnitEntityList = icBuildingUnitDao.selectList(new QueryWrapper().lambda().eq(IcBuildingUnitEntity::getBuildingId, icBulidingUnitFormDTO.getBuildingId())); + List result = new ArrayList<>(); + icBuildingUnitEntityList.forEach(item->{ + JSONObject jsonObject = new JSONObject(); + jsonObject.put("id",item.getId()); + jsonObject.put("unitName",item.getUnitName()); + jsonObject.put("unitNum",item.getUnitNum()); + result.add(jsonObject); + }); + return new Result().ok(result); + } } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index 9f8f92188a..8bc4378e8f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -67,7 +67,7 @@ public class HouseController { @PostMapping("houselist") public Result houseList(@RequestBody ListIcNeighborHoodFormDTO formDTO){ //效验数据 - ValidatorUtils.validateEntity(ListIcNeighborHoodFormDTO.class); + ValidatorUtils.validateEntity(formDTO); IcNeighborHoodResultDTO icNeighborHoodResultDTO = houseService.listNeighborhood(formDTO); return new Result().ok(icNeighborHoodResultDTO); @@ -103,13 +103,12 @@ public class HouseController { } /** * 导出模板 - * @param formDTO * @param response * @throws Exception */ @PostMapping("exporttemplate") - public void exportTemplate(@RequestBody ListIcNeighborHoodFormDTO formDTO, HttpServletResponse response) throws Exception { - ValidatorUtils.validateEntity(ListIcNeighborHoodFormDTO.class); + public void exportTemplate(HttpServletResponse response) throws Exception { +// ValidatorUtils.validateEntity(ListIcNeighborHoodFormDTO.class); TemplateExportParams templatePath = new TemplateExportParams("excel/house_template.xlsx"); Map map = new HashMap<>(); map.put("maplist",new ArrayList()); @@ -124,7 +123,7 @@ public class HouseController { */ @RequestMapping("exporthouseinfo") public void exporthouseinfo(@RequestBody ListIcNeighborHoodFormDTO formDTO, HttpServletResponse response) throws Exception { - ValidatorUtils.validateEntity(ListIcNeighborHoodFormDTO.class); + ValidatorUtils.validateEntity(formDTO); houseService.exportBuildinginfo(formDTO,response); } @@ -149,7 +148,7 @@ public class HouseController { for ( IcHouseExcel entity : failList) { log.error("第{}行,{}",entity.getRowNum(),entity.getErrorMsg());//打印失败的行 和失败的信息 } - return new Result().error(8000,failList.get(0).getErrorMsg()); + return new Result().error(8001,failList.get(0).getErrorMsg()); } List result =importResult.getList(); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/NeighborHoodController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/NeighborHoodController.java index 8d98ad3c8a..823363814a 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/NeighborHoodController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/NeighborHoodController.java @@ -80,7 +80,7 @@ public class NeighborHoodController { @PostMapping("neighborhoodlist") public Result neighborhoodlist(@RequestBody ListIcNeighborHoodFormDTO formDTO){ //效验数据 - ValidatorUtils.validateEntity(ListIcNeighborHoodFormDTO.class); + ValidatorUtils.validateEntity(formDTO); IcNeighborHoodResultDTO icNeighborHoodResultDTO = neighborHoodService.listNeighborhood(formDTO); return new Result().ok(icNeighborHoodResultDTO); @@ -115,7 +115,7 @@ public class NeighborHoodController { //判断是否存在楼宇,如果存在不能删除 List icBuildingEntities = icBuildingDao.selectList(new QueryWrapper().lambda().eq(IcBuildingEntity::getNeighborHoodId, neighborHoodId)); if(!CollectionUtils.isEmpty(icBuildingEntities)){ - return new Result().error(8000,"小区下已存在楼宇,无法删除"); + return new Result().error(8001,"小区下已存在楼宇,无法删除"); } neighborHoodService.DelNeighborhood(neighborHoodId); return new Result().ok("删除成功"); @@ -130,19 +130,18 @@ public class NeighborHoodController { */ @PostMapping("exportneighborhoodinfo") public void exportneighborhoodinfo(@RequestBody ListIcNeighborHoodFormDTO formDTO, HttpServletResponse response) throws Exception { - ValidatorUtils.validateEntity(ListIcNeighborHoodFormDTO.class); + ValidatorUtils.validateEntity(formDTO); neighborHoodService.exportNeighborhoodinfo(formDTO,response); } /** * 导出模板 - * @param formDTO * @param response * @throws Exception */ @PostMapping("exporttemplate") - public void exportTemplate(@RequestBody ListIcNeighborHoodFormDTO formDTO, HttpServletResponse response) throws Exception { - ValidatorUtils.validateEntity(ListIcNeighborHoodFormDTO.class); + public void exportTemplate( HttpServletResponse response) throws Exception { +// ValidatorUtils.validateEntity(ListIcNeighborHoodFormDTO.class); TemplateExportParams templatePath = new TemplateExportParams("excel/neighbor_template.xlsx"); Map map = new HashMap<>(); map.put("maplist",new ArrayList()); @@ -211,7 +210,7 @@ public class NeighborHoodController { for ( IcNeighborHoodExcel entity : failList) { log.error("第{}行,{}",entity.getRowNum(),entity.getErrorMsg());//打印失败的行 和失败的信息 } - return new Result().error(8000,failList.get(0).getErrorMsg()); + return new Result().error(8001,failList.get(0).getErrorMsg()); } List result =importResult.getList(); // log.info(JSON.toJSONString(result)); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index 7842454149..10371e3369 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -8,16 +8,19 @@ import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.*; -import com.epmet.dto.*; +import com.epmet.dto.BuildingTreeLevelDTO; +import com.epmet.dto.CustomerStaffAgencyDTO; +import com.epmet.dto.IcBuildingDTO; import com.epmet.dto.form.IcBulidingFormDTO; import com.epmet.dto.form.ListIcNeighborHoodFormDTO; -import com.epmet.dto.result.ExtStaffPermissionResultDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; import com.epmet.entity.*; import com.epmet.enums.BuildingTypeEnums; import com.epmet.excel.IcBuildingExcel; -import com.epmet.excel.IcNeighborHoodExcel; -import com.epmet.service.*; +import com.epmet.service.BuildingService; +import com.epmet.service.IcBuildingService; +import com.epmet.service.IcBuildingUnitService; +import com.epmet.service.IcHouseService; import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -374,7 +377,7 @@ public class BuildingServiceImpl implements BuildingService { List icHouseEntities = icHouseDao.selectList(new QueryWrapper().lambda().eq(IcHouseEntity::getBuildingId, formDTO.getBuildingId())); if(!CollectionUtils.isEmpty(icHouseEntities)){ // - throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(),"楼宇单元下存在房屋,无法更新"); + throw new RenException(EpmetErrorCode.ORG_EDIT_FAILED.getCode(),"楼宇单元下存在房屋,无法更新"); // icHouseEntities.forEach(item->{ // item.setNeighborHoodId(formDTO.getNeighborHoodId()); // }); @@ -403,7 +406,7 @@ public class BuildingServiceImpl implements BuildingService { icBuildingUnitService.insertBatch(unitList); }else{ //如果小于,判断是否存在房屋,如果存在就提示不能更改 - throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(),"楼宇单元下存在房屋,无法更新"); + throw new RenException(EpmetErrorCode.ORG_EDIT_FAILED.getCode(),"楼宇单元下存在房屋,无法更新"); } @@ -420,7 +423,7 @@ public class BuildingServiceImpl implements BuildingService { //如果存在房屋,无法删除 List icHouseEntities = icHouseDao.selectList(new QueryWrapper().lambda().eq(IcHouseEntity::getBuildingId, buildingId)); if(!CollectionUtils.isEmpty(icHouseEntities)){ - throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(),"楼宇单元下存在房屋,无法删除"); + throw new RenException(EpmetErrorCode.ORG_DEL_FAILED.getCode(),"楼宇单元下存在房屋,无法删除"); } //删除楼宇 icBuildingService.deleteById(buildingId); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/NeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/NeighborHoodServiceImpl.java index 2d41fdc8fb..00d96f74f6 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/NeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/NeighborHoodServiceImpl.java @@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.NeighborhoodConstant; import com.epmet.dao.*; @@ -18,8 +17,6 @@ import com.epmet.dto.form.IcNeighborHoodFormDTO; import com.epmet.dto.form.ListIcNeighborHoodFormDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; import com.epmet.entity.*; -import com.epmet.excel.IcBuildingExcel; -import com.epmet.excel.IcHouseExcel; import com.epmet.excel.IcNeighborHoodExcel; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.service.IcNeighborHoodPropertyService; From 57b335d545532bdeae29dc7c4da6f26eff76092b Mon Sep 17 00:00:00 2001 From: jianjun Date: Tue, 2 Nov 2021 09:15:22 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=94=9F=E6=88=90=E8=A1=A8=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- epmet-user/epmet-user-server/pom.xml | 10 ++++ .../controller/IcResiUserController.java | 52 ++++++++++-------- .../main/resources/excel/ic_resi_info_cid.xls | Bin 0 -> 79872 bytes 3 files changed, 40 insertions(+), 22 deletions(-) create mode 100644 epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid.xls diff --git a/epmet-user/epmet-user-server/pom.xml b/epmet-user/epmet-user-server/pom.xml index a70950c101..c6417f095f 100644 --- a/epmet-user/epmet-user-server/pom.xml +++ b/epmet-user/epmet-user-server/pom.xml @@ -140,6 +140,16 @@ true + + org.apache.maven.plugins + maven-resources-plugin + + + xls + xlsx + + + ${project.basedir}/src/main/java diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index 02b2068020..2aaeba1cb0 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -144,14 +144,7 @@ public class IcResiUserController { @GetMapping("download/template") public void downloadTemplate(@RequestParam String customerId) throws Exception { - 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())); + CustomerFormResultDTO resultForm = getResiFormItems(customerId); XSSFWorkbook workbook = new XSSFWorkbook(); Map> sheetHeaderMap = buildHeaderByItem(resultForm); @@ -175,11 +168,24 @@ public class IcResiUserController { } @NotNull - private Map> buildHeaderByItem(Result resultForm) { + 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.getData().getItemList(); - List groupList = resultForm.getData().getGroupList(); + List itemList = resultForm.getItemList(); + List groupList = resultForm.getGroupList(); Map> everySheetHeaderMap = new LinkedHashMap<>(); @@ -196,7 +202,7 @@ public class IcResiUserController { firstSheetHeaderList.add(header); return; } - everySheetHeaderMap.putIfAbsent(resultForm.getData().getFormName(),firstSheetHeaderList); + everySheetHeaderMap.putIfAbsent(resultForm.getFormName(),firstSheetHeaderList); //这些是动态的 formGroup if (item.getChildGroup() != null){ @@ -326,29 +332,31 @@ public class IcResiUserController { 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(); + //PageData> mapPageData = icResiUserService.pageResiMap(pageFormDTO); + //List> list = mapPageData.getList(); + List> list = (List>)JSON.parse("[{\"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\"}]" + ); Map mapData = new HashMap<>(); log.info("list:{}", JSON.toJSONString(list)); mapData.put("list", list); - String templatePath = "excel/ic_resi_info_cid.xls"; + CustomerFormResultDTO resiFormItems = getResiFormItems(pageFormDTO.getCustomerId()); + String templatePath = "excel/ic_resi_info_cid.xls"; + TemplateExportParams params = new TemplateExportParams(templatePath, 0,1); Workbook workbook = ExcelExportUtil.exportExcel(new TemplateExportParams(templatePath), mapData); //header response.setHeader("content-Type", "application/vnd.ms-excel"); - response.addHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("继续追踪导出详情-" + ".xlsx", "UTF-8")); + response.addHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("继续追踪导出详情-" + ".xls", "UTF-8")); workbook.write(response.getOutputStream()); - /* - //方式1 通过mv导出 + /* //方式1 通过mv导出 ModelAndView mv = new ModelAndView(new EasypoiTemplateExcelView()); - mv.addObject(TemplateExcelConstants.FILE_NAME, "继续追踪导出详情-".concat(DateUtils.formatDate())); - mv.addObject(TemplateExcelConstants.PARAMS, new TemplateExportParams(templatePath,dataType)); + mv.addObject(TemplateExcelConstants.FILE_NAME, "继续追踪导出详情-")); + mv.addObject(TemplateExcelConstants.PARAMS, new TemplateExportParams(templatePath)); mv.addObject(TemplateExcelConstants.MAP_DATA, mapData); - return mv; - */ + return mv;*/ } diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid.xls b/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid.xls new file mode 100644 index 0000000000000000000000000000000000000000..51a5d41a945f26f68fb9b5b5e7fb36b05ed6d092 GIT binary patch literal 79872 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