Browse Source

Merge remote-tracking branch 'origin/develop' into release_temp

dev_shibei_match
yinzuomei 4 years ago
parent
commit
7e53dd90eb
  1. 2
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/IcResiUserAddMQMsg.java
  2. 58
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RelationshipEnum.java
  3. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  4. 8
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
  5. 3
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java
  6. 5
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java
  7. 116
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/IcResiCategoryStatsConfigDTO.java
  8. 111
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/IcResiCategoryWarnConfigDTO.java
  9. 80
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcResiCategoryStatsConfigFormDTO.java
  10. 51
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcResiCategoryStatsConfigSortFormDTO.java
  11. 88
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcResiCategoryStatsConfigResultDTO.java
  12. 26
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/constant/IcResiCategoryStatsConfigConstant.java
  13. 94
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcResiCategoryStatsConfigController.java
  14. 94
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcResiCategoryWarnConfigController.java
  15. 107
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/ResiCategoryStatsConfigController.java
  16. 33
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcResiCategoryStatsConfigDao.java
  17. 33
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcResiCategoryWarnConfigDao.java
  18. 83
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/IcResiCategoryStatsConfigEntity.java
  19. 81
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/IcResiCategoryWarnConfigEntity.java
  20. 83
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/excel/IcResiCategoryStatsConfigExcel.java
  21. 80
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/excel/IcResiCategoryWarnConfigExcel.java
  22. 24
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/redis/CustomerFootBarRedis.java
  23. 47
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/redis/IcResiCategoryStatsConfigRedis.java
  24. 47
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/redis/IcResiCategoryWarnConfigRedis.java
  25. 95
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcResiCategoryStatsConfigService.java
  26. 95
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcResiCategoryWarnConfigService.java
  27. 48
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/ResiCategoryStatsConfigService.java
  28. 4
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormServiceImpl.java
  29. 104
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcResiCategoryStatsConfigServiceImpl.java
  30. 104
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcResiCategoryWarnConfigServiceImpl.java
  31. 264
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/ResiCategoryStatsConfigServiceImpl.java
  32. 26
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcResiCategoryStatsConfigDao.xml
  33. 25
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcResiCategoryWarnConfigDao.xml
  34. 29
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/OwnerRelationResultDTO.java
  35. 29
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
  36. 4
      epmet-user/epmet-user-server/src/main/java/com/epmet/mq/listener/ICWarnStatsEventListener.java
  37. 12
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java
  38. 15
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java
  39. 718
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java
  40. 609
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

2
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/IcWarnStatsMQMsg.java → epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/IcResiUserAddMQMsg.java

@ -9,7 +9,7 @@ import java.io.Serializable;
* @author sun
*/
@Data
public class IcWarnStatsMQMsg implements Serializable {
public class IcResiUserAddMQMsg implements Serializable {
//客户Id
private String customerId;

58
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RelationshipEnum.java

@ -0,0 +1,58 @@
package com.epmet.commons.tools.enums;
/**
* @author Administrator
*/
public enum RelationshipEnum {
/**
* 环境变量枚举
*/
UN_KNOWN("0", "暂不清楚", 0),
SELF("1", "本人", 1),
spouse("2", "配偶", 2),
CHILD("3", "子女", 3),
PARENT("4", "父母", 4),
PARENT_IN_LAW("5", "岳父母或公婆", 5),
GRANDPARENT_IN_LAW("6", "祖父母", 6),
CHILD_IN_LAW("7", "媳婿", 7),
GRANDCHILD("8", "孙子女", 8),
BROTHER_AND_SISTER("9", "兄弟姐妹", 9),
OTHER("10", "其他", 10),
;
private final String code;
private final String name;
private final Integer sort;
RelationshipEnum(String code, String name, Integer sort) {
this.code = code;
this.name = name;
this.sort = sort;
}
public static RelationshipEnum getEnum(String code) {
RelationshipEnum[] values = RelationshipEnum.values();
for (RelationshipEnum value : values) {
if (value.getCode().equals(code)) {
return value;
}
}
return RelationshipEnum.UN_KNOWN;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
public Integer getSort(){
return sort;
}
}

2
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -78,6 +78,8 @@ public enum EpmetErrorCode {
HAVE_GUIDE_CANNOT_DEL(8211,"当前分类已经存在办事指南,不允许删除"),
GUIDE_CATEGORY_NAME_EXITS(8212,"分类已存在"),
CUSTOMER_FORM_NOT_EXITS(8213,"客户未配置表单"),
RESI_NOT_FOUND(8214,"居民信息找不到"),
REQUIRE_PERMISSION(8301, "您没有足够的操作权限"),
THIRD_PLAT_REQUEST_ERROR(8302, "请求第三方平台错误"),

8
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java

@ -587,7 +587,11 @@ public class RedisKeys {
* @param customerId
* @return
*/
public static String getIcFormKey(String formCode,String customerId) {
return rootPrefix.concat("icform:").concat(formCode).concat(":").concat(customerId);
public static String getIcFormKeyForAdd(String formCode,String customerId) {
return rootPrefix.concat("icform:").concat(formCode).concat(":add:").concat(customerId);
}
public static String getIcFormKeyForExport(String formCode,String customerId) {
return rootPrefix.concat("icform:").concat(formCode).concat(":export:").concat(customerId);
}
}

3
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java

@ -516,4 +516,7 @@ public interface GovOrgOpenFeignClient {
*/
@PostMapping("/gov/org/ichouse/selecthouseinfobyidcard")
Result<List<String>> selectHouseInfoByIdCard(@RequestParam("idCard")String idCard);
@GetMapping("/gov/org/ichouse/{id}")
Result<IcHouseDTO> get(@PathVariable("id") String id);
}

5
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java

@ -310,6 +310,11 @@ public class GovOrgOpenFeignClientFallback implements GovOrgOpenFeignClient {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "selectHouseInfoByIdCard", idCard);
}
@Override
public Result<IcHouseDTO> get(String id) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "get", id);
}
@Override
public Result<String> selectPidsByGridId(String gridId) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "selectPidsByGridId", gridId);

116
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/IcResiCategoryStatsConfigDTO.java

@ -0,0 +1,116 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 居民类别配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
@Data
public class IcResiCategoryStatsConfigDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* 客户id
*/
private String customerId;
/**
* 项标签
*/
private String label;
/**
* 表名
*/
private String tableName;
/**
* 列名
*/
private String columnName;
/**
* 管理平台分类图标
*/
private String managementIcon;
/**
* 数据平台分类图标
*/
private String dataIcon;
/**
* 房屋显示分类图标
*/
private String houseShowIcon;
/**
* 状态 显示show隐藏hidden
*/
private String status;
/**
* 排序
*/
private Integer sort;
/**
* 删除标识:0.未删除 1.已删除
*/
private String delFlag;
/**
* 乐观锁
*/
private String revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private String createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

111
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/IcResiCategoryWarnConfigDTO.java

@ -0,0 +1,111 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 居民类别预警配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
@Data
public class IcResiCategoryWarnConfigDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* 客户id
*/
private String customerId;
/**
* 项标签
*/
private String label;
/**
* 表名
*/
private String tableName;
/**
* 列名
*/
private String columnName;
/**
* 排序
*/
private Integer sort;
/**
* 等级1阈值
*/
private Integer level1;
/**
* 等级2阈值
*/
private Integer level2;
/**
* 等级3阈值
*/
private Integer level3;
/**
* 删除标识:0.未删除 1.已删除
*/
private String delFlag;
/**
* 乐观锁
*/
private String revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private String createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

80
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcResiCategoryStatsConfigFormDTO.java

@ -0,0 +1,80 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;
/**
* 居民类别配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
@Data
public class IcResiCategoryStatsConfigFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
public interface UpdateStatusGroup {}
public interface SelectGroup {}
/**
* id
*/
@NotBlank(message = "配置项id不能为空",groups = {UpdateGroup.class,UpdateStatusGroup.class,SelectGroup.class})
private String id;
/**
* 管理平台分类图标
*/
@NotBlank(message = "管理平台分类图标不能为空",groups = {UpdateGroup.class})
private String managementIcon;
/**
* 数据平台分类图标
*/
@NotBlank(message = "管理平台分类图标不能为空",groups = {UpdateGroup.class})
private String dataIcon;
/**
* 房屋显示分类图标
*/
@NotBlank(message = "管理平台分类图标不能为空",groups = {UpdateGroup.class})
private String houseShowIcon;
/**
* 状态 显示show隐藏hidden
*/
@NotBlank(message = "状态不能为空",groups = {UpdateStatusGroup.class})
private String status;
@NotBlank(message = "是否预警",groups = {UpdateGroup.class})
private String warn;
private Integer level1;
private Integer level2;
private Integer level3;
}

51
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcResiCategoryStatsConfigSortFormDTO.java

@ -0,0 +1,51 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 居民类别配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
@Data
public class IcResiCategoryStatsConfigSortFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@NotBlank(message = "配置项id不能为空")
private String id;
/**
* 排序
*/
@NotBlank(message = "排序不能为空")
private Integer sort;
}

88
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcResiCategoryStatsConfigResultDTO.java

@ -0,0 +1,88 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 居民类别配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
@Data
public class IcResiCategoryStatsConfigResultDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* 项标签
*/
private String label;
/**
* 管理平台分类图标
*/
private String managementIcon;
/**
* 数据平台分类图标
*/
private String dataIcon;
/**
* 房屋显示分类图标
*/
private String houseShowIcon;
/**
* 状态 显示show隐藏hidden
*/
private String status;
/**
* 排序
*/
private Integer sort;
private String warn;
/**
* 等级1阈值
*/
private Integer level1;
/**
* 等级2阈值
*/
private Integer level2;
/**
* 等级3阈值
*/
private Integer level3;
}

26
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/constant/IcResiCategoryStatsConfigConstant.java

@ -0,0 +1,26 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
* <p>
* https://www.renren.io
* <p>
* 版权所有侵权必究
*/
package com.epmet.constant;
/**
* 常量
* @author sun
* @since 1.0.0
*/
public interface IcResiCategoryStatsConfigConstant {
/**
* 是否需要预警
*/
String WARN_YES = "1";
String WARN_NO = "0";
String IC_RESI_USER = "ic_resi_user";
}

94
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcResiCategoryStatsConfigController.java

@ -0,0 +1,94 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.controller;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
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.commons.tools.validator.group.DefaultGroup;
import com.epmet.dto.IcResiCategoryStatsConfigDTO;
import com.epmet.excel.IcResiCategoryStatsConfigExcel;
import com.epmet.service.IcResiCategoryStatsConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 居民类别配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
@RestController
@RequestMapping("icresicategorystatsconfig")
public class IcResiCategoryStatsConfigController {
@Autowired
private IcResiCategoryStatsConfigService icResiCategoryStatsConfigService;
@GetMapping("page")
public Result<PageData<IcResiCategoryStatsConfigDTO>> page(@RequestParam Map<String, Object> params){
PageData<IcResiCategoryStatsConfigDTO> page = icResiCategoryStatsConfigService.page(params);
return new Result<PageData<IcResiCategoryStatsConfigDTO>>().ok(page);
}
@GetMapping("{id}")
public Result<IcResiCategoryStatsConfigDTO> get(@PathVariable("id") String id){
IcResiCategoryStatsConfigDTO data = icResiCategoryStatsConfigService.get(id);
return new Result<IcResiCategoryStatsConfigDTO>().ok(data);
}
@PostMapping
public Result save(@RequestBody IcResiCategoryStatsConfigDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
icResiCategoryStatsConfigService.save(dto);
return new Result();
}
@PutMapping
public Result update(@RequestBody IcResiCategoryStatsConfigDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
icResiCategoryStatsConfigService.update(dto);
return new Result();
}
@DeleteMapping
public Result delete(@RequestBody String[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
icResiCategoryStatsConfigService.delete(ids);
return new Result();
}
@GetMapping("export")
public void export(@RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<IcResiCategoryStatsConfigDTO> list = icResiCategoryStatsConfigService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, IcResiCategoryStatsConfigExcel.class);
}
}

94
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcResiCategoryWarnConfigController.java

@ -0,0 +1,94 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.controller;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
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.commons.tools.validator.group.DefaultGroup;
import com.epmet.dto.IcResiCategoryWarnConfigDTO;
import com.epmet.excel.IcResiCategoryWarnConfigExcel;
import com.epmet.service.IcResiCategoryWarnConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 居民类别预警配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
@RestController
@RequestMapping("icresicategorywarnconfig")
public class IcResiCategoryWarnConfigController {
@Autowired
private IcResiCategoryWarnConfigService icResiCategoryWarnConfigService;
@GetMapping("page")
public Result<PageData<IcResiCategoryWarnConfigDTO>> page(@RequestParam Map<String, Object> params){
PageData<IcResiCategoryWarnConfigDTO> page = icResiCategoryWarnConfigService.page(params);
return new Result<PageData<IcResiCategoryWarnConfigDTO>>().ok(page);
}
@GetMapping("{id}")
public Result<IcResiCategoryWarnConfigDTO> get(@PathVariable("id") String id){
IcResiCategoryWarnConfigDTO data = icResiCategoryWarnConfigService.get(id);
return new Result<IcResiCategoryWarnConfigDTO>().ok(data);
}
@PostMapping
public Result save(@RequestBody IcResiCategoryWarnConfigDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
icResiCategoryWarnConfigService.save(dto);
return new Result();
}
@PutMapping
public Result update(@RequestBody IcResiCategoryWarnConfigDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
icResiCategoryWarnConfigService.update(dto);
return new Result();
}
@DeleteMapping
public Result delete(@RequestBody String[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
icResiCategoryWarnConfigService.delete(ids);
return new Result();
}
@GetMapping("export")
public void export(@RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<IcResiCategoryWarnConfigDTO> list = icResiCategoryWarnConfigService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, IcResiCategoryWarnConfigExcel.class);
}
}

107
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/ResiCategoryStatsConfigController.java

@ -0,0 +1,107 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
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.AssertUtils;
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.IcResiCategoryStatsConfigDTO;
import com.epmet.dto.form.IcResiCategoryStatsConfigFormDTO;
import com.epmet.dto.form.IcResiCategoryStatsConfigSortFormDTO;
import com.epmet.dto.form.UpGovRoleFormDTO;
import com.epmet.dto.result.IcResiCategoryStatsConfigResultDTO;
import com.epmet.excel.IcResiCategoryStatsConfigExcel;
import com.epmet.service.IcResiCategoryStatsConfigService;
import com.epmet.service.ResiCategoryStatsConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 居民类别配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
@RestController
@RequestMapping("resicategorystatsconfig")
public class ResiCategoryStatsConfigController {
@Autowired
private IcResiCategoryStatsConfigService icResiCategoryStatsConfigService;
@Autowired
private ResiCategoryStatsConfigService resiCategoryStatsConfigService;
/**
* 居民类别配置列表
* @return
*/
@PostMapping("list")
public Result<List<IcResiCategoryStatsConfigResultDTO>> list(@LoginUser TokenDto tokenDTO){
String customerId = tokenDTO.getCustomerId();
// String customerId = "123123";
return new Result<List<IcResiCategoryStatsConfigResultDTO>>().ok(resiCategoryStatsConfigService.list(customerId));
}
@PostMapping("update")
public Result update(@LoginUser TokenDto tokenDTO,@RequestBody IcResiCategoryStatsConfigFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO, UpdateGroup.class);
String customerId = tokenDTO.getCustomerId();
// String customerId = "123123";
resiCategoryStatsConfigService.update(customerId,formDTO);
return new Result();
}
@PostMapping("updatestatus")
public Result updateStatus(@LoginUser TokenDto tokenDTO,@RequestBody IcResiCategoryStatsConfigFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO, IcResiCategoryStatsConfigFormDTO.UpdateStatusGroup.class);
String customerId = tokenDTO.getCustomerId();
// String customerId = "123123";
resiCategoryStatsConfigService.updateStatus(customerId,formDTO);
return new Result();
}
@PostMapping("updatesort")
public Result updateSort(@LoginUser TokenDto tokenDTO,@RequestBody List<IcResiCategoryStatsConfigSortFormDTO> formDTOs){
for(IcResiCategoryStatsConfigSortFormDTO dto : formDTOs){
ValidatorUtils.validateEntity(dto);
}
String customerId = tokenDTO.getCustomerId();
// String customerId = "123123";
resiCategoryStatsConfigService.updateSort(customerId,formDTOs);
return new Result();
}
@PostMapping("info")
public Result<IcResiCategoryStatsConfigResultDTO> info(@LoginUser TokenDto tokenDTO,@RequestBody IcResiCategoryStatsConfigFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO, IcResiCategoryStatsConfigFormDTO.SelectGroup.class);
return new Result<IcResiCategoryStatsConfigResultDTO>().ok(resiCategoryStatsConfigService.info(formDTO.getId()));
}
}

33
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcResiCategoryStatsConfigDao.java

@ -0,0 +1,33 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.IcResiCategoryStatsConfigEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 居民类别配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
@Mapper
public interface IcResiCategoryStatsConfigDao extends BaseDao<IcResiCategoryStatsConfigEntity> {
}

33
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcResiCategoryWarnConfigDao.java

@ -0,0 +1,33 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.IcResiCategoryWarnConfigEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 居民类别预警配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
@Mapper
public interface IcResiCategoryWarnConfigDao extends BaseDao<IcResiCategoryWarnConfigEntity> {
}

83
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/IcResiCategoryStatsConfigEntity.java

@ -0,0 +1,83 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 居民类别配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("ic_resi_category_stats_config")
public class IcResiCategoryStatsConfigEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户id
*/
private String customerId;
/**
* 项标签
*/
private String label;
/**
* 表名
*/
private String tableName;
/**
* 列名
*/
private String columnName;
/**
* 管理平台分类图标
*/
private String managementIcon;
/**
* 数据平台分类图标
*/
private String dataIcon;
/**
* 房屋显示分类图标
*/
private String houseShowIcon;
/**
* 状态 显示show隐藏hidden
*/
private String status;
/**
* 排序
*/
private Integer sort;
}

81
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/IcResiCategoryWarnConfigEntity.java

@ -0,0 +1,81 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 居民类别预警配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("ic_resi_category_warn_config")
public class IcResiCategoryWarnConfigEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户id
*/
private String customerId;
/**
* 项标签
*/
private String label;
/**
* 表名
*/
private String tableName;
/**
* 列名
*/
private String columnName;
/**
* 排序
*/
private Integer sort;
/**
* 等级1阈值
*/
private Integer level1;
/**
* 等级2阈值
*/
private Integer level2;
/**
* 等级3阈值
*/
private Integer level3;
}

83
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/excel/IcResiCategoryStatsConfigExcel.java

@ -0,0 +1,83 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.util.Date;
/**
* 居民类别配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
@Data
public class IcResiCategoryStatsConfigExcel {
@Excel(name = "id")
private String id;
@Excel(name = "客户id")
private String customerId;
@Excel(name = "项标签")
private String label;
@Excel(name = "表名")
private String tableName;
@Excel(name = "列名")
private String columnName;
@Excel(name = "管理平台分类图标")
private String managementIcon;
@Excel(name = "数据平台分类图标")
private String dataIcon;
@Excel(name = "房屋显示分类图标")
private String houseShowIcon;
@Excel(name = "状态 显示:show;隐藏:hidden")
private String status;
@Excel(name = "排序")
private Integer sort;
@Excel(name = "删除标识:0.未删除 1.已删除")
private String delFlag;
@Excel(name = "乐观锁")
private String revision;
@Excel(name = "创建人")
private String createdBy;
@Excel(name = "创建时间")
private String createdTime;
@Excel(name = "更新人")
private String updatedBy;
@Excel(name = "更新时间")
private Date updatedTime;
}

80
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/excel/IcResiCategoryWarnConfigExcel.java

@ -0,0 +1,80 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.util.Date;
/**
* 居民类别预警配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
@Data
public class IcResiCategoryWarnConfigExcel {
@Excel(name = "id")
private String id;
@Excel(name = "客户id")
private String customerId;
@Excel(name = "项标签")
private String label;
@Excel(name = "表名")
private String tableName;
@Excel(name = "列名")
private String columnName;
@Excel(name = "排序")
private Integer sort;
@Excel(name = "等级1阈值")
private Integer level1;
@Excel(name = "等级2阈值")
private Integer level2;
@Excel(name = "等级3阈值")
private Integer level3;
@Excel(name = "删除标识:0.未删除 1.已删除")
private String delFlag;
@Excel(name = "乐观锁")
private String revision;
@Excel(name = "创建人")
private String createdBy;
@Excel(name = "创建时间")
private String createdTime;
@Excel(name = "更新人")
private String updatedBy;
@Excel(name = "更新时间")
private Date updatedTime;
}

24
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/redis/CustomerFootBarRedis.java

@ -51,18 +51,32 @@ public class CustomerFootBarRedis {
}
public void deleteIcForm(String formCode,String customerId) {
String key = RedisKeys.getIcFormKey(formCode,customerId);
String key = RedisKeys.getIcFormKeyForAdd(formCode,customerId);
redisUtils.delete(key);
}
public void setCustomerFormResultDTO(String formCode,String customerId, CustomerFormResultDTO value){
String key = RedisKeys.getIcFormKey(formCode,customerId);
public void setCustomerFormResultDTO(String formCode,String customerId, CustomerFormResultDTO value,Boolean dynamic){
String key="";
if (null != dynamic && dynamic) {
//新增表单
key = RedisKeys.getIcFormKeyForAdd(formCode,customerId);
}else{
//导出
key = RedisKeys.getIcFormKeyForExport(formCode,customerId);
}
Map<String, Object> map = BeanUtil.beanToMap(value, false, true);
redisUtils.hMSet(key, map);
}
public CustomerFormResultDTO getCustomerFormResultDTO(String formCode,String customerId){
String key = RedisKeys.getIcFormKey(formCode,customerId);
public CustomerFormResultDTO getCustomerFormResultDTO(String formCode,String customerId,Boolean dynamic){
String key="";
if (null != dynamic && dynamic) {
//新增表单
key = RedisKeys.getIcFormKeyForAdd(formCode,customerId);
}else{
//导出
key = RedisKeys.getIcFormKeyForExport(formCode,customerId);
}
Map<String, Object> resultMap = redisUtils.hGetAll(key);
if (CollectionUtils.isEmpty(resultMap)) {
return null;

47
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/redis/IcResiCategoryStatsConfigRedis.java

@ -0,0 +1,47 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.redis;
import com.epmet.commons.tools.redis.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 居民类别配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
@Component
public class IcResiCategoryStatsConfigRedis {
@Autowired
private RedisUtils redisUtils;
public void delete(Object[] ids) {
}
public void set(){
}
public String get(String id){
return null;
}
}

47
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/redis/IcResiCategoryWarnConfigRedis.java

@ -0,0 +1,47 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.redis;
import com.epmet.commons.tools.redis.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 居民类别预警配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
@Component
public class IcResiCategoryWarnConfigRedis {
@Autowired
private RedisUtils redisUtils;
public void delete(Object[] ids) {
}
public void set(){
}
public String get(String id){
return null;
}
}

95
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcResiCategoryStatsConfigService.java

@ -0,0 +1,95 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.IcResiCategoryStatsConfigDTO;
import com.epmet.entity.IcResiCategoryStatsConfigEntity;
import java.util.List;
import java.util.Map;
/**
* 居民类别配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
public interface IcResiCategoryStatsConfigService extends BaseService<IcResiCategoryStatsConfigEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<IcResiCategoryStatsConfigDTO>
* @author generator
* @date 2021-11-04
*/
PageData<IcResiCategoryStatsConfigDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<IcResiCategoryStatsConfigDTO>
* @author generator
* @date 2021-11-04
*/
List<IcResiCategoryStatsConfigDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return IcResiCategoryStatsConfigDTO
* @author generator
* @date 2021-11-04
*/
IcResiCategoryStatsConfigDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2021-11-04
*/
void save(IcResiCategoryStatsConfigDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2021-11-04
*/
void update(IcResiCategoryStatsConfigDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2021-11-04
*/
void delete(String[] ids);
}

95
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcResiCategoryWarnConfigService.java

@ -0,0 +1,95 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.IcResiCategoryWarnConfigDTO;
import com.epmet.entity.IcResiCategoryWarnConfigEntity;
import java.util.List;
import java.util.Map;
/**
* 居民类别预警配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
public interface IcResiCategoryWarnConfigService extends BaseService<IcResiCategoryWarnConfigEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<IcResiCategoryWarnConfigDTO>
* @author generator
* @date 2021-11-04
*/
PageData<IcResiCategoryWarnConfigDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<IcResiCategoryWarnConfigDTO>
* @author generator
* @date 2021-11-04
*/
List<IcResiCategoryWarnConfigDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return IcResiCategoryWarnConfigDTO
* @author generator
* @date 2021-11-04
*/
IcResiCategoryWarnConfigDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2021-11-04
*/
void save(IcResiCategoryWarnConfigDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2021-11-04
*/
void update(IcResiCategoryWarnConfigDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2021-11-04
*/
void delete(String[] ids);
}

48
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/ResiCategoryStatsConfigService.java

@ -0,0 +1,48 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.IcResiCategoryStatsConfigDTO;
import com.epmet.dto.form.IcResiCategoryStatsConfigFormDTO;
import com.epmet.dto.form.IcResiCategoryStatsConfigSortFormDTO;
import com.epmet.dto.result.IcResiCategoryStatsConfigResultDTO;
import com.epmet.entity.IcResiCategoryStatsConfigEntity;
import java.util.List;
import java.util.Map;
/**
* 居民类别配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
public interface ResiCategoryStatsConfigService {
List<IcResiCategoryStatsConfigResultDTO> list(String customerId);
IcResiCategoryStatsConfigResultDTO info(String id);
void update(String customerId,IcResiCategoryStatsConfigFormDTO formDTO);
void updateStatus(String customerId,IcResiCategoryStatsConfigFormDTO formDTO);
void updateSort(String customerId,List<IcResiCategoryStatsConfigSortFormDTO> formDTOs);
}

4
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormServiceImpl.java

@ -116,7 +116,7 @@ public class IcFormServiceImpl extends BaseServiceImpl<IcFormDao, IcFormEntity>
*/
@Override
public CustomerFormResultDTO getCustomerForm(CustomerFormQueryDTO formDto) {
CustomerFormResultDTO customerFormResultDTO = customerFootBarRedis.getCustomerFormResultDTO(formDto.getFormCode(), formDto.getCustomerId());
CustomerFormResultDTO customerFormResultDTO = customerFootBarRedis.getCustomerFormResultDTO(formDto.getFormCode(), formDto.getCustomerId(),formDto.getDynamic());
if (null != customerFormResultDTO) {
return customerFormResultDTO;
}
@ -128,7 +128,7 @@ public class IcFormServiceImpl extends BaseServiceImpl<IcFormDao, IcFormEntity>
List<FormGroupDTO> groupList=baseDao.selectListGroup(resultDTO.getFormId());
resultDTO.setItemList(itemList);
resultDTO.setGroupList(groupList);
customerFootBarRedis.setCustomerFormResultDTO(formDto.getFormCode(),formDto.getCustomerId(),resultDTO);
customerFootBarRedis.setCustomerFormResultDTO(formDto.getFormCode(),formDto.getCustomerId(),resultDTO,formDto.getDynamic());
return resultDTO;
}

104
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcResiCategoryStatsConfigServiceImpl.java

@ -0,0 +1,104 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.dao.IcResiCategoryStatsConfigDao;
import com.epmet.dto.IcResiCategoryStatsConfigDTO;
import com.epmet.entity.IcResiCategoryStatsConfigEntity;
import com.epmet.redis.IcResiCategoryStatsConfigRedis;
import com.epmet.service.IcResiCategoryStatsConfigService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* 居民类别配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
@Service
public class IcResiCategoryStatsConfigServiceImpl extends BaseServiceImpl<IcResiCategoryStatsConfigDao, IcResiCategoryStatsConfigEntity> implements IcResiCategoryStatsConfigService {
@Autowired
private IcResiCategoryStatsConfigRedis icResiCategoryStatsConfigRedis;
@Override
public PageData<IcResiCategoryStatsConfigDTO> page(Map<String, Object> params) {
IPage<IcResiCategoryStatsConfigEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, IcResiCategoryStatsConfigDTO.class);
}
@Override
public List<IcResiCategoryStatsConfigDTO> list(Map<String, Object> params) {
List<IcResiCategoryStatsConfigEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, IcResiCategoryStatsConfigDTO.class);
}
private QueryWrapper<IcResiCategoryStatsConfigEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<IcResiCategoryStatsConfigEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public IcResiCategoryStatsConfigDTO get(String id) {
IcResiCategoryStatsConfigEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, IcResiCategoryStatsConfigDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(IcResiCategoryStatsConfigDTO dto) {
IcResiCategoryStatsConfigEntity entity = ConvertUtils.sourceToTarget(dto, IcResiCategoryStatsConfigEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(IcResiCategoryStatsConfigDTO dto) {
IcResiCategoryStatsConfigEntity entity = ConvertUtils.sourceToTarget(dto, IcResiCategoryStatsConfigEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
}

104
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcResiCategoryWarnConfigServiceImpl.java

@ -0,0 +1,104 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.dao.IcResiCategoryWarnConfigDao;
import com.epmet.dto.IcResiCategoryWarnConfigDTO;
import com.epmet.entity.IcResiCategoryWarnConfigEntity;
import com.epmet.redis.IcResiCategoryWarnConfigRedis;
import com.epmet.service.IcResiCategoryWarnConfigService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* 居民类别预警配置表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-11-04
*/
@Service
public class IcResiCategoryWarnConfigServiceImpl extends BaseServiceImpl<IcResiCategoryWarnConfigDao, IcResiCategoryWarnConfigEntity> implements IcResiCategoryWarnConfigService {
@Autowired
private IcResiCategoryWarnConfigRedis icResiCategoryWarnConfigRedis;
@Override
public PageData<IcResiCategoryWarnConfigDTO> page(Map<String, Object> params) {
IPage<IcResiCategoryWarnConfigEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, IcResiCategoryWarnConfigDTO.class);
}
@Override
public List<IcResiCategoryWarnConfigDTO> list(Map<String, Object> params) {
List<IcResiCategoryWarnConfigEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, IcResiCategoryWarnConfigDTO.class);
}
private QueryWrapper<IcResiCategoryWarnConfigEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<IcResiCategoryWarnConfigEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public IcResiCategoryWarnConfigDTO get(String id) {
IcResiCategoryWarnConfigEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, IcResiCategoryWarnConfigDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(IcResiCategoryWarnConfigDTO dto) {
IcResiCategoryWarnConfigEntity entity = ConvertUtils.sourceToTarget(dto, IcResiCategoryWarnConfigEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(IcResiCategoryWarnConfigDTO dto) {
IcResiCategoryWarnConfigEntity entity = ConvertUtils.sourceToTarget(dto, IcResiCategoryWarnConfigEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
}

264
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/ResiCategoryStatsConfigServiceImpl.java

@ -0,0 +1,264 @@
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.epmet.constant.IcResiCategoryStatsConfigConstant;
import com.epmet.dao.IcFormItemDao;
import com.epmet.dao.IcFormItemGroupDao;
import com.epmet.dao.IcResiCategoryStatsConfigDao;
import com.epmet.dao.IcResiCategoryWarnConfigDao;
import com.epmet.dto.IcResiCategoryStatsConfigDTO;
import com.epmet.dto.form.IcResiCategoryStatsConfigFormDTO;
import com.epmet.dto.form.IcResiCategoryStatsConfigSortFormDTO;
import com.epmet.dto.result.IcResiCategoryStatsConfigResultDTO;
import com.epmet.entity.IcFormItemEntity;
import com.epmet.entity.IcFormItemGroupEntity;
import com.epmet.entity.IcResiCategoryStatsConfigEntity;
import com.epmet.entity.IcResiCategoryWarnConfigEntity;
import com.epmet.service.IcResiCategoryStatsConfigService;
import com.epmet.service.IcResiCategoryWarnConfigService;
import com.epmet.service.ResiCategoryStatsConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Service
public class ResiCategoryStatsConfigServiceImpl implements ResiCategoryStatsConfigService {
@Autowired
private IcResiCategoryStatsConfigService icResiCategoryStatsConfigService;
@Resource
private IcFormItemDao icFormItemDao;
@Resource
private IcFormItemGroupDao icFormItemGroupDao;
@Resource
private IcResiCategoryStatsConfigDao icResiCategoryStatsConfigDao;
@Resource
private IcResiCategoryWarnConfigDao icResiCategoryWarnConfigDao;
@Autowired
private IcResiCategoryWarnConfigService icResiCategoryWarnConfigService;
@Override
@Transactional(rollbackFor = Exception.class)
public List<IcResiCategoryStatsConfigResultDTO> list(String customerId) {
//1.获取IC_FORM_ITEM 中 用于数据分析字段的 id 和label
List<IcFormItemEntity> icFormItemEntityList = icFormItemDao.selectList(new QueryWrapper<IcFormItemEntity>().lambda().eq(IcFormItemEntity::getDataAnalyse, 1));
if(CollectionUtils.isEmpty(icFormItemEntityList)){
return new ArrayList<>();
}
Set<String> groupIds = icFormItemEntityList.stream().filter(item-> !"0".equals(item.getItemGroupId())).map(item->item.getItemGroupId()).collect(Collectors.toSet());
List<IcFormItemGroupEntity> icFormItemGroupEntityList = icFormItemGroupDao.selectList(new QueryWrapper<IcFormItemGroupEntity>().lambda().in(IcFormItemGroupEntity::getId, groupIds));
//获取tableName和COLUMN_NAME
Map<String,IcFormItemEntity> tableColumnMap = new HashMap<>();
Map<String,String> idTableMap = new HashMap<>();
icFormItemEntityList.forEach(item->{
Map<String,String> map = new HashMap<>();
if("0".equals(item.getItemGroupId())){
tableColumnMap.put(IcResiCategoryStatsConfigConstant.IC_RESI_USER+"-"+item.getColumnName(),item);
idTableMap.put(item.getId(),IcResiCategoryStatsConfigConstant.IC_RESI_USER);
}else{
List<IcFormItemGroupEntity> collect = icFormItemGroupEntityList.stream().filter(i -> item.getItemGroupId().equals(i.getId())).collect(Collectors.toList());
tableColumnMap.put(CollectionUtils.isEmpty(collect)?IcResiCategoryStatsConfigConstant.IC_RESI_USER:collect.get(0).getTableName()+"-"+item.getColumnName(),item);
idTableMap.put(item.getId(),CollectionUtils.isEmpty(collect)?IcResiCategoryStatsConfigConstant.IC_RESI_USER:collect.get(0).getTableName());
}
});
//2.获取ic_resi_category_stats_config 和 ic_resi_category_warn_config 表中的数据
List<IcResiCategoryStatsConfigEntity> statsConfigEntityList = icResiCategoryStatsConfigDao.selectList(null);
List<IcResiCategoryWarnConfigEntity> warnConfigEntityList = icResiCategoryWarnConfigDao.selectList(null);
//3.新增不存在的,删除不在tableColumnMap的
Map<String,IcResiCategoryStatsConfigEntity> statsTableColumnMap = new HashMap<>();
statsConfigEntityList.stream().forEach(item->{
statsTableColumnMap.put(item.getTableName()+"-"+item.getColumnName(),item);
});
Map<String,IcResiCategoryWarnConfigEntity> warnTableColumnMap = new HashMap<>();
warnConfigEntityList.stream().forEach(item->{
warnTableColumnMap.put(item.getTableName()+"-"+item.getColumnName(),item);
});
//差集
//新增
List<String> newStatsList = tableColumnMap.keySet().stream().filter(item -> !statsTableColumnMap.keySet().contains(item)).collect(Collectors.toList());
List<IcResiCategoryStatsConfigEntity> newStatsEntityList = new ArrayList<>();
newStatsList.forEach(item->{
IcFormItemEntity icFormItemEntity = tableColumnMap.get(item);
IcResiCategoryStatsConfigEntity entity = new IcResiCategoryStatsConfigEntity();
entity.setCustomerId(customerId);
entity.setLabel(icFormItemEntity.getLabel());
entity.setTableName(idTableMap.get(icFormItemEntity.getId()));
entity.setColumnName(icFormItemEntity.getColumnName());
entity.setManagementIcon("");
entity.setDataIcon("");
entity.setHouseShowIcon("");
entity.setStatus("show");
entity.setSort(0);
newStatsEntityList.add(entity);
});
if(!CollectionUtils.isEmpty(newStatsEntityList)){
icResiCategoryStatsConfigService.insertBatch(newStatsEntityList);
}
List<String> delStatsEntityIdList = new ArrayList<>();
List<String> delWarnEntityIdList = new ArrayList<>();
//需要删除的
List<String> delStatsList = statsTableColumnMap.keySet().stream().filter(item -> !tableColumnMap.keySet().contains(item)).collect(Collectors.toList());
List<String> delWarnList = warnTableColumnMap.keySet().stream().filter(item -> !tableColumnMap.keySet().contains(item)).collect(Collectors.toList());
delStatsList.forEach(item->{
delStatsEntityIdList.add(statsTableColumnMap.get(item).getId());
});
delWarnList.forEach(item->{
delWarnEntityIdList.add(warnTableColumnMap.get(item).getId());
});
if(!CollectionUtils.isEmpty(delStatsEntityIdList)){
icResiCategoryStatsConfigService.deleteBatchIds(delStatsEntityIdList);
}
if(!CollectionUtils.isEmpty(delWarnEntityIdList)){
icResiCategoryWarnConfigService.deleteBatchIds(delWarnEntityIdList);
}
//4.返回数据
List<IcResiCategoryStatsConfigEntity> statsConfigList = icResiCategoryStatsConfigDao.selectList(new QueryWrapper<IcResiCategoryStatsConfigEntity>().lambda().orderByAsc(IcResiCategoryStatsConfigEntity::getSort));
List<IcResiCategoryWarnConfigEntity> warnConfigList = icResiCategoryWarnConfigDao.selectList(null);
Map<String,IcResiCategoryWarnConfigEntity> warnMap =new HashMap<>();
warnConfigList.forEach(item->{
warnMap.put(item.getTableName()+"-"+item.getColumnName(),item);
});
List<IcResiCategoryStatsConfigResultDTO> result = new ArrayList<>();
statsConfigList.forEach(item->{
IcResiCategoryStatsConfigResultDTO icResiCategoryStatsConfigResultDTO = new IcResiCategoryStatsConfigResultDTO();
icResiCategoryStatsConfigResultDTO.setId(item.getId());
icResiCategoryStatsConfigResultDTO.setLabel(item.getLabel());
icResiCategoryStatsConfigResultDTO.setManagementIcon(item.getManagementIcon());
icResiCategoryStatsConfigResultDTO.setDataIcon(item.getDataIcon());
icResiCategoryStatsConfigResultDTO.setHouseShowIcon(item.getHouseShowIcon());
icResiCategoryStatsConfigResultDTO.setStatus(item.getStatus());
icResiCategoryStatsConfigResultDTO.setSort(item.getSort());
IcResiCategoryWarnConfigEntity warnConfigEntity = warnMap.get(item.getTableName() + "-" + item.getColumnName());
if(warnConfigEntity==null){
icResiCategoryStatsConfigResultDTO.setWarn(IcResiCategoryStatsConfigConstant.WARN_NO);
}else{
icResiCategoryStatsConfigResultDTO.setWarn(IcResiCategoryStatsConfigConstant.WARN_YES);
icResiCategoryStatsConfigResultDTO.setLevel1(warnConfigEntity.getLevel1());
icResiCategoryStatsConfigResultDTO.setLevel2(warnConfigEntity.getLevel2());
icResiCategoryStatsConfigResultDTO.setLevel3(warnConfigEntity.getLevel3());
}
result.add(icResiCategoryStatsConfigResultDTO);
});
return result;
}
@Override
@Transactional(rollbackFor = Exception.class)
public IcResiCategoryStatsConfigResultDTO info(String id) {
IcResiCategoryStatsConfigResultDTO result =new IcResiCategoryStatsConfigResultDTO();
IcResiCategoryStatsConfigDTO icResiCategoryStatsConfigDTO = icResiCategoryStatsConfigService.get(id);
if(null == icResiCategoryStatsConfigDTO){
return result;
}
IcResiCategoryWarnConfigEntity icResiCategoryWarnConfigEntity = icResiCategoryWarnConfigDao.selectOne(new QueryWrapper<IcResiCategoryWarnConfigEntity>().lambda()
.eq(IcResiCategoryWarnConfigEntity::getTableName, icResiCategoryStatsConfigDTO.getTableName())
.eq(IcResiCategoryWarnConfigEntity::getColumnName, icResiCategoryStatsConfigDTO.getColumnName()));
// IcResiCategoryWarnConfigEntity icResiCategoryWarnConfigEntity = Optional.ofNullable(entity).orElse(new IcResiCategoryWarnConfigEntity());
result.setId(icResiCategoryStatsConfigDTO.getId());
result.setLabel(icResiCategoryStatsConfigDTO.getLabel());
result.setManagementIcon(icResiCategoryStatsConfigDTO.getManagementIcon());
result.setDataIcon(icResiCategoryStatsConfigDTO.getDataIcon());
result.setHouseShowIcon(icResiCategoryStatsConfigDTO.getHouseShowIcon());
result.setStatus(icResiCategoryStatsConfigDTO.getStatus());
result.setSort(icResiCategoryStatsConfigDTO.getSort());
result.setWarn(null==icResiCategoryWarnConfigEntity?IcResiCategoryStatsConfigConstant.WARN_NO:IcResiCategoryStatsConfigConstant.WARN_YES);
if(null!=icResiCategoryWarnConfigEntity){
result.setLevel1(icResiCategoryWarnConfigEntity.getLevel1());
result.setLevel2(icResiCategoryWarnConfigEntity.getLevel2());
result.setLevel3(icResiCategoryWarnConfigEntity.getLevel3());
}
return result;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(String customerId,IcResiCategoryStatsConfigFormDTO formDTO) {
IcResiCategoryStatsConfigDTO icResiCategoryStatsConfigDTO = icResiCategoryStatsConfigService.get(formDTO.getId());
if(null == icResiCategoryStatsConfigDTO){
return ;
}
//更新配置类别
IcResiCategoryStatsConfigEntity icResiCategoryStatsConfigEntity = new IcResiCategoryStatsConfigEntity();
BeanUtils.copyProperties(formDTO,icResiCategoryStatsConfigEntity);
icResiCategoryStatsConfigEntity.setCustomerId(customerId);
icResiCategoryStatsConfigDao.updateById(icResiCategoryStatsConfigEntity);
//更新配置预警
if(IcResiCategoryStatsConfigConstant.WARN_YES.equals(formDTO.getWarn())){
//更新
IcResiCategoryWarnConfigEntity icResiCategoryWarnConfigEntity = icResiCategoryWarnConfigDao.selectOne(new QueryWrapper<IcResiCategoryWarnConfigEntity>().lambda()
.eq(IcResiCategoryWarnConfigEntity::getTableName, icResiCategoryStatsConfigDTO.getTableName())
.eq(IcResiCategoryWarnConfigEntity::getColumnName, icResiCategoryStatsConfigDTO.getColumnName()));
if(null == icResiCategoryWarnConfigEntity){
icResiCategoryWarnConfigEntity = new IcResiCategoryWarnConfigEntity();
icResiCategoryWarnConfigEntity.setCustomerId(customerId);
icResiCategoryWarnConfigEntity.setLabel(icResiCategoryStatsConfigDTO.getLabel());
icResiCategoryWarnConfigEntity.setTableName(icResiCategoryStatsConfigDTO.getTableName());
icResiCategoryWarnConfigEntity.setColumnName(icResiCategoryStatsConfigDTO.getColumnName());
icResiCategoryWarnConfigEntity.setLevel1(formDTO.getLevel1());
icResiCategoryWarnConfigEntity.setLevel2(formDTO.getLevel2());
icResiCategoryWarnConfigEntity.setLevel3(formDTO.getLevel3());
icResiCategoryWarnConfigEntity.setSort(icResiCategoryStatsConfigDTO.getSort());
icResiCategoryWarnConfigDao.insert(icResiCategoryWarnConfigEntity);
}else{
icResiCategoryWarnConfigEntity.setCustomerId(customerId);
icResiCategoryWarnConfigEntity.setLabel(icResiCategoryStatsConfigDTO.getLabel());
icResiCategoryWarnConfigEntity.setTableName(icResiCategoryStatsConfigDTO.getTableName());
icResiCategoryWarnConfigEntity.setColumnName(icResiCategoryStatsConfigDTO.getColumnName());
icResiCategoryWarnConfigEntity.setLevel1(formDTO.getLevel1());
icResiCategoryWarnConfigEntity.setLevel2(formDTO.getLevel2());
icResiCategoryWarnConfigEntity.setLevel3(formDTO.getLevel3());
icResiCategoryWarnConfigEntity.setSort(icResiCategoryStatsConfigDTO.getSort());
icResiCategoryWarnConfigDao.updateById(icResiCategoryWarnConfigEntity);
}
}else if(IcResiCategoryStatsConfigConstant.WARN_NO.equals(formDTO.getWarn())){
//删除
icResiCategoryWarnConfigDao.delete(new QueryWrapper<IcResiCategoryWarnConfigEntity>().lambda()
.eq(IcResiCategoryWarnConfigEntity::getTableName,icResiCategoryStatsConfigDTO.getTableName())
.eq(IcResiCategoryWarnConfigEntity::getColumnName,icResiCategoryStatsConfigDTO.getColumnName()));
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateStatus(String customerId,IcResiCategoryStatsConfigFormDTO formDTO) {
//更新配置类别
IcResiCategoryStatsConfigEntity icResiCategoryStatsConfigEntity = new IcResiCategoryStatsConfigEntity();
BeanUtils.copyProperties(formDTO,icResiCategoryStatsConfigEntity);
icResiCategoryStatsConfigEntity.setCustomerId(customerId);
icResiCategoryStatsConfigDao.updateById(icResiCategoryStatsConfigEntity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateSort(String customerId,List<IcResiCategoryStatsConfigSortFormDTO> formDTOs) {
List<IcResiCategoryStatsConfigEntity > entityList = new ArrayList<>();
for (IcResiCategoryStatsConfigSortFormDTO formDTO : formDTOs) {
IcResiCategoryStatsConfigEntity icResiCategoryStatsConfigEntity = new IcResiCategoryStatsConfigEntity();
icResiCategoryStatsConfigEntity.setId(formDTO.getId());
icResiCategoryStatsConfigEntity.setCustomerId(customerId);
icResiCategoryStatsConfigEntity.setSort(formDTO.getSort());
entityList.add(icResiCategoryStatsConfigEntity);
}
icResiCategoryStatsConfigService.updateBatchById(entityList);
}
}

26
epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcResiCategoryStatsConfigDao.xml

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.IcResiCategoryStatsConfigDao">
<resultMap type="com.epmet.entity.IcResiCategoryStatsConfigEntity" id="icResiCategoryStatsConfigMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="label" column="LABEL"/>
<result property="tableName" column="TABLE_NAME"/>
<result property="columnName" column="COLUMN_NAME"/>
<result property="managementIcon" column="MANAGEMENT_ICON"/>
<result property="dataIcon" column="DATA_ICON"/>
<result property="houseShowIcon" column="HOUSE_SHOW_ICON"/>
<result property="status" column="STATUS"/>
<result property="sort" column="SORT"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
</mapper>

25
epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcResiCategoryWarnConfigDao.xml

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.IcResiCategoryWarnConfigDao">
<resultMap type="com.epmet.entity.IcResiCategoryWarnConfigEntity" id="icResiCategoryWarnConfigMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="label" column="LABEL"/>
<result property="tableName" column="TABLE_NAME"/>
<result property="columnName" column="COLUMN_NAME"/>
<result property="sort" column="SORT"/>
<result property="level1" column="LEVEL_1"/>
<result property="level2" column="LEVEL_2"/>
<result property="level3" column="LEVEL_3"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
</mapper>

29
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/OwnerRelationResultDTO.java

@ -0,0 +1,29 @@
package com.epmet.dto.result;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @Author zhaoqifeng
* @DateTime 2020/11/18 下午1:47
*/
@NoArgsConstructor
@Data
public class OwnerRelationResultDTO implements Serializable {
private static final long serialVersionUID = 2876258704168954941L;
private String ownerName;
private List<UserListBean> userList;
@NoArgsConstructor
@Data
public static class UserListBean {
private String userId;
private String userName;
private String isSelf;
private String relation;
}
}

29
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java

@ -31,8 +31,8 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.IcResiUserDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.OperCustomizeOpenFeignClient;
import com.epmet.service.IcResiUserImportService;
import com.epmet.service.IcResiUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -67,7 +67,7 @@ public class IcResiUserController {
@Autowired
private IcResiUserService icResiUserService;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
private IcResiUserImportService icResiUserImportService;
/**
* @Author sun
@ -216,20 +216,11 @@ public class IcResiUserController {
/**
* excel导入居民基本信息
*
* @param loginUser
* @return
*/
@PostMapping("import/excel")
public Result importExcelByEasyExcel(@LoginUser TokenDto loginUser) {
LoginUserDetailsFormDTO userForm = new LoginUserDetailsFormDTO();
userForm.setApp(loginUser.getApp());
userForm.setClient(loginUser.getClient());
userForm.setUserId(loginUser.getUserId());
Result<LoginUserDetailsResultDTO> loginUserDetails = epmetUserOpenFeignClient.getLoginUserDetails(userForm);
Object result = icResiUserService.importIcResiInfoFromExcel(loginUserDetails.getData().getAgencyId());
public Result importExcelByEasyExcel() {
Object result = icResiUserImportService.importIcResiInfoFromExcel();
return new Result().ok(result);
}
@ -280,4 +271,16 @@ public class IcResiUserController {
return resultForm.getData();
}
/**
* @Description 个人信息-家庭关系
* @Param formDTO
* @Return {@link Result< OwnerRelationResultDTO>}
* @Author zhaoqifeng
* @Date 2021/11/5 11:13
*/
@PostMapping("ownerrelation")
public Result<OwnerRelationResultDTO> getOwnerRelation(@RequestBody PersonDataFormDTO formDTO) {
return new Result<OwnerRelationResultDTO>().ok(icResiUserService.getOwnerRelation(formDTO.getUserId()));
}
}

4
epmet-user/epmet-user-server/src/main/java/com/epmet/mq/listener/ICWarnStatsEventListener.java

@ -2,7 +2,7 @@ package com.epmet.mq.listener;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.rocketmq.constants.MQUserPropertys;
import com.epmet.commons.rocketmq.messages.IcWarnStatsMQMsg;
import com.epmet.commons.rocketmq.messages.IcResiUserAddMQMsg;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
@ -57,7 +57,7 @@ public class ICWarnStatsEventListener implements MessageListenerConcurrently {
String pendingMsgLabel = messageExt.getUserProperty(MQUserPropertys.BLOCKED_MSG_LABEL);
logger.info("【开放数据事件监听器】-居民信息变动-收到消息内容:{},操作:{}", msg, tags);
IcWarnStatsMQMsg obj = JSON.parseObject(msg, IcWarnStatsMQMsg.class);
IcResiUserAddMQMsg obj = JSON.parseObject(msg, IcResiUserAddMQMsg.class);
DistributedLock distributedLock = null;
RLock lock = null;

12
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java

@ -0,0 +1,12 @@
package com.epmet.service;
/**
*@Description 居民信息导入service
*@Author wangxianzhang
*@Date 2021/11/4
*/
public interface IcResiUserImportService {
Object importIcResiInfoFromExcel();
}

15
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java

@ -21,10 +21,7 @@ import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.form.*;
import com.epmet.dto.result.FormItem;
import com.epmet.dto.result.HomeUserResultDTO;
import com.epmet.dto.result.PersonDataResultDTO;
import com.epmet.dto.result.SearchByNameResultDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.IcResiUserEntity;
import java.util.List;
@ -70,7 +67,7 @@ public interface IcResiUserService extends BaseService<IcResiUserEntity> {
*/
Map queryIcResiDetail(IcResiDetailFormDTO pageFormDTO);
Object importIcResiInfoFromExcel(String currUserAgencyId);
List<Map<String,Object>> dynamicQuery(String customerId,
String formCode,
@ -107,4 +104,12 @@ public interface IcResiUserService extends BaseService<IcResiUserEntity> {
*/
Map<String, Map<String, Object>> getDataForExport(Map<String, FormItem> itemList, String customerId, String formCode, String baseTableName, List<ResiUserQueryValueDTO> conditions);
/**
* @Description 家庭关系
* @Param userId
* @Return {@link OwnerRelationResultDTO}
* @Author zhaoqifeng
* @Date 2021/11/5 10:28
*/
OwnerRelationResultDTO getOwnerRelation(String userId);
}

718
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java

@ -0,0 +1,718 @@
package com.epmet.service.impl;
import com.alibaba.excel.EasyExcelFactory;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.dto.result.OptionResultDTO;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.IcResiUserDao;
import com.epmet.dto.*;
import com.epmet.dto.form.AgencyIdFormDTO;
import com.epmet.dto.form.CustomerFormQueryDTO;
import com.epmet.dto.form.HouseFormDTO;
import com.epmet.dto.form.LoginUserDetailsFormDTO;
import com.epmet.dto.result.FormItem;
import com.epmet.dto.result.LoginUserDetailsResultDTO;
import com.epmet.dto.result.OptionDTO;
import com.epmet.entity.IcResiUserEntity;
import com.epmet.excel.handler.DynamicEasyExcelListener;
import com.epmet.feign.EpmetAdminOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.feign.OperCustomizeOpenFeignClient;
import com.epmet.service.IcResiUserImportService;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.File;
import java.util.*;
import java.util.stream.Collectors;
/**
* @ClassName IcResiUserImportServiceImpl
* @Description TODO
* @Author wangxianzhang
* @Date 2021/11/4 8:53 下午
* @Version 1.0
*/
@Slf4j
@Service
public class IcResiUserImportServiceImpl implements IcResiUserImportService, ResultDataResolver {
public static final ThreadLocal errorRow = new ThreadLocal<ErrorRow>();
@Autowired
private LoginUserUtil loginUserUtil;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Autowired
private EpmetAdminOpenFeignClient adminOpenFeignClient;
@Autowired
private GovOrgOpenFeignClient govOrgOpenFeignClient;
@Autowired
private OperCustomizeOpenFeignClient operCustomizeOpenFeignClient;
@Autowired
private IcResiUserDao icResiUserDao;
/**
* @description 列信息封装
*
* @return
* @author wxz
* @date 2021.10.28 22:18:05
*/
@Data
public static class ColumnWrapper {
private String combinedLabel;
private String columnName;
private String itemType;
private String itemId;
private List<Integer> colIndexs;
//private List<String> colContents;
// 单元格内容
private String cellContent;
// 数据库中列的值
private String colValue;
// key:label,value:value
private Map<String, String> options;
/**
* 选项来源,REMOTE;LOCAL;如果是动态加载的下拉框或者CHECKBOX等的情况下使用URL:接口获取(LABEL,VALUE)JSON:直接从JSON中取
*/
private String optionSourceType;
/**
* 来源地址,REMOTE才有固定格式;如果OPTIONS_SOURCE是URL则此处填写要调用的接口的URL相对路径例如/API/GOV/ORG/XXXX此处不应设置参数若需要参数应当完全由后端通过TOKEN信息来获取
*/
private String optionSourceValue;
}
/**
* 错误行信息
*/
public static class ErrorRow {
private String sheetName;
private String idCard;
private String name;
private String errorInfo;
}
/**
* 导入居民信息
* 导入主表和所有子表信息
* @return
*/
@Override
public Object importIcResiInfoFromExcel() {
String loginUserId = loginUserUtil.getLoginUserId();
String loginUserApp = loginUserUtil.getLoginUserApp();
String loginUserClient = loginUserUtil.getLoginUserClient();
LoginUserDetailsFormDTO userForm = new LoginUserDetailsFormDTO();
userForm.setApp(loginUserApp);
userForm.setClient(loginUserClient);
userForm.setUserId(loginUserId);
LoginUserDetailsResultDTO loginUserDetails = getResultDataOrThrowsException(epmetUserOpenFeignClient.getLoginUserDetails(userForm), ServiceConstant.EPMET_USER_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
String currUserAgencyId = loginUserDetails.getAgencyId();
String excelPathName = "/opt/test/基础信息表/resi_info.xls";
CustomerAgencyDTO agencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(currUserAgencyId), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
String customerId = agencyInfo.getCustomerId();
importIcResiBaseInfoFromExcel(excelPathName, 0, 3, currUserAgencyId, agencyInfo.getPids(), loginUserId);
importIcResiExtraInfoFromExcel(excelPathName, 1, 2, currUserAgencyId, loginUserId, "ic_party_member", customerId);
importIcResiExtraInfoFromExcel(excelPathName, 2, 2, currUserAgencyId, loginUserId, "ic_ensure_house", customerId);
importIcResiExtraInfoFromExcel(excelPathName, 3, 2, currUserAgencyId, loginUserId, "ic_unemployed", customerId);
importIcResiExtraInfoFromExcel(excelPathName, 4, 2, currUserAgencyId, loginUserId, "ic_veterans", customerId);
importIcResiExtraInfoFromExcel(excelPathName, 5, 2, currUserAgencyId, loginUserId, "ic_united_front", customerId);
importIcResiExtraInfoFromExcel(excelPathName, 6, 3, currUserAgencyId, loginUserId, "ic_volunteer", customerId);
importIcResiExtraInfoFromExcel(excelPathName, 7, 2, currUserAgencyId, loginUserId, "ic_old_people", customerId);
importIcResiExtraInfoFromExcel(excelPathName, 8, 3, currUserAgencyId, loginUserId, "ic_special", customerId);
return null;
}
/**
* excel导入居民基本信息
* @param sheetNo
* @param headRowNumber
* @param currUserAgencyId
* @param currUserAgencyPids
* @param currentUserId
* @return
*/
private Object importIcResiBaseInfoFromExcel(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<Map<Integer, String>> headList = readListener.getHeadList();
List<Map<Integer, String>> dataList = readListener.getDataList();
Map<Integer, List<String>> headers = mergeHead(headList);
// 查询form相关信息
List<FormItem> customerItems = listFormItems("resi_base_info");
// 清洗表头数据
Map<Integer, String> abandonedHeaders = washHeaders(headers, customerItems);
//合并多级表头
HashMap<String, List<Integer>> combinedHeaders = combineHeaders(headers);
// 得到客户配置item数据
Map<String, FormItem> 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<String, ColumnWrapper> headerColumnWrapper = convertExcelHeaders2DBColumnWrappers(formItemMap, combinedHeaders, dataList, abandonedHeaders);
// 持久化
persistIcResiBaseInfo(headerColumnWrapper, dataList, currUserAgencyId, abandonedHeaders, currUserAgencyPids, currentUserId);
return headers;
}
/**
* excel导入居民附加信息
* @param excelPathName
* @param sheetNo
* @param headRowNumber
* @param currUserAgencyId
* @param currentUserId
* @param targetTableName 要插入哪一个表
* @return
*/
private Object importIcResiExtraInfoFromExcel(String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currentUserId,
String targetTableName, String customerId) {
DynamicEasyExcelListener readListener = new DynamicEasyExcelListener();
EasyExcelFactory.read(new File(excelPathName)).registerReadListener(readListener).headRowNumber(headRowNumber).sheet(sheetNo).doRead();
List<Map<Integer, String>> headList = readListener.getHeadList();
List<Map<Integer, String>> dataList = readListener.getDataList();
Map<Integer, List<String>> headers = mergeHead(headList);
// 查询form相关信息
List<FormItem> customerItems = listFormItems("resi_base_info");
// 清洗表头数据
Map<Integer, String> abandonedHeaders = washHeaders(headers, customerItems);
//合并多级表头
HashMap<String, List<Integer>> combinedHeaders = combineHeaders(headers);
// 得到客户配置item数据
Map<String, FormItem> 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<String, ColumnWrapper> headerColumnWrapper = convertExcelHeaders2DBColumnWrappers(formItemMap, combinedHeaders, dataList, abandonedHeaders);
persistIcResiExtraInfo(headerColumnWrapper, dataList, currUserAgencyId, abandonedHeaders, currentUserId, targetTableName, customerId);
return headerColumnWrapper;
}
/**
* 持久化IC居民基础信息
* @param headerColumnWrapper 数据库列包装信息
* @param dataRows 数据行集合
* @param currUserAgencyId 当前用户的组织id
* @param checkBoxOptionColumnIdxAndLabel 复选框的列号&label中文
*/
private void persistIcResiBaseInfo(Map<String, ColumnWrapper> headerColumnWrapper, List<Map<Integer, String>> dataRows,
String currUserAgencyId, Map<Integer, String> checkBoxOptionColumnIdxAndLabel,
String currUserAgencyPids, String currentUserId) {
// 遍历每一行,将行内容转化为
for (Map<Integer, String> row : dataRows) {
LinkedHashMap<String, String> columnAndValues = convertColumnWrappers2Map4Persist(headerColumnWrapper, row, currUserAgencyId, checkBoxOptionColumnIdxAndLabel);
columnAndValues.put("IS_ENSURE_HOUSE", "0");
columnAndValues.put("IS_OLD_PEOPLE", "0");
columnAndValues.put("IS_PARTY", "0");
columnAndValues.put("IS_SPECIAL", "0");
columnAndValues.put("IS_UNEMPLOYED", "0");
columnAndValues.put("IS_UNITED_FRONT", "0");
columnAndValues.put("IS_VETERANS", "0");
columnAndValues.put("IS_VOLUNTEER", "0");
columnAndValues.put("AGENCY_ID", currUserAgencyId);
columnAndValues.put("PIDS", currUserAgencyPids);
columnAndValues.put("CUSTOMER_ID", loginUserUtil.getCurrentCustomerId());
columnAndValues.put("CREATED_BY", currentUserId);
columnAndValues.put("UPDATED_BY", currentUserId);
columnAndValues.put("ID", UUID.randomUUID().toString().replace("-", ""));
// 验证居民信息是否存在
String idCard = columnAndValues.get("ID_CARD");
LambdaQueryWrapper<IcResiUserEntity> idCardQuery = new LambdaQueryWrapper<>();
idCardQuery.eq(IcResiUserEntity::getIdCard, idCard);
if (icResiUserDao.selectCount(idCardQuery) > 0) {
log.info("身份证号为【{}】的居民信息已存在,跳过导入", idCard);
}
icResiUserDao.add("ic_resi_user", columnAndValues);
}
}
/**
* 持久化IC居民附加信息
* @param headerColumnWrapper 数据库列包装信息
* @param dataRows 数据行集合
* @param currUserAgencyId 当前用户的组织id
* @param checkBoxOptionColumnIdxAndLabel 复选框的列号&label中文
* @param targetTableName 要插入到哪一个表
*/
private void persistIcResiExtraInfo(Map<String, ColumnWrapper> headerColumnWrapper, List<Map<Integer, String>> dataRows,
String currUserAgencyId, Map<Integer, String> checkBoxOptionColumnIdxAndLabel,
String currentUserId, String targetTableName, String customerId) {
// 遍历每一行,将行内容转化为
for (Map<Integer, String> row : dataRows) {
LinkedHashMap<String, String> columnAndValues = convertColumnWrappers2Map4Persist(headerColumnWrapper, row, currUserAgencyId, checkBoxOptionColumnIdxAndLabel);
// 检验身份证号
String idCard = columnAndValues.get("ID_CARD");
if (StringUtils.isBlank(idCard)) {
throw new RenException(EpmetErrorCode.IDCARDNO_ERROR.getCode(), String.format("用户【%s】身份证号未填写或格式错误", columnAndValues.get("NAME")));
}
// 检查用户是否存在
LambdaQueryWrapper<IcResiUserEntity> idCardQuery = new LambdaQueryWrapper<>();
idCardQuery.eq(IcResiUserEntity::getIdCard, idCard);
IcResiUserEntity icResiUserBaseInfo = icResiUserDao.selectOne(idCardQuery);
if (icResiUserBaseInfo == null) {
throw new RenException(EpmetErrorCode.RESI_NOT_FOUND.getCode(), String.format("身份证号为【%s】的居民信息未找到,请确认该居民信息存在", idCard));
}
String icResiId = icResiUserBaseInfo.getId();
// 验证党员信息是否存在
if (CollectionUtils.isNotEmpty(icResiUserDao.selectSubTableRecords(customerId, icResiId, targetTableName))) {
log.info("身份证号为【{}】的居民【{}】信息已存在,跳过导入", idCard, targetTableName);
continue;
}
columnAndValues.put("IC_RESI_USER", icResiId);
columnAndValues.put("CUSTOMER_ID", loginUserUtil.getCurrentCustomerId());
columnAndValues.put("CREATED_BY", currentUserId);
columnAndValues.put("UPDATED_BY", currentUserId);
columnAndValues.put("ID", UUID.randomUUID().toString().replace("-", ""));
columnAndValues = removeNeedlessColumns(columnAndValues);
icResiUserDao.add(targetTableName, columnAndValues);
}
}
/**
* 去掉多余的列
* @param originColumnAndValues
* @return
*/
private LinkedHashMap<String, String> removeNeedlessColumns(LinkedHashMap<String, String> originColumnAndValues) {
List<String> needlessColumns = Arrays.asList("GRID_ID", "VILLAGE_ID", "BUILD_ID", "UNIT_ID", "HOME_ID",
"IS_BDHJ", "NAME", "MOBILE", "GENDER", "ID_CARD",
"BIRTHDAY", "CONTACTS", "CONTACTS_MOBILE");
LinkedHashMap<String, String> newMap = new LinkedHashMap();
originColumnAndValues.entrySet().forEach(b -> {
if (!needlessColumns.contains(b.getKey())) {
newMap.put(b.getKey(), b.getValue());
}
});
return newMap;
}
/**
* 将当前行数据转化成LinkedHashMap供后续插入
* @param headerColumnWrapper 当前行的ColumnWrapper每一个ColumnWrapper元素都是当前行中的一个列
* @param row 当前行数据
* @param currUserAgencyId 当前用户所属机构ID
* @param checkBoxOptionColumnIdxAndLabel 复选框options列表key:列号value复选框中文
* @return
*/
private LinkedHashMap<String, String> convertColumnWrappers2Map4Persist(Map<String, ColumnWrapper> headerColumnWrapper, Map<Integer, String> row,
String currUserAgencyId, Map<Integer, String> checkBoxOptionColumnIdxAndLabel) {
LinkedHashMap<String, String> columnAndValues = new LinkedHashMap<>();
for (Map.Entry<String, ColumnWrapper> columnWrapperEntry : headerColumnWrapper.entrySet()) {
ColumnWrapper columnWrapper = columnWrapperEntry.getValue();
if ("input".equals(columnWrapper.getItemType())
|| "textarea".equals(columnWrapper.getItemType())
|| "datepicker".equals(columnWrapper.getItemType())
|| "daterange".equals(columnWrapper.getItemType())
) {
String cellContent = row.get(columnWrapper.getColIndexs().get(0));
columnWrapper.setCellContent(cellContent);
columnWrapper.setColValue(cellContent);
} else if ("select".equals(columnWrapper.getItemType())
|| "radio".equals(columnWrapper.getItemType())){
String optionSourceType = columnWrapper.getOptionSourceType();
// 取单元格的内容
String cellContent = row.get(columnWrapper.getColIndexs().get(0));
columnWrapper.setCellContent(cellContent);
if ("local".equals(optionSourceType)) {
// 根据单元格内容,取到指定的option
Map<String, String> options = columnWrapper.getOptions();
String colValue = options.get(cellContent);
columnWrapper.setColValue(colValue);
} else {
// remote类型
Map<String, String> options = listRemoteOptions(headerColumnWrapper, columnWrapper.getOptionSourceValue(), currUserAgencyId);
String colValue = options.get(cellContent);
columnWrapper.setColValue(colValue);
}
} else if ("checkbox".equals(columnWrapper.getItemType())) {
String checkBoxColValue = getCheckBoxColValue(columnWrapper, row, checkBoxOptionColumnIdxAndLabel);
columnWrapper.setColValue(checkBoxColValue);
}
columnAndValues.put(columnWrapper.columnName, columnWrapper.colValue);
}
return columnAndValues;
}
/**
* 根据formCode查询该form的item列表
* @param formCode
* @return
*/
private List<FormItem> listFormItems(String formCode) {
CustomerFormQueryDTO form = new CustomerFormQueryDTO();
form.setFormCode(formCode);
Result<List<FormItem>> result = operCustomizeOpenFeignClient.listItems(form);
return getResultDataOrThrowsException(result, ServiceConstant.OPER_CUSTOMIZE_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【居民信息excel导入】查询表单相关信息失败");
}
/**
* @description 合并头
*
* @param headers
* @return
* @author wxz
* @date 2021.10.28 21:27:18
*/
private HashMap<String, List<Integer>> combineHeaders(Map<Integer, List<String>> headers) {
HashMap<String, List<Integer>> itemAndColIndexs = new LinkedHashMap<>();
headers.forEach((k, v) -> {
String tempKey = String.join(":", v);
List<Integer> colIndexs = itemAndColIndexs.get(tempKey);
if (colIndexs == null) {
colIndexs = new ArrayList<>();
itemAndColIndexs.put(tempKey, colIndexs);
}
colIndexs.add(k);
});
return itemAndColIndexs;
}
/**
* @description 洗头
*
* @param headers
* @param items
* @return
* @author wxz
* @date 2021.10.28 21:07:12
*/
private Map<Integer, String> washHeaders(Map<Integer, List<String>> headers, List<FormItem> items) {
List<String> itemLabels = items.stream().map(i -> i.getLabel()).collect(Collectors.toList());
Map<Integer, String> abandonedHeaders = new HashMap<>();
for (Map.Entry<Integer, List<String>> entry:headers.entrySet()) {
Integer colIdx = entry.getKey();
List<String> v = entry.getValue();
int lastPartIndex = v.size() - 1;
String lastValuePart = v.get(lastPartIndex);
if (!itemLabels.contains(lastValuePart)) {
// 该部分为options,它的上一级是item,那么去掉options这一级
v.remove(lastPartIndex);
abandonedHeaders.put(colIdx, lastValuePart);
}
}
return abandonedHeaders;
}
/**
* @description 数据整合将excel表头汉字信息转化成ColumnWrapper列封装数据
* * key:itemId
* * value:ColumnWrapper列包装信息
* @param formItemMap item map
* key:itemId;
* value: 合并之后的head字符串例如健康信息:监护人
* @param combinedHeaders 合并之后的head信息
* key合并之后head字符串(例如党员信息:入党时间)
* value列号组成的列表(例如[1,2,3])
* @param datas
* @param abandonedHeaders
* @return
*/
private Map<String, ColumnWrapper> convertExcelHeaders2DBColumnWrappers(Map<String, FormItem> formItemMap, Map<String, List<Integer>> combinedHeaders,
List<Map<Integer, String>> datas, Map<Integer, String> abandonedHeaders) {
// HashMap<String, List<ColumnWrapper>> tables = new HashMap<>();
Map<String, ColumnWrapper> columns = new LinkedHashMap<>(combinedHeaders.size());
for (Map.Entry<String, List<Integer>> entry : combinedHeaders.entrySet()) {
String combinedHeader = entry.getKey();
FormItem item = formItemMap.get(combinedHeader);
if (item == null) {
// 如果数据库中没有该项,可能是用户自己定义的项,忽略
continue;
}
ColumnWrapper columnWrapper = new ColumnWrapper();
// 填充options
columnWrapper.setItemType(item.getItemType());
columnWrapper.setItemId(item.getItemId());
String groupLabel = item.getGroupLabel();
String combinedLabel = StringUtils.isBlank(groupLabel) ? item.getLabel() : groupLabel.concat(":").concat(item.getLabel());
columnWrapper.setCombinedLabel(combinedLabel);
columnWrapper.setColumnName(item.getColumnName());
columnWrapper.setColIndexs(entry.getValue());
columnWrapper.setOptionSourceType(item.getOptionSourceType());
columnWrapper.setOptionSourceValue(item.getOptionSourceValue());
columnWrapper.setOptions(item.getOptions().stream().collect(Collectors.toMap(OptionDTO::getLabel, OptionDTO::getValue)));
columns.put(item.getItemId(), columnWrapper);
}
return columns;
}
/**
* 获取checkbox列值
* @param columnWrapper 数据库列包装信息每一列跳数据对应数据库的一个列
* @param dataRow 数据行每一条都是一行中的一个单元格
* @param checkboxOptions 复选框的选项k: 列号, value: checkboxlabel中文
* @return
*/
private String getCheckBoxColValue(ColumnWrapper columnWrapper, Map<Integer, String> dataRow, Map<Integer, String> checkboxOptions) {
Map<String, String> options = columnWrapper.getOptions();
List<Integer> colIndexs = columnWrapper.getColIndexs();
List<String> optionValues = colIndexs.stream().filter(i -> {
String cellContent = dataRow.get(i);
return StringUtils.isNotBlank(cellContent) && cellContent.equals("是");
}).map(i -> {
String checkboxOptionLabel = checkboxOptions.get(i);
return options.get(checkboxOptionLabel);
}).collect(Collectors.toList());
return String.join(",", optionValues);
}
/**
* @description 合并表头
* Map<Integer, List<String>>
*
* @param headList
* @return
* @author wxz
* @date 2021.10.27 16:17:34
*/
private Map<Integer, List<String>> mergeHead(List<Map<Integer, String>> headList) {
Map<Integer, String> lastNotNullHeads = new LinkedHashMap<>();
Map<Integer, List<String>> mergedHead = new LinkedHashMap<>();
int levelCount = headList.size();
Map<Integer, String> firstLevel = headList.get(0);
// 遍历所有列
for (Map.Entry<Integer, String> column : firstLevel.entrySet()) {
Integer columIndex = column.getKey();
List<String> labels = new ArrayList<>();
// 竖着遍历该列的所有行
for (int currentLevel = 0; currentLevel < levelCount; currentLevel ++) {
String label = headList.get(currentLevel).get(columIndex);
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(label)) {
labels.add(label);
}
}
mergedHead.put(columIndex, labels);
}
return mergedHead;
}
/**
* 远程获取options
* @param fullUri
* @return
*/
public Map<String, String> listRemoteOptions(Map<String, ColumnWrapper> columnWrappers, String fullUri, String currUserAgencyId) {
String pureUri = null;
String cascadeItemId = null;
ColumnWrapper cascadeItemColumnWrapper = null;
if (fullUri.indexOf("?") != -1) {
String[] uriParts = fullUri.split("\\?");
pureUri = uriParts[0];
cascadeItemId = uriParts[1];
// 根据uri上的id,找到关联的itemid,从而找到关联的item的值
if (columnWrappers != null){
cascadeItemColumnWrapper = columnWrappers.get(cascadeItemId);
}
} else {
pureUri = fullUri;
}
List<OptionResultDTO> options = null;
switch (pureUri) {
case "/epmetuser/icresidemanddict/demandoption":
options = getResultDataOrThrowsException(epmetUserOpenFeignClient.getDemandOptions(), ServiceConstant.EPMET_USER_SERVER,
EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/gov/org/customergrid/gridoption":
AgencyIdFormDTO form = new AgencyIdFormDTO();
form.setAgencyId(currUserAgencyId);
options = getResultDataOrThrowsException(govOrgOpenFeignClient.getGridOption(form), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/gov/org/customerpartybranch/branchoption":
CustomerPartyBranchDTO bform = new CustomerPartyBranchDTO();
bform.setGridId(cascadeItemColumnWrapper.getColValue());
options = getResultDataOrThrowsException(govOrgOpenFeignClient.getBranchOption(bform), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/gov/org/icbuilding/buildingoption":
IcBuildingDTO buildingform = new IcBuildingDTO();
buildingform.setNeighborHoodId(cascadeItemColumnWrapper.getColValue());
options = getResultDataOrThrowsException(govOrgOpenFeignClient.getBuildingOptions(buildingform), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/gov/org/icbuildingunit/unitoption":
IcBuildingUnitDTO buForm = new IcBuildingUnitDTO();
buForm.setBuildingId(cascadeItemColumnWrapper.getColValue());
options = getResultDataOrThrowsException(govOrgOpenFeignClient.getUnitOptions(buForm), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/gov/org/ichouse/houseoption":
HouseFormDTO hform = new HouseFormDTO();
hform.setUnitId(cascadeItemColumnWrapper.getColValue());
options = getResultDataOrThrowsException(govOrgOpenFeignClient.getHouseOption(hform), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/gov/org/icneighborhood/neighborhoodoption":
IcNeighborHoodDTO nform = new IcNeighborHoodDTO();
nform.setAgencyId(currUserAgencyId);
nform.setGridId(cascadeItemColumnWrapper.getColValue());
options = getResultDataOrThrowsException(govOrgOpenFeignClient.getNeighborHoodOptions(nform), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/sys/dict/data/education":
options = getResultDataOrThrowsException(adminOpenFeignClient.getEducationOption(), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/sys/dict/data/house":
options = getResultDataOrThrowsException(adminOpenFeignClient.getHouseOption(), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/sys/dict/data/nation":
options = getResultDataOrThrowsException(adminOpenFeignClient.getNationOption(), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/sys/dict/data/ninesmallplaces":
options = getResultDataOrThrowsException(adminOpenFeignClient.getNineSmallPlacesOption(), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/sys/dict/data/relationship":
options = getResultDataOrThrowsException(adminOpenFeignClient.getRelationshipOption(), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
}
if (options == null) {
return null;
}
return options.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue));
// 通用api调用,无法实现
/*if (!uri.startsWith("/api")) uri = "/api".concat(uri);
NamingService namingService = discoveryProperties.namingServiceInstance();
ResponseEntity<Result<List<OptionResultDTO>>> response = null;
try {
// 调用gateway服务,查询相关接口
Instance gatewayInstance = namingService.getAllInstances(ServiceConstant.EPMET_GATEWAY).get(0);
String ip = gatewayInstance.getIp();
int port = gatewayInstance.getPort();
String url = String.format("http://%s:%s%s", ip, port, uri);
ParameterizedTypeReference<Result<List<OptionResultDTO>>> tr = new ParameterizedTypeReference<Result<List<OptionResultDTO>>>() {};
response = new RestTemplate().exchange(url, HttpMethod.POST, null, tr);
} catch (NacosException e) {
e.printStackTrace();
}
if (response != null && (response.getStatusCode() == HttpStatus.OK)) {
List<OptionResultDTO> options = response.getBody().getData();
if (options == null) {
System.out.println(6);
}
return options.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue));
} else {
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
}*/
}
}

609
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

@ -17,42 +17,39 @@
package com.epmet.service.impl;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.rocketmq.messages.IcWarnStatsMQMsg;
import com.epmet.commons.rocketmq.messages.IcResiUserAddMQMsg;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.dto.result.OptionResultDTO;
import com.epmet.commons.tools.enums.GenderEnum;
import com.epmet.commons.tools.enums.HouseTypeEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.enums.RelationshipEnum;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.SystemMessageType;
import com.epmet.constant.UserConstant;
import com.epmet.dao.IcResiUserDao;
import com.epmet.dto.*;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.IcHouseDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.entity.IcResiUserEntity;
import com.epmet.excel.handler.DynamicEasyExcelListener;
import com.epmet.feign.*;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.feign.OperCustomizeOpenFeignClient;
import com.epmet.service.IcResiUserService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@ -60,7 +57,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -73,24 +69,17 @@ import java.util.stream.Collectors;
*/
@Slf4j
@Service
public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResiUserEntity> implements IcResiUserService, ResultDataResolver {
public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResiUserEntity> implements IcResiUserService {
@Autowired
private GovOrgOpenFeignClient govOrgOpenFeignClient;
@Autowired
private OperCustomizeOpenFeignClient operCustomizeOpenFeignClient;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Autowired
private EpmetAdminOpenFeignClient adminOpenFeignClient;
@Autowired
private LoginUserUtil loginUserUtil;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Autowired
private IcResiUserImportServiceImpl icResiUserImportService;
private QueryWrapper<IcResiUserEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
@ -172,7 +161,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
});
//推送MQ事件
IcWarnStatsMQMsg mqMsg = new IcWarnStatsMQMsg();
IcResiUserAddMQMsg mqMsg = new IcResiUserAddMQMsg();
mqMsg.setCustomerId(tokenDto.getCustomerId());
mqMsg.setIcResiUser(resiUserId);
SystemMsgFormDTO form = new SystemMsgFormDTO();
@ -236,7 +225,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
});
//推送MQ事件
IcWarnStatsMQMsg mqMsg = new IcWarnStatsMQMsg();
IcResiUserAddMQMsg mqMsg = new IcResiUserAddMQMsg();
mqMsg.setCustomerId(tokenDto.getCustomerId());
mqMsg.setIcResiUser(resiUserId);
SystemMsgFormDTO form = new SystemMsgFormDTO();
@ -449,536 +438,6 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
return resultMap;
}
@Override
public Object importIcResiInfoFromExcel(String currUserAgencyId) {
String excelPathName = "/opt/test/基础信息表/resi_info.xls";
CustomerAgencyDTO agencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(currUserAgencyId), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
String loginUserId = loginUserUtil.getLoginUserId();
//return importIcResiInfoFromExcel(excelPathName, 0, 3, currUserAgencyId, agencyInfo.getPids(), loginUserId);
return importIcResiExtraInfoFromExcel(excelPathName, 1, 2, currUserAgencyId, agencyInfo.getPids(), loginUserId);
// imporExcel(1, 1);
// imporExcel(2, 1);
// imporExcel(3, 1);
// imporExcel(4, 1);
// imporExcel(5, 1);
// imporExcel(6, 2);
// imporExcel(7, 1);
// imporExcel(8, 1);
}
/**
* excel导入居民基本信息
* @param sheetNo
* @param headRowNumber
* @param currUserAgencyId
* @param currUserAgencyPids
* @param currentUserId
* @return
*/
private Object importIcResiInfoFromExcel(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<Map<Integer, String>> headList = readListener.getHeadList();
List<Map<Integer, String>> dataList = readListener.getDataList();
Map<Integer, List<String>> headers = mergeHead(headList);
// 查询form相关信息
List<FormItem> customerItems = listFormItems("resi_base_info");
// 清洗表头数据
Map<Integer, String> abandonedHeaders = washHeaders(headers, customerItems);
//合并多级表头
HashMap<String, List<Integer>> combinedHeaders = combineHeaders(headers);
// 得到客户配置item数据
Map<String, FormItem> 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<String, ColumnWrapper> headerColumnWrapper = convertExcelHeaders2DBColumnWrappers(formItemMap, combinedHeaders, dataList, abandonedHeaders);
// 持久化
persist(headerColumnWrapper, dataList, currUserAgencyId, abandonedHeaders, customerItems.get(0).getTableName(), currUserAgencyPids, currentUserId);
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<Map<Integer, String>> headList = readListener.getHeadList();
List<Map<Integer, String>> dataList = readListener.getDataList();
Map<Integer, List<String>> headers = mergeHead(headList);
// 查询form相关信息
List<FormItem> customerItems = listFormItems("resi_base_info");
// 清洗表头数据
Map<Integer, String> abandonedHeaders = washHeaders(headers, customerItems);
//合并多级表头
HashMap<String, List<Integer>> combinedHeaders = combineHeaders(headers);
// 得到客户配置item数据
Map<String, FormItem> 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<String, ColumnWrapper> headerColumnWrapper = convertExcelHeaders2DBColumnWrappers(formItemMap, combinedHeaders, dataList, abandonedHeaders);
return formItemMap;
}
/**
* 持久化
* @param headerColumnWrapper 数据库列包装信息
* @param dataRows 数据行集合
* @param currUserAgencyId 当前用户的组织id
* @param checkBoxOptionColumnIdxAndLabel 复选框的列号&label中文
*/
private void persist(Map<String, ColumnWrapper> headerColumnWrapper, List<Map<Integer, String>> dataRows,
String currUserAgencyId, Map<Integer, String> checkBoxOptionColumnIdxAndLabel, String tableName,
String currUserAgencyPids, String currentUserId) {
for (Map<Integer, String> row : dataRows) {
// 当前行的列们
// List<ColumnWrapper> columnsOfCurrRow = new ArrayList<>();
List<String> columnNames = new ArrayList<>();
List<String> columnValues = new ArrayList<>();
LinkedHashMap<String, String> columnAndValues = new LinkedHashMap<>();
for (Map.Entry<String, ColumnWrapper> columnWrapperEntry : headerColumnWrapper.entrySet()) {
ColumnWrapper columnWrapper = columnWrapperEntry.getValue();
if ("input".equals(columnWrapper.getItemType())
|| "textarea".equals(columnWrapper.getItemType())
|| "datepicker".equals(columnWrapper.getItemType())
|| "timerange".equals(columnWrapper.getItemType())
) {
String cellContent = row.get(columnWrapper.getColIndexs().get(0));
columnWrapper.setCellContent(cellContent);
columnWrapper.setColValue(cellContent);
} else if ("select".equals(columnWrapper.getItemType())
|| "radio".equals(columnWrapper.getItemType())){
String optionSourceType = columnWrapper.getOptionSourceType();
// 取单元格的内容
String cellContent = row.get(columnWrapper.getColIndexs().get(0));
columnWrapper.setCellContent(cellContent);
if ("local".equals(optionSourceType)) {
// 根据单元格内容,取到指定的option
Map<String, String> options = columnWrapper.getOptions();
String colValue = options.get(cellContent);
columnWrapper.setColValue(colValue);
} else {
// remote类型
Map<String, String> options = listRemoteOptions(headerColumnWrapper, columnWrapper.getOptionSourceValue(), currUserAgencyId);
String colValue = options.get(cellContent);
columnWrapper.setColValue(colValue);
}
} else if ("checkbox".equals(columnWrapper.getItemType())) {
String checkBoxColValue = getCheckBoxColValue(columnWrapper, row, checkBoxOptionColumnIdxAndLabel);
columnWrapper.setColValue(checkBoxColValue);
}
columnAndValues.put(columnWrapper.columnName, columnWrapper.colValue);
}
columnAndValues.put("IS_ENSURE_HOUSE", "0");
columnAndValues.put("IS_OLD_PEOPLE", "0");
columnAndValues.put("IS_PARTY", "0");
columnAndValues.put("IS_SPECIAL", "0");
columnAndValues.put("IS_UNEMPLOYED", "0");
columnAndValues.put("IS_UNITED_FRONT", "0");
columnAndValues.put("IS_VETERANS", "0");
columnAndValues.put("IS_VOLUNTEER", "0");
columnAndValues.put("AGENCY_ID", currUserAgencyId);
columnAndValues.put("PIDS", currUserAgencyPids);
columnAndValues.put("CUSTOMER_ID", loginUserUtil.getCurrentCustomerId());
columnAndValues.put("CREATED_BY", currentUserId);
columnAndValues.put("UPDATED_BY", currentUserId);
columnAndValues.put("ID", UUID.randomUUID().toString().replace("-", ""));
// rowColumnWrappers.forEach(c -> {
// System.out.println(c.columnName + "\t" + c.getColValue());
// });
// System.out.println("-------------------");
baseDao.add(tableName, columnAndValues);
}
}
/**
* 根据formCode查询该form的item列表
* @param formCode
* @return
*/
private List<FormItem> listFormItems(String formCode) {
CustomerFormQueryDTO form = new CustomerFormQueryDTO();
form.setFormCode(formCode);
Result<List<FormItem>> result = operCustomizeOpenFeignClient.listItems(form);
return getResultDataOrThrowsException(result, ServiceConstant.OPER_CUSTOMIZE_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【居民信息excel导入】查询表单相关信息失败");
}
/**
* @description 合并头
*
* @param headers
* @return
* @author wxz
* @date 2021.10.28 21:27:18
*/
private HashMap<String, List<Integer>> combineHeaders(Map<Integer, List<String>> headers) {
HashMap<String, List<Integer>> itemAndColIndexs = new LinkedHashMap<>();
headers.forEach((k, v) -> {
String tempKey = String.join(":", v);
List<Integer> colIndexs = itemAndColIndexs.get(tempKey);
if (colIndexs == null) {
colIndexs = new ArrayList<>();
itemAndColIndexs.put(tempKey, colIndexs);
}
colIndexs.add(k);
});
return itemAndColIndexs;
}
/**
* @description 洗头
*
* @param headers
* @param items
* @return
* @author wxz
* @date 2021.10.28 21:07:12
*/
private Map<Integer, String> washHeaders(Map<Integer, List<String>> headers, List<FormItem> items) {
List<String> itemLabels = items.stream().map(i -> i.getLabel()).collect(Collectors.toList());
Map<Integer, String> abandonedHeaders = new HashMap<>();
for (Map.Entry<Integer, List<String>> entry:headers.entrySet()) {
Integer colIdx = entry.getKey();
List<String> v = entry.getValue();
int lastPartIndex = v.size() - 1;
String lastValuePart = v.get(lastPartIndex);
if (!itemLabels.contains(lastValuePart)) {
// 该部分为options,它的上一级是item,那么去掉options这一级
v.remove(lastPartIndex);
abandonedHeaders.put(colIdx, lastValuePart);
}
}
return abandonedHeaders;
}
/**
* @description 数据整合将excel表头汉字信息转化成ColumnWrapper列封装数据
* * key:itemId
* * value:ColumnWrapper列包装信息
* @param formItemMap item map
* key:itemId;
* value: 合并之后的head字符串例如健康信息:监护人
* @param combinedHeaders 合并之后的head信息
* key合并之后head字符串(例如党员信息:入党时间)
* value列号组成的列表(例如[1,2,3])
* @param datas
* @param abandonedHeaders
* @return
*/
private Map<String, ColumnWrapper> convertExcelHeaders2DBColumnWrappers(Map<String, FormItem> formItemMap, Map<String, List<Integer>> combinedHeaders,
List<Map<Integer, String>> datas, Map<Integer, String> abandonedHeaders) {
// HashMap<String, List<ColumnWrapper>> tables = new HashMap<>();
Map<String, ColumnWrapper> columns = new LinkedHashMap<>(combinedHeaders.size());
for (Map.Entry<String, List<Integer>> entry : combinedHeaders.entrySet()) {
String combinedHeader = entry.getKey();
FormItem item = formItemMap.get(combinedHeader);
if (item == null) {
// 如果数据库中没有该项,可能是用户自己定义的项,忽略
continue;
}
ColumnWrapper columnWrapper = new ColumnWrapper();
// 填充options
columnWrapper.setItemType(item.getItemType());
columnWrapper.setItemId(item.getItemId());
String groupLabel = item.getGroupLabel();
String combinedLabel = StringUtils.isBlank(groupLabel) ? item.getLabel() : groupLabel.concat(":").concat(item.getLabel());
columnWrapper.setCombinedLabel(combinedLabel);
columnWrapper.setColumnName(item.getColumnName());
columnWrapper.setColIndexs(entry.getValue());
columnWrapper.setOptionSourceType(item.getOptionSourceType());
columnWrapper.setOptionSourceValue(item.getOptionSourceValue());
columnWrapper.setOptions(item.getOptions().stream().collect(Collectors.toMap(OptionDTO::getLabel, OptionDTO::getValue)));
columns.put(item.getItemId(), columnWrapper);
}
return columns;
}
/**
* 获取checkbox列值
* @param columnWrapper 数据库列包装信息每一列跳数据对应数据库的一个列
* @param dataRow 数据行每一条都是一行中的一个单元格
* @param checkboxOptions 复选框的选项k: 列号, value: checkboxlabel中文
* @return
*/
private String getCheckBoxColValue(ColumnWrapper columnWrapper, Map<Integer, String> dataRow, Map<Integer, String> checkboxOptions) {
Map<String, String> options = columnWrapper.getOptions();
List<Integer> colIndexs = columnWrapper.getColIndexs();
List<String> optionValues = colIndexs.stream().filter(i -> {
String cellContent = dataRow.get(i);
return StringUtils.isNotBlank(cellContent) && cellContent.equals("是");
}).map(i -> {
String checkboxOptionLabel = checkboxOptions.get(i);
return options.get(checkboxOptionLabel);
}).collect(Collectors.toList());
return String.join(",", optionValues);
}
/**
* 远程获取options
* @param fullUri
* @return
*/
private Map<String, String> listRemoteOptions(Map<String, ColumnWrapper> columnWrappers, String fullUri, String currUserAgencyId) {
String pureUri = null;
String cascadeItemId = null;
ColumnWrapper cascadeItemColumnWrapper = null;
if (fullUri.indexOf("?") != -1) {
String[] uriParts = fullUri.split("\\?");
pureUri = uriParts[0];
cascadeItemId = uriParts[1];
// 根据uri上的id,找到关联的itemid,从而找到关联的item的值
if (columnWrappers != null){
cascadeItemColumnWrapper = columnWrappers.get(cascadeItemId);
}
} else {
pureUri = fullUri;
}
List<OptionResultDTO> options = null;
switch (pureUri) {
case "/epmetuser/icresidemanddict/demandoption":
options = getResultDataOrThrowsException(epmetUserOpenFeignClient.getDemandOptions(), ServiceConstant.EPMET_USER_SERVER,
EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/gov/org/customergrid/gridoption":
AgencyIdFormDTO form = new AgencyIdFormDTO();
form.setAgencyId(currUserAgencyId);
options = getResultDataOrThrowsException(govOrgOpenFeignClient.getGridOption(form), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/gov/org/customerpartybranch/branchoption":
CustomerPartyBranchDTO bform = new CustomerPartyBranchDTO();
bform.setGridId(cascadeItemColumnWrapper.getColValue());
options = getResultDataOrThrowsException(govOrgOpenFeignClient.getBranchOption(bform), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/gov/org/icbuilding/buildingoption":
IcBuildingDTO buildingform = new IcBuildingDTO();
buildingform.setNeighborHoodId(cascadeItemColumnWrapper.getColValue());
options = getResultDataOrThrowsException(govOrgOpenFeignClient.getBuildingOptions(buildingform), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/gov/org/icbuildingunit/unitoption":
IcBuildingUnitDTO buForm = new IcBuildingUnitDTO();
buForm.setBuildingId(cascadeItemColumnWrapper.getColValue());
options = getResultDataOrThrowsException(govOrgOpenFeignClient.getUnitOptions(buForm), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/gov/org/ichouse/houseoption":
HouseFormDTO hform = new HouseFormDTO();
hform.setUnitId(cascadeItemColumnWrapper.getColValue());
options = getResultDataOrThrowsException(govOrgOpenFeignClient.getHouseOption(hform), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/gov/org/icneighborhood/neighborhoodoption":
IcNeighborHoodDTO nform = new IcNeighborHoodDTO();
nform.setAgencyId(currUserAgencyId);
nform.setGridId(cascadeItemColumnWrapper.getColValue());
options = getResultDataOrThrowsException(govOrgOpenFeignClient.getNeighborHoodOptions(nform), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/sys/dict/data/education":
options = getResultDataOrThrowsException(adminOpenFeignClient.getEducationOption(), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/sys/dict/data/house":
options = getResultDataOrThrowsException(adminOpenFeignClient.getHouseOption(), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/sys/dict/data/nation":
options = getResultDataOrThrowsException(adminOpenFeignClient.getNationOption(), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/sys/dict/data/ninesmallplaces":
options = getResultDataOrThrowsException(adminOpenFeignClient.getNineSmallPlacesOption(), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
case "/sys/dict/data/relationship":
options = getResultDataOrThrowsException(adminOpenFeignClient.getRelationshipOption(), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null);
break;
}
if (options == null) {
return null;
}
return options.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue));
// 通用api调用,无法实现
/*if (!uri.startsWith("/api")) uri = "/api".concat(uri);
NamingService namingService = discoveryProperties.namingServiceInstance();
ResponseEntity<Result<List<OptionResultDTO>>> response = null;
try {
// 调用gateway服务,查询相关接口
Instance gatewayInstance = namingService.getAllInstances(ServiceConstant.EPMET_GATEWAY).get(0);
String ip = gatewayInstance.getIp();
int port = gatewayInstance.getPort();
String url = String.format("http://%s:%s%s", ip, port, uri);
ParameterizedTypeReference<Result<List<OptionResultDTO>>> tr = new ParameterizedTypeReference<Result<List<OptionResultDTO>>>() {};
response = new RestTemplate().exchange(url, HttpMethod.POST, null, tr);
} catch (NacosException e) {
e.printStackTrace();
}
if (response != null && (response.getStatusCode() == HttpStatus.OK)) {
List<OptionResultDTO> options = response.getBody().getData();
if (options == null) {
System.out.println(6);
}
return options.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue));
} else {
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
}*/
}
/**
* @description 合并表头
* Map<Integer, List<String>>
*
* @param headList
* @return
* @author wxz
* @date 2021.10.27 16:17:34
*/
private Map<Integer, List<String>> mergeHead(List<Map<Integer, String>> headList) {
Map<Integer, String> lastNotNullHeads = new LinkedHashMap<>();
Map<Integer, List<String>> mergedHead = new LinkedHashMap<>();
int levelCount = headList.size();
Map<Integer, String> firstLevel = headList.get(0);
// 遍历所有列
for (Map.Entry<Integer, String> column : firstLevel.entrySet()) {
Integer columIndex = column.getKey();
List<String> labels = new ArrayList<>();
// 竖着遍历该列的所有行
for (int currentLevel = 0; currentLevel < levelCount; currentLevel ++) {
String label = headList.get(currentLevel).get(columIndex);
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(label)) {
labels.add(label);
}
}
mergedHead.put(columIndex, labels);
}
return mergedHead;
}
/**
* @description 列信息封装
*
* @return
* @author wxz
* @date 2021.10.28 22:18:05
*/
@Data
public static class ColumnWrapper {
private String combinedLabel;
private String columnName;
private String itemType;
private String itemId;
private List<Integer> colIndexs;
//private List<String> colContents;
// 单元格内容
private String cellContent;
// 数据库中列的值
private String colValue;
// key:label,value:value
private Map<String, String> options;
/**
* 选项来源,REMOTE;LOCAL;如果是动态加载的下拉框或者CHECKBOX等的情况下使用URL:接口获取(LABEL,VALUE)JSON:直接从JSON中取
*/
private String optionSourceType;
/**
* 来源地址,REMOTE才有固定格式;如果OPTIONS_SOURCE是URL则此处填写要调用的接口的URL相对路径例如/API/GOV/ORG/XXXX此处不应设置参数若需要参数应当完全由后端通过TOKEN信息来获取
*/
private String optionSourceValue;
}
/**
* desc:动态查询 某表的所有字段值
* @param customerId
@ -1075,7 +534,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
if (v.getOptionSourceType().equals("remote")) {
try {
//todo 获取 options
Map<String, String> stringMap = listRemoteOptions(new HashMap<>(), v.getOptionSourceValue(), null);
Map<String, String> stringMap = icResiUserImportService.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())) {
@ -1146,4 +605,44 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
});
return result;
}
/**
* @param userId
* @Description 家庭关系
* @Param userId
* @Return {@link OwnerRelationResultDTO}
* @Author zhaoqifeng
* @Date 2021/11/5 10:28
*/
@Override
public OwnerRelationResultDTO getOwnerRelation(String userId) {
OwnerRelationResultDTO result = new OwnerRelationResultDTO();
//获取用户信息
IcResiUserEntity user = baseDao.selectById(userId);
//获取用户所在家庭的户主
Result<IcHouseDTO> houseResult = govOrgOpenFeignClient.get(user.getHomeId());
if (!houseResult.success()) {
throw new RenException(houseResult.getCode(),houseResult.getMsg());
}
result.setOwnerName(houseResult.getData().getOwnerName());
//获取用户所在家庭里所有人员信息
LambdaQueryWrapper<IcResiUserEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(IcResiUserEntity::getHomeId, user.getHomeId());
wrapper.orderByAsc(IcResiUserEntity::getYhzgx);
List<IcResiUserEntity> resiUserList = baseDao.selectList(wrapper);
List<OwnerRelationResultDTO.UserListBean> userList = resiUserList.stream().map(item -> {
OwnerRelationResultDTO.UserListBean bean = new OwnerRelationResultDTO.UserListBean();
bean.setUserId(item.getId());
bean.setUserName(item.getName());
bean.setRelation(RelationshipEnum.getEnum(item.getYhzgx()).getName());
if (userId.equals(item.getId())) {
bean.setIsSelf(NumConstant.ONE_STR);
}
return bean;
}).collect(Collectors.toList());
result.setUserList(userList);
return result;
}
}

Loading…
Cancel
Save