diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java index d7621bd88b..4784584218 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java @@ -507,4 +507,13 @@ public interface GovOrgOpenFeignClient { */ @PostMapping("/gov/org/icneighborhood/neighborhoodoption") Result> getNeighborHoodOptions(IcNeighborHoodDTO dto); + + /** + * @Description 查询房屋信息 + * @param idCard + * @author zxc + * @date 2021/11/3 3:30 下午 + */ + @PostMapping("/gov/org/ichouse/selecthouseinfobyidcard") + Result> selectHouseInfoByIdCard(@RequestParam("idCard")String idCard); } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java index 7e53823382..95219d6b1b 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java @@ -305,6 +305,11 @@ public class GovOrgOpenFeignClientFallback implements GovOrgOpenFeignClient { return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getNeighborHoodOptions", dto); } + @Override + public Result> selectHouseInfoByIdCard(String idCard) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "selectHouseInfoByIdCard", idCard); + } + @Override public Result selectPidsByGridId(String gridId) { return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "selectPidsByGridId", gridId); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java index 982bf33835..4092579603 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java @@ -88,4 +88,15 @@ public class IcHouseController { return new Result>().ok(icHouseService.getHouseOption(formDTO)); } + /** + * @Description 查询房屋信息 + * @param idCard + * @author zxc + * @date 2021/11/3 3:30 下午 + */ + @PostMapping("selecthouseinfobyidcard") + public Result> selectHouseInfoByIdCard(@RequestParam("idCard")String idCard){ + return new Result>().ok(icHouseService.selectHouseInfoByIdCard(idCard)); + } + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java index fd07309c02..07ca76c21c 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java @@ -52,4 +52,13 @@ public interface IcHouseDao extends BaseDao { List searchAllHouse(@Param("house") IcHouseEntity house); List queryHouseInfo(@Param("houseIdList") Set houseIdList); + + /** + * @Description 查询房屋信息 + * @param idCard + * @author zxc + * @date 2021/11/3 3:30 下午 + */ + List selectHouseInfoByIdCard(@Param("idCard") String idCard); + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java index 471007a582..2f434ab350 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java @@ -103,4 +103,13 @@ public interface IcHouseService extends BaseService { * @Date 2021/10/25 17:04 */ List getHouseOption(HouseFormDTO formDTO); + + /** + * @Description 查询房屋信息 + * @param idCard + * @author zxc + * @date 2021/11/3 3:30 下午 + */ + List selectHouseInfoByIdCard(String idCard); + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java index 0a6f7f50c4..041bdc6b54 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java @@ -36,10 +36,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -135,4 +132,19 @@ public class IcHouseServiceImpl extends BaseServiceImpl selectHouseInfoByIdCard(String idCard) { + List result = baseDao.selectHouseInfoByIdCard(idCard); + if (CollectionUtils.isEmpty(result)){ + return new ArrayList<>(); + } + return result; + } + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml index 3dc145833a..e150566f8a 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml @@ -252,4 +252,16 @@ ih.ID = #{houseId} + + + \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ColumnTableNameResultDTO.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ColumnTableNameResultDTO.java new file mode 100644 index 0000000000..3d1e20cc50 --- /dev/null +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ColumnTableNameResultDTO.java @@ -0,0 +1,20 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description 查询必填字段-接口返参 + * @Author sun + */ +@Data +public class ColumnTableNameResultDTO implements Serializable { + private static final long serialVersionUID = -8441112171986914418L; + //表名 + private String tableName; + //字段中文名 + private String label; + //字段名 + private String columnName; +} diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java index 58def540a4..28693abe46 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java @@ -11,6 +11,7 @@ import com.epmet.dto.result.*; import com.epmet.feign.fallback.OperCustomizeOpenFeignClientFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -88,4 +89,12 @@ public interface OperCustomizeOpenFeignClient { */ @PostMapping("/oper/customize/icform/items") Result> listItems(@RequestBody CustomerFormQueryDTO formDto); + + /** + * @Author sun + * @Description 居民信息新增查询各表必填字段 + **/ + @PostMapping("/oper/customize/icformitem/getmustcolumn/{customerId}") + Result> getMustColumn(@PathVariable("customerId") String customerId); + } diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java index 2420adb817..6aa1809620 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java @@ -74,4 +74,9 @@ public class OperCustomizeOpenFeignClientFallback implements OperCustomizeOpenFe public Result> listItems(CustomerFormQueryDTO formDto) { return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "listItems", formDto); } + + @Override + public Result> getMustColumn(String customerId) { + return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "getMustColumn", customerId); + } } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java index 3c6bbf4004..50f4d10ff9 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java @@ -26,6 +26,8 @@ import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.dto.IcFormItemDTO; +import com.epmet.dto.result.ColumnTableNameResultDTO; +import com.epmet.dto.result.CustomerStaffRoleResultDTO; import com.epmet.excel.IcFormItemExcel; import com.epmet.service.IcFormItemService; import org.springframework.beans.factory.annotation.Autowired; @@ -91,4 +93,13 @@ public class IcFormItemController { ExcelUtils.exportExcelToTarget(response, null, list, IcFormItemExcel.class); } + /** + * @Author sun + * @Description 居民信息新增查询各表必填字段 + **/ + @PostMapping("getmustcolumn/{customerId}") + public Result> getMustColumn(@PathVariable String customerId) { + return new Result>().ok(icFormItemService.getMustColumn(customerId)); + } + } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java index b07c41ef84..a0ad3ad839 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java @@ -18,6 +18,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.ColumnTableNameResultDTO; import com.epmet.dto.result.ConditionResultDTO; import com.epmet.dto.result.IcFormResColumnDTO; import com.epmet.dto.result.TableHeaderResultDTO; @@ -64,4 +65,10 @@ public interface IcFormItemDao extends BaseDao { List querySubTables(@Param("customerId") String customerId, @Param("formCode")String formCode); Set queryIcResiSubTables(@Param("customerId") String customerId, @Param("formCode")String formCode); + + /** + * @Author sun + * @Description 居民信息新增查询各表必填字段 + **/ + List getMustColumn(@Param("customerId")String customerId); } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java index 15967aef43..32480613c2 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java @@ -21,6 +21,7 @@ import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.IcFormItemDTO; import com.epmet.dto.form.CustomerFormQueryDTO; +import com.epmet.dto.result.ColumnTableNameResultDTO; import com.epmet.dto.result.ConditionResultDTO; import com.epmet.dto.result.IcFormResColumnDTO; import com.epmet.dto.result.TableHeaderResultDTO; @@ -115,4 +116,10 @@ public interface IcFormItemService extends BaseService { List querySubTables(String customerId, String formCode); Set queryIcResiSubTables(String customerId, String formCode); + + /** + * @Author sun + * @Description 居民信息新增查询各表必填字段 + **/ + List getMustColumn(String customerId); } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java index c79d2e8fa0..f614e64e0b 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java @@ -27,6 +27,7 @@ import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.IcFormItemDao; import com.epmet.dto.IcFormItemDTO; import com.epmet.dto.form.CustomerFormQueryDTO; +import com.epmet.dto.result.ColumnTableNameResultDTO; import com.epmet.dto.result.ConditionResultDTO; import com.epmet.dto.result.IcFormResColumnDTO; import com.epmet.dto.result.TableHeaderResultDTO; @@ -128,6 +129,14 @@ public class IcFormItemServiceImpl extends BaseServiceImpl()); + list.add(categoryName); + TableHeaderResultDTO houseType=new TableHeaderResultDTO(); houseType.setItemType("input"); houseType.setItemId(StrConstant.EPMETY_STR); @@ -153,4 +162,13 @@ public class IcFormItemServiceImpl extends BaseServiceImpl getMustColumn(String customerId) { + return baseDao.getMustColumn(customerId); + } + } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml index e8e67a4ba3..61a1c155c9 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml +++ b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml @@ -141,4 +141,21 @@ AND m.CUSTOMER_ID = #{customerId} AND m.FORM_CODE = #{formCode} + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiUserPageFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiUserPageFormDTO.java index 44eb3bf105..bf75ed325f 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiUserPageFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiUserPageFormDTO.java @@ -34,5 +34,8 @@ public class IcResiUserPageFormDTO implements Serializable { */ private List conditions; private Boolean pageFlag; + + @NotBlank(message = "当前用户id不能为空", groups = AddUserInternalGroup.class) + private String staffId; } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java index 22a6fc3c41..ae4082c383 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java @@ -52,7 +52,10 @@ public class PersonDataResultDTO implements Serializable { /** * 志愿者类别 */ - private String volunteerCategory; + private List volunteerCategory; + + @JsonIgnore + private List volunteerCategoryEn; public PersonDataResultDTO() { this.workUnit = ""; @@ -61,7 +64,7 @@ public class PersonDataResultDTO implements Serializable { this.name = ""; this.financialSituation = new FinancialSituationDTO(); this.houseInfo = new ArrayList<>(); - this.volunteerCategory = ""; + this.volunteerCategory = new ArrayList<>(); } /** 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 8310f0aa25..a1e725dd10 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 @@ -307,6 +307,7 @@ public class IcResiUserController { public Result>> queryListResi1(@LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO){ //pageFormDTO.setCustomerId("45687aa479955f9d06204d415238f7cc"); pageFormDTO.setCustomerId(tokenDto.getCustomerId()); + pageFormDTO.setStaffId(tokenDto.getUserId()); ValidatorUtils.validateEntity(pageFormDTO,IcResiUserPageFormDTO.AddUserInternalGroup.class); return new Result>>().ok(icResiUserService.pageResiMap(pageFormDTO)); } @@ -328,45 +329,57 @@ public class IcResiUserController { @RequestMapping(value = "/exportExcel") public void exportExcel(/*@LoginUser TokenDto tokenDto,*/ @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws IOException { - pageFormDTO.setCustomerId("45687aa479955f9d06204d415238f7cc"); pageFormDTO.setPageFlag(false); CustomerFormResultDTO resiFormItems = getResiFormItems(pageFormDTO.getCustomerId()); - Map itemMap = new HashMap<>(); + Map> otherSheetItems = new HashMap<>(); + + //主表的 for (FormItem formItem : resiFormItems.getItemList()) { - if (StringUtils.isNotBlank(formItem.getColumnName())){ + if (StringUtils.isBlank(formItem.getColumnName())){ continue; } - if (formItem.getItemType().equals("checkbox") || formItem.getItemType().equals("select")){ + + Map itemMap = otherSheetItems.getOrDefault(formItem.getTableName(),new HashMap<>()); + otherSheetItems.putIfAbsent(formItem.getTableName(),itemMap); + if (formItem.getItemType().equals("checkbox") || formItem.getItemType().equals("select") || formItem.getItemType().equals("radio")){ itemMap.put(formItem.getColumnName().concat(formItem.getColumnNum() == 0 ? "" : formItem.getColumnNum().toString()), formItem); } if (formItem.getChildGroup() != null) { + itemMap = otherSheetItems.getOrDefault(formItem.getChildGroup().getTableName(),new HashMap<>()); + otherSheetItems.putIfAbsent(formItem.getChildGroup().getTableName(),itemMap); for (FormItem2 item2 : formItem.getChildGroup().getItemList()) { - if (StringUtils.isNotBlank(item2.getColumnName())){ + if (StringUtils.isBlank(item2.getColumnName())){ continue; } - if (item2.getItemType().equals("checkbox") || item2.getItemType().equals("select")){ + + if (item2.getItemType().equals("checkbox") || item2.getItemType().equals("select") || item2.getItemType().equals("radio")){ itemMap.put(item2.getColumnName().concat(item2.getColumnNum() == 0 ? "" : item2.getColumnNum().toString()), ConvertUtils.sourceToTarget(item2,FormItem.class)); } } } } + //其他sheet + for (FormGroupDTO groupItem : resiFormItems.getGroupList()) { - if (groupItem.getItemList() != null) { - for (FormItem2 item : groupItem.getItemList()) { - if (StringUtils.isNotBlank(item.getColumnName())){ - continue; - } - if (item.getItemType().equals("checkbox") || item.getItemType().equals("select")){ - itemMap.put(item.getColumnName().concat(item.getColumnNum() == 0 ? "" : item.getColumnNum().toString()), ConvertUtils.sourceToTarget(item, FormItem.class)); - } + if (groupItem.getItemList() == null) { + continue; + } + Map itemMap = otherSheetItems.getOrDefault(groupItem.getTableName(),new HashMap<>()); + otherSheetItems.putIfAbsent(groupItem.getTableName(),itemMap); + for (FormItem2 formItem2 : groupItem.getItemList()) { + if (StringUtils.isBlank(formItem2.getColumnName())) { + continue; + } + if (formItem2.getItemType().equals("checkbox") || formItem2.getItemType().equals("select")|| formItem2.getItemType().equals("radio")) { + itemMap.put(formItem2.getColumnName().concat(formItem2.getColumnNum() == 0 ? "" : formItem2.getColumnNum().toString()), ConvertUtils.sourceToTarget(formItem2, FormItem.class)); } } } - System.out.println("checkbox:"+JSON.toJSONString(itemMap)); - Map> resiMainList = icResiUserService.getDataForExport(itemMap,pageFormDTO.getCustomerId(), pageFormDTO.getFormCode(), BASE_TABLE_NAME, pageFormDTO.getConditions()); + + Map> resiMainList = icResiUserService.getDataForExport(otherSheetItems.get(BASE_TABLE_NAME),pageFormDTO.getCustomerId(), pageFormDTO.getFormCode(), BASE_TABLE_NAME, pageFormDTO.getConditions()); //resiMainList = (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("resiMainList:{}", JSON.toJSONString(resiMainList)); String templatePath = "excel/ic_resi_info_cid.xls"; @@ -379,21 +392,14 @@ public class IcResiUserController { AtomicInteger n = new AtomicInteger(); for (FormItem item : resiFormItems.getItemList()) { - if (item.getChildGroup() != null) { if (!item.getChildGroup().getTableName().equals(BASE_TABLE_NAME)) { - //itemMap = item.getChildGroup().getItemList().stream().filter(o -> o.getItemType().equals("checkbox")).collect(Collectors.toMap(o -> o.getColumnName().concat(o.getColumnNum() == 0 ? "" : o.getColumnNum().toString()), o -> ConvertUtils.sourceToTarget(o,FormItem.class))); - - - - Map> resiChildMap = icResiUserService.getDataForExport(itemMap, pageFormDTO.getCustomerId(), pageFormDTO.getFormCode(), item.getChildGroup().getTableName(), pageFormDTO.getConditions()); - resiChildMap.forEach((key,value)->{ - value.putAll(resiMainList.get(key)); - }); + Map itemMap1 = otherSheetItems.get(item.getChildGroup().getTableName()); + Map> resiChildMap = icResiUserService.getDataForExport(itemMap1, pageFormDTO.getCustomerId(), pageFormDTO.getFormCode(), item.getChildGroup().getTableName(), pageFormDTO.getConditions()); + resiChildMap.forEach((key,value)-> value.putAll(resiMainList.get(key))); Map mapData2 = new HashMap<>(); mapData2.put("list", resiChildMap.values()); - System.out.println("========="+item.getChildGroup().getTableName()+" data:"+resiChildMap.size()); sheetMap.put(n.incrementAndGet(),mapData2); } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java index 329447a24f..45e31dd726 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java @@ -28,6 +28,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; +import java.util.Set; /** * 用户基础信息 @@ -54,7 +55,9 @@ public interface IcResiUserDao extends BaseDao { @Param("formCode") String formCode, @Param("conditions") List conditions, @Param("resultColumns") List resultColumns, - @Param("subTables") List subTables); + @Param("subTables") List subTables, + @Param("currentStaffAgencyId")String currentStaffAgencyId, + @Param("staffOrgPath") String staffOrgPath); /** * 查询主表 * @@ -115,4 +118,7 @@ public interface IcResiUserDao extends BaseDao { */ List searchByName(@Param("name")String name, @Param("agencyId")String agencyId,@Param("pageNo")Integer pageNo); + Set selectUserDemandCode(String icResiUserId); + + String selectCategoryNames(@Param("customerId") String customerId,@Param("codeSet") Set codeSet); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index 7bb1faee36..796c7ff032 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -92,10 +92,10 @@ public class IcResiUserServiceImpl extends BaseServiceImpl page(Map params) { IPage page = baseDao.selectPage( @@ -162,6 +162,28 @@ public class IcResiUserServiceImpl extends BaseServiceImpl formDTO) { //循环自动拼接sql语句,往多个表新增数据 + //0.校验必填字段是否为空 + Result> resultList = operCustomizeOpenFeignClient.getMustColumn(tokenDto.getCustomerId()); + if (resultList.success() && null != resultList.getData()) { + StringBuffer str = new StringBuffer(""); + formDTO.forEach(f -> { + resultList.getData().forEach(l -> { + if (f.getTableName().equals(l.getTableName())) { + f.getList().forEach(map -> { + if (!map.containsKey(l.getColumnName())) { + str.append(str.length() < NumConstant.ONE ? l.getLabel() : "、" + l.getLabel()); + } + }); + } + }); + }); + if (str.length() > NumConstant.ZERO ) { + throw new RenException(String.format("新增居民信息,必要字段值为空,%s值为空", str)); + } + } else { + throw new RenException(String.format("新增居民信息-根据客户Id查询必填信息失败,customerId->%s", tokenDto.getCustomerId())); + } + //1.先往主表新增数据 //主表Id String resiUserId = UUID.randomUUID().toString().replaceAll("-", ""); @@ -293,6 +315,12 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> pageResiMap(IcResiUserPageFormDTO formDTO) { + CustomerStaffInfoCacheResult staffInfoCacheResult=CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(),formDTO.getStaffId()); + String staffOrgPath=StrConstant.EPMETY_STR; + if(StringUtils.isNotBlank(staffInfoCacheResult.getAgencyPIds())&& !NumConstant.ZERO_STR.equals(staffInfoCacheResult.getAgencyPIds())){ + staffOrgPath=staffInfoCacheResult.getAgencyPIds().concat(":").concat(staffInfoCacheResult.getAgencyId()); + } + // 查询列表展示项,如果没有,直接返回 CustomerFormQueryDTO queryDTO1=new CustomerFormQueryDTO(); queryDTO1.setCustomerId(formDTO.getCustomerId()); @@ -309,18 +337,22 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> pageInfo=new PageInfo<>(); if (null == formDTO.getPageFlag()||formDTO.getPageFlag()) { //分页 + String finalStaffOrgPath = staffOrgPath; pageInfo= PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.selectListResiMap(formDTO.getCustomerId(), formDTO.getFormCode(), formDTO.getConditions(), resultColumns, - subTables)); + subTables, + staffInfoCacheResult.getAgencyId(), finalStaffOrgPath + )); }else{ List> list=baseDao.selectListResiMap(formDTO.getCustomerId(), formDTO.getFormCode(), formDTO.getConditions(), resultColumns, - subTables); + subTables,staffInfoCacheResult.getAgencyId(), + staffOrgPath); pageInfo.setTotal(CollectionUtils.isEmpty(list)?NumConstant.ZERO:list.size()); pageInfo.setList(list); } @@ -380,8 +412,9 @@ public class IcResiUserServiceImpl extends BaseServiceImpl(pageInfo.getList(), pageInfo.getTotal()); } + private String queryUserDemandName(String customerId,String icResiUserId) { + Set demandCodePath=baseDao.selectUserDemandCode(icResiUserId); + if(CollectionUtils.isEmpty(demandCodePath)){ + return StrConstant.EPMETY_STR; + } + Set codeSet=new HashSet<>(); + for(String codePath:demandCodePath){ + if(codePath.contains(StrConstant.COMMA)){ + String[] codeAtt=codePath.split(StrConstant.COMMA); + codeSet.add(codeAtt[codeAtt.length-1]); + }else{ + codeSet.add(codePath); + } + } + String demandName=baseDao.selectCategoryNames(customerId,codeSet); + return demandName; + } + /** * 编辑页面,显示居民信息详情 * @@ -435,9 +486,12 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> headList = readListener.getHeadList(); List> dataList = readListener.getDataList(); @@ -458,10 +521,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> headers = mergeHead(headList); // 查询form相关信息 - CustomerFormQueryDTO form = new CustomerFormQueryDTO(); - form.setFormCode("resi_base_info"); - Result> result = operCustomizeOpenFeignClient.listItems(form); - List customerItems = getResultDataOrThrowsException(result, ServiceConstant.OPER_CUSTOMIZE_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【居民信息excel导入】查询表单相关信息失败"); + List customerItems = listFormItems("resi_base_info"); // 清洗表头数据 Map abandonedHeaders = washHeaders(headers, customerItems); @@ -481,12 +541,57 @@ public class IcResiUserServiceImpl extends BaseServiceImpl formItem) ); - Map headerColumnWrapper = integrate(formItemMap, combinedHeaders, dataList, abandonedHeaders); + Map headerColumnWrapper = convertExcelHeaders2DBColumnWrappers(formItemMap, combinedHeaders, dataList, abandonedHeaders); // 持久化 persist(headerColumnWrapper, dataList, currUserAgencyId, abandonedHeaders, customerItems.get(0).getTableName(), currUserAgencyPids, currentUserId); - return headerColumnWrapper; + return headers; + } + + /** + * excel导入居民附加信息 + * @param excelPathName + * @param sheetNo + * @param headRowNumber + * @param currUserAgencyId + * @param currUserAgencyPids + * @param currentUserId + * @return + */ + private Object importIcResiExtraInfoFromExcel(String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currUserAgencyPids, String currentUserId) { + DynamicEasyExcelListener readListener = new DynamicEasyExcelListener(); + EasyExcelFactory.read(new File(excelPathName)).registerReadListener(readListener).headRowNumber(headRowNumber).sheet(sheetNo).doRead(); + + List> headList = readListener.getHeadList(); + List> dataList = readListener.getDataList(); + + Map> headers = mergeHead(headList); + + // 查询form相关信息 + List customerItems = listFormItems("resi_base_info"); + + // 清洗表头数据 + Map abandonedHeaders = washHeaders(headers, customerItems); + + //合并多级表头 + HashMap> combinedHeaders = combineHeaders(headers); + + // 得到客户配置item数据 + Map formItemMap = customerItems.stream().collect( + Collectors.toMap(formItem -> { + String groupLabel = formItem.getGroupLabel(); + String label = formItem.getLabel(); + if (StringUtils.isNotBlank(groupLabel)) { + return groupLabel.concat(":").concat(label); + } else { + return label; + } + }, formItem -> formItem) + ); + Map headerColumnWrapper = convertExcelHeaders2DBColumnWrappers(formItemMap, combinedHeaders, dataList, abandonedHeaders); + + return formItemMap; } /** @@ -496,11 +601,11 @@ public class IcResiUserServiceImpl extends BaseServiceImpl headerColumnWrapper, List> dataRows, + private void persist(Map headerColumnWrapper, List> dataRows, String currUserAgencyId, Map checkBoxOptionColumnIdxAndLabel, String tableName, String currUserAgencyPids, String currentUserId) { for (Map row : dataRows) { - + // 当前行的列们 // List columnsOfCurrRow = new ArrayList<>(); @@ -556,7 +661,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl listFormItems(String formCode) { + CustomerFormQueryDTO form = new CustomerFormQueryDTO(); + form.setFormCode(formCode); + Result> result = operCustomizeOpenFeignClient.listItems(form); + return getResultDataOrThrowsException(result, ServiceConstant.OPER_CUSTOMIZE_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【居民信息excel导入】查询表单相关信息失败"); + } + /** * @description 合并头 * @@ -626,14 +743,21 @@ public class IcResiUserServiceImpl extends BaseServiceImpl integrate(Map formItemMap, Map> combinedHeaders, - List> datas, Map abandonedHeaders) { + private Map convertExcelHeaders2DBColumnWrappers(Map formItemMap, Map> combinedHeaders, + List> datas, Map abandonedHeaders) { // HashMap> tables = new HashMap<>(); Map columns = new LinkedHashMap<>(combinedHeaders.size()); @@ -707,7 +831,9 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> * * @param headList * @return @@ -813,67 +942,42 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> mergeHead(List> headList) { - Map l1 = headList.get(0); - Map l2 = headList.get(1); - Map l3 = headList.get(2); - - String l1LastHeadName = ""; - String l2LastHeadName = ""; - //Map resultMap = new HashMap<>(); - HashMap> result = new HashMap<>(); + Map lastNotNullHeads = new LinkedHashMap<>(); - for (Map.Entry entry : l1.entrySet()) { + Map> mergedHead = new LinkedHashMap<>(); - StringBuilder headerNameConcatStr = new StringBuilder(); + int levelCount = headList.size(); - Integer key = entry.getKey(); - String l1TempValue = entry.getValue(); + Map firstLevel = headList.get(0); - String l2TempValue = l2.get(key); - String l3TempValue = l3.get(key); + // 遍历所有列 + for (Map.Entry column : firstLevel.entrySet()) { + Integer columIndex = column.getKey(); - if (StringUtils.isNotBlank(l1TempValue)) { - l1LastHeadName = l1TempValue; - } - - if (StringUtils.isNotBlank(l2TempValue)) { - l2LastHeadName = l2TempValue; - } + List labels = new ArrayList<>(); - // 开始拼接 - if (StringUtils.isNotBlank(l3TempValue)) { - //headerNameConcatStr.append(l1LastHeadName).append(":").append(l2LastHeadName).append(":").append(l3TempValue); - //resultMap.put(key, headerNameConcatStr.toString()); - ArrayList parts = new ArrayList<>(); - parts.add(l1LastHeadName); - parts.add(l2LastHeadName); - parts.add(l3TempValue); - result.put(key, parts); - continue; - } + // 竖着遍历该列的所有行 + for (int currentLevel = 0; currentLevel < levelCount; currentLevel ++) { + String label = headList.get(currentLevel).get(columIndex); - if (StringUtils.isNotBlank(l2TempValue)) { - //headerNameConcatStr.append(l1LastHeadName).append(":").append(l2LastHeadName); - //resultMap.put(key, headerNameConcatStr.toString()); - ArrayList parts = new ArrayList<>(); - parts.add(l1LastHeadName); - parts.add(l2LastHeadName); - result.put(key, parts); - continue; - } + if (StringUtils.isNotBlank(label)) { + lastNotNullHeads.put(currentLevel, label); + } else { + if (currentLevel == 0 || StringUtils.isBlank(headList.get(currentLevel - 1).get(columIndex))) { + label = lastNotNullHeads.get(currentLevel); + } + } - if (StringUtils.isNotBlank(l1TempValue)) { - //headerNameConcatStr.append(l1LastHeadName); - //resultMap.put(key, headerNameConcatStr.toString()); - ArrayList parts = new ArrayList<>(); - parts.add(l1LastHeadName); - result.put(key, parts); - continue; + if (StringUtils.isNotBlank(label)) { + labels.add(label); + } } + mergedHead.put(columIndex, labels); } - return result; + + return mergedHead; } /** @@ -942,9 +1046,18 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> listResult = govOrgOpenFeignClient.selectHouseInfoByIdCard(personData.getIdCard()); + if (!listResult.success()){ + throw new RenException("查询房屋信息失败"); + } + personData.setHouseInfo(listResult.getData()); // TODO - return null; + return personData; } /** @@ -986,28 +1099,53 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> getDataForExport(Map formItemMap, String customerId, String formCode, String baseTableName, List conditions) { List> mapList = this.dynamicQuery(customerId, formCode, baseTableName, conditions); - + System.out.println("======remote:"+baseTableName+" "+JSON.toJSONString(formItemMap)); Map> result = new LinkedHashMap<>(); mapList.stream().filter(Objects::nonNull).forEach(map -> { String resiId = (String) map.getOrDefault(UserConstant.IC_RESI_USER, ""); - formItemMap.forEach((k, v)->{ + for (Map.Entry e : formItemMap.entrySet()) { + String k = e.getKey(); + FormItem v = e.getValue(); Object temp = map.get(k); if (temp != null) { if (v.getOptionSourceType().equals("remote")) { - //todo 获取 options - } - if (v.getItemType().equals("checkbox")) { - v.getOptions().forEach(optionDTO -> { - map.put(optionDTO.getValue(), temp.toString().contains(optionDTO.getValue()) ? "是" : "否"); - }); - } else if (v.getItemType().equals("select")) { - v.getOptions().forEach(optionDTO -> { - map.put(optionDTO.getValue(), temp.toString().equals(optionDTO.getValue()) ? optionDTO.getLabel() : ""); - }); + try { + //todo 获取 options + Map stringMap = listRemoteOptions(new HashMap<>(), v.getOptionSourceValue(), null); + if ("checkbox".equals(v.getItemType())) { + stringMap.forEach((label, value) -> map.put(value, temp.toString().contains(value) ? "是" : "否")); + } else if ("select".equals(v.getItemType())) { + stringMap.forEach((label,value)->{ + if (temp.toString().equals(value)){ + map.put(k, label); + } + }); + } + } catch (Exception ex) { + log.warn("listRemoteOptions url:{}",v.getOptionSourceValue()); + } + } else { + if ("checkbox".equals(v.getItemType())) { + v.getOptions().forEach(optionDTO -> { + map.put(optionDTO.getValue(), temp.toString().contains(optionDTO.getValue()) ? "是" : "否"); + }); + } else if ("select".equals(v.getItemType())) { + v.getOptions().forEach(optionDTO -> { + if (optionDTO.getValue().equals(temp.toString())){ + map.put(k, optionDTO.getLabel()); + } + }); + } else if ("radio".equals(v.getItemType())) { + v.getOptions().forEach(optionDTO -> { + if (optionDTO.getValue().equals(temp.toString())){ + map.put(k, optionDTO.getLabel()); + } + }); + } } } - }); + } if ("ic_resi_user".equals(baseTableName)) { resiId = (String) map.get("ID"); } @@ -1038,9 +1176,9 @@ public class IcResiUserServiceImpl extends BaseServiceImpl - + diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml index 12b430d2f3..b3fce33028 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml @@ -44,8 +44,36 @@ select * from ${subTableName} where del_flag='0' and IC_RESI_USER=#{icResiUserId} and customer_id=#{customerId} + + + ic_resi_user.DEL_FLAG = '0' + and ic_resi_user.customer_id=#{customerId} + and (ic_resi_user.AGENCY_ID =#{currentStaffAgencyId} or ic_resi_user.pids like concat(#{staffOrgPath},'%')) + + + + + + + and ${subCondition.tableName}.${subCondition.columnName} = #{subCondition.columnValue[0]} + + + + + + and ${subCondition.tableName}.${subCondition.columnName} like concat('%',#{subCondition.columnValue[0]},'%') + + + + + and ${subCondition.tableName}.${subCondition.columnName} between #{subCondition.columnValue[0]} and #{subCondition.columnValue[1]} + + + + + - + ic_resi_user.DEL_FLAG = '0' and ic_resi_user.customer_id=#{customerId} @@ -54,11 +82,15 @@ - and ${subCondition.tableName}.${subCondition.columnName} = #{subCondition.columnValue[0]} + + and ${subCondition.tableName}.${subCondition.columnName} = #{subCondition.columnValue[0]} + - and ${subCondition.tableName}.${subCondition.columnName} like concat('%',#{subCondition.columnValue[0]},'%') + + and ${subCondition.tableName}.${subCondition.columnName} like concat('%',#{subCondition.columnValue[0]},'%') + @@ -73,12 +105,10 @@ + + + + \ No newline at end of file