diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/CommonAggFeignClient.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/CommonAggFeignClient.java index 5bfb7b698f..5a03583011 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/CommonAggFeignClient.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/CommonAggFeignClient.java @@ -2,11 +2,14 @@ package com.epmet.commons.tools.feign; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.feign.fallback.CommonAggFeignClientFallBackFactory; +import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; import com.epmet.commons.tools.redis.common.bean.CustomerStaffInfoCache; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.utils.Result; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; /** @@ -24,4 +27,22 @@ public interface CommonAggFeignClient { */ @PostMapping("/data/aggregator/epmetuser/getStaffInfo/{staffId}") Result getStaffInfo(@PathVariable("staffId") String staffId); + + /** + * @Description 查询组织信息 + * @param agencyId + * @author zxc + * @date 2021/11/5 2:54 下午 + */ + @PostMapping("/data/aggregator/org/agency") + Result getAgencyInfo(@RequestParam("agencyId")String agencyId); + + /** + * @Description 查询网格信息 + * @param gridId + * @author zxc + * @date 2021/11/5 2:54 下午 + */ + @PostMapping("/data/aggregator/org/grid") + Result getGridInfo(@RequestParam("gridId")String gridId); } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/fallback/CommonAggFeignClientFallback.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/fallback/CommonAggFeignClientFallback.java index 2495d6b588..02f209f4f2 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/fallback/CommonAggFeignClientFallback.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/fallback/CommonAggFeignClientFallback.java @@ -2,7 +2,9 @@ package com.epmet.commons.tools.feign.fallback; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.feign.CommonAggFeignClient; +import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; import com.epmet.commons.tools.redis.common.bean.CustomerStaffInfoCache; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; import org.springframework.stereotype.Component; @@ -20,4 +22,14 @@ public class CommonAggFeignClientFallback implements CommonAggFeignClient { public Result getStaffInfo(String staffId) { return ModuleUtils.feignConError(ServiceConstant.DATA_AGGREGATOR_SERVER, "getStaffInfo", staffId); } + + @Override + public Result getAgencyInfo(String agencyId) { + return ModuleUtils.feignConError(ServiceConstant.DATA_AGGREGATOR_SERVER, "getAgencyInfo", agencyId); + } + + @Override + public Result getGridInfo(String gridId) { + return ModuleUtils.feignConError(ServiceConstant.DATA_AGGREGATOR_SERVER, "getGridInfo", gridId); + } } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerOrgRedis.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerOrgRedis.java new file mode 100644 index 0000000000..9cf82c29d6 --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerOrgRedis.java @@ -0,0 +1,93 @@ +package com.epmet.commons.tools.redis.common; + +import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSON; +import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.feign.CommonAggFeignClient; +import com.epmet.commons.tools.redis.RedisKeys; +import com.epmet.commons.tools.redis.RedisUtils; +import com.epmet.commons.tools.redis.common.bean.*; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.Result; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import javax.annotation.PostConstruct; +import java.util.Map; + +/** + * @Author zxc + * @DateTime 2021/11/5 2:29 下午 + * @DESC + */ +@Slf4j +@Component +public class CustomerOrgRedis { + + @Autowired + private RedisUtils redisUtils; + + @Autowired + private CommonAggFeignClient commonAggFeignClient; + + private static CustomerOrgRedis customerOrgRedis; + private static final String ROLE_MAP_KEY = "roleMap"; + + @PostConstruct + public void init() { + customerOrgRedis = this; + customerOrgRedis.redisUtils = this.redisUtils; + customerOrgRedis.commonAggFeignClient = this.commonAggFeignClient; + } + + /** + * @Description 获取网格信息 + * @param gridId + * @author zxc + * @date 2021/11/5 3:12 下午 + */ + public static GridInfoCache getGridInfo(String gridId){ + String key = RedisKeys.getGridInfoKey(gridId); + Map grid = customerOrgRedis.redisUtils.hGetAll(key); + if (!CollectionUtils.isEmpty(grid)) { + return ConvertUtils.mapToEntity(grid, GridInfoCache.class); + } + Result gridInfoResult = customerOrgRedis.commonAggFeignClient.getGridInfo(gridId); + if (!gridInfoResult.success()){ + throw new RenException("查询网格信息失败..."); + } + if (null == gridInfoResult.getData()){ + throw new RenException("没有此网格信息..."); + } + Map map = BeanUtil.beanToMap(gridInfoResult.getData(), false, true); + customerOrgRedis.redisUtils.hMSet(key, map); + return gridInfoResult.getData(); + } + + /** + * @Description 获取组织信息 + * @param agencyId + * @author zxc + * @date 2021/11/5 3:12 下午 + */ + public static AgencyInfoCache getAgencyInfo(String agencyId){ + String key = RedisKeys.getAgencyByIdKey(agencyId); + Map agency = customerOrgRedis.redisUtils.hGetAll(key); + if (!CollectionUtils.isEmpty(agency)) { + return ConvertUtils.mapToEntity(agency, AgencyInfoCache.class); + } + Result agencyInfoResult = customerOrgRedis.commonAggFeignClient.getAgencyInfo(agencyId); + if (!agencyInfoResult.success()){ + throw new RenException("查询组织信息失败..."); + } + if (null == agencyInfoResult.getData()){ + throw new RenException("没有此组织信息..."); + } + Map map = BeanUtil.beanToMap(agencyInfoResult.getData(), false, true); + customerOrgRedis.redisUtils.hMSet(key, map); + return agencyInfoResult.getData(); + } + +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/AgencyInfoCache.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/AgencyInfoCache.java new file mode 100644 index 0000000000..684440db65 --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/AgencyInfoCache.java @@ -0,0 +1,142 @@ +package com.epmet.commons.tools.redis.common.bean; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Author zxc + * @DateTime 2021/11/5 2:45 下午 + * @DESC + */ +@Data +public class AgencyInfoCache implements Serializable { + + private static final long serialVersionUID = -1332373159954084159L; + + /** + * ID + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * 上级组织机构ID + */ + private String pid; + + /** + * 所有上级组织机构ID(以英文:隔开) + */ + private String pids; + + /** + * 所有上级名称,以-连接 + */ + private String allParentName; + + /** + * 组织名称 + */ + private String organizationName; + + /** + * 机关级别(社区级:community, + 乡(镇、街道)级:street, + 区县级: district, + 市级: city + 省级:province) 机关级别(社区级:community,乡(镇、街道)级:street,区县级: district,市级: city省级:province) + */ + private String level; + + /** + * 地区编码 + */ + private String areaCode; + + /** + * 删除标识 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + + /** + * 总人数 + */ + private Integer totalUser; + + /** + * 省 + */ + private String province; + + /** + * 市 + */ + private String city; + + /** + * 区县 + */ + private String district; + + /** + * 当前组织的上级行政地区编码add0204;举例平阴县对应的是济南市3701 + */ + private String parentAreaCode; + + /** + * 街道 + */ + private String street; + + /** + * 社区 + */ + private String community; + + /** + * 坐标区域 + */ + private String coordinates; + + + /** + * 中心位置经度 + */ + private String longitude; + + /** + * 中心位置纬度 + */ + private String latitude; +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/GridInfoCache.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/GridInfoCache.java new file mode 100644 index 0000000000..cf90afee5b --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/GridInfoCache.java @@ -0,0 +1,116 @@ +package com.epmet.commons.tools.redis.common.bean; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Author zxc + * @DateTime 2021/11/5 2:24 下午 + * @DESC + */ +@Data +public class GridInfoCache implements Serializable { + + private static final long serialVersionUID = -6159429894486235267L; + + + /** + * ID 唯一标识 + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * 网格名称 + */ + private String gridName; + + /** 组织-网格 */ + private String gridNamePath; + + /** + * 中心位置经度 + */ + private String longitude; + + /** + * 中心位置纬度 + */ + private String latitude; + + /** + * 所属地区码(所属组织地区码) + */ + private String areaCode; + + /** + * 删除标识:0.未删除 1.已删除 + */ + private Integer delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + + /** + * 管辖区域 + */ + private String manageDistrict; + + /** + * 当前网格总人数 + */ + private Integer totalUser; + + /** + * 所属组织机构ID(customer_organization.id) + */ + private String pid; + + /** + * 所有上级组织ID + */ + private String pids; + + /** + * 所属组织机构名 + */ + private String agencyName; + + /** + * 所有上级组织名 + */ + private String allParentName; + + /** + * 坐标区域 + */ + private String coordinates; +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerGridDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerGridDTO.java index 10620c89d2..fcb6d13250 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerGridDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerGridDTO.java @@ -59,6 +59,11 @@ public class CustomerGridDTO implements Serializable { */ private String latitude; + /** + * 坐标区域 + */ + private String coordinates; + /** * 所属地区码(所属组织地区码) */ @@ -123,4 +128,9 @@ public class CustomerGridDTO implements Serializable { * 所有上级组织名 */ private String allParentName; + + /** + * 组织-网格 + */ + private String gridNamePath; } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java index 17f939b2c6..14500cc2ab 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java @@ -9,18 +9,19 @@ import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO; +import com.epmet.dataaggre.dto.govorg.CustomerGridDTO; import com.epmet.dataaggre.dto.govorg.form.*; import com.epmet.dataaggre.dto.govorg.result.*; +import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity; +import com.epmet.dataaggre.entity.govorg.CustomerGridEntity; import com.epmet.dataaggre.enums.GridMemberDataAnalysisEnums; import com.epmet.dataaggre.service.AggreGridService; import com.epmet.dataaggre.service.govorg.GovOrgService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; @@ -178,4 +179,26 @@ public class GovOrgController { return new Result>().ok(govOrgService.getAgencyTree(tokenDto, formDTO)); } + /** + * @Description 查询组织信息 + * @param agencyId + * @author zxc + * @date 2021/11/5 2:54 下午 + */ + @PostMapping("agency") + public Result getAgencyInfo(@RequestParam("agencyId")String agencyId){ + return new Result().ok(govOrgService.getAgencyInfo(agencyId)); + } + + /** + * @Description 查询网格信息 + * @param gridId + * @author zxc + * @date 2021/11/5 2:54 下午 + */ + @PostMapping("grid") + public Result getGridInfo(@RequestParam("gridId")String gridId){ + return new Result().ok(govOrgService.getGridInfo(gridId)); + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerGridDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerGridDao.java index 56d07daafb..4ee22247f2 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerGridDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerGridDao.java @@ -76,4 +76,12 @@ public interface CustomerGridDao extends BaseDao { **/ List getGridListByAgencyId(@Param("agencyId") String agencyId); + /** + * @Description 查询网格信息 + * @param gridId + * @author zxc + * @date 2021/11/5 3:39 下午 + */ + CustomerGridDTO getGridInfo(@Param("gridId") String gridId); + } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java index 0ed6454168..77c8c33d0f 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java @@ -10,6 +10,8 @@ import com.epmet.dataaggre.dto.govorg.form.StaffDetailV2FormDTO; import com.epmet.dataaggre.dto.govorg.form.SubOrgFormDTO; import com.epmet.dataaggre.dto.govorg.result.*; import com.epmet.dataaggre.dto.resigroup.result.OrgInfoCommonDTO; +import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity; +import com.epmet.dataaggre.entity.govorg.CustomerGridEntity; import java.util.List; @@ -155,4 +157,19 @@ public interface GovOrgService { */ List getStaffOrgList(String staffId); + /** + * @Description 查询组织信息 + * @param agencyId + * @author zxc + * @date 2021/11/5 2:54 下午 + */ + CustomerAgencyEntity getAgencyInfo(String agencyId); + + /** + * @Description 查询网格信息 + * @param gridId + * @author zxc + * @date 2021/11/5 2:57 下午 + */ + CustomerGridDTO getGridInfo(String gridId); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java index 17b0fcfe8c..79dafa6741 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java @@ -20,6 +20,7 @@ import com.epmet.dataaggre.dto.govorg.form.SubOrgFormDTO; import com.epmet.dataaggre.dto.govorg.result.*; import com.epmet.dataaggre.dto.resigroup.result.OrgInfoCommonDTO; import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity; +import com.epmet.dataaggre.entity.govorg.CustomerGridEntity; import com.epmet.dataaggre.service.commonservice.AreaCodeService; import com.epmet.dataaggre.service.epmetuser.EpmetUserService; import com.epmet.dataaggre.service.govorg.GovOrgService; @@ -532,5 +533,27 @@ public class GovOrgServiceImpl implements GovOrgService { return customerAgencyDao.getOrgList(staffId); } + /** + * @Description 查询组织信息 + * @param agencyId + * @author zxc + * @date 2021/11/5 2:54 下午 + */ + @Override + public CustomerAgencyEntity getAgencyInfo(String agencyId) { + return customerAgencyDao.selectById(agencyId); + } + + /** + * @Description 查询网格信息 + * @param gridId + * @author zxc + * @date 2021/11/5 2:57 下午 + */ + @Override + public CustomerGridDTO getGridInfo(String gridId) { + return customerGridDao.getGridInfo(gridId); + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml index 0fa266afc8..fde243eafa 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml @@ -163,4 +163,16 @@ AND cg.pid = #{agencyId} + + + diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/CategoryProjectListFormDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/CategoryProjectListFormDTO.java new file mode 100644 index 0000000000..d182572061 --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/CategoryProjectListFormDTO.java @@ -0,0 +1,49 @@ +package com.epmet.project.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/11/4 3:23 下午 + * @DESC + */ +@Data +public class CategoryProjectListFormDTO implements Serializable { + + private static final long serialVersionUID = -5448734274886241594L; + + public interface CategoryProjectListForm{} + + @NotNull(message = "pageSize不能为空",groups = CategoryProjectListForm.class) + private Integer pageSize; + + @NotNull(message = "pageNo不能为空",groups = CategoryProjectListForm.class) + private Integer pageNo; + + /** + * 项目状态:closed:已结案,all:全部 + */ + @NotNull(message = "status不能为空",groups = CategoryProjectListForm.class) + private String status; + + @NotNull(message = "categoryCode不能为空",groups = CategoryProjectListForm.class) + private String categoryCode; + + /** + * 组织ID + */ + private String orgId; + + /** + * 组织类型:agency:组织,grid:网格 + */ + private String orgType; + + /** + * 是否分页,默认true,false的时候 给导出用 + */ + private Boolean isPage = true; +} diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/ProjectCategoryFormDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/ProjectCategoryFormDTO.java new file mode 100644 index 0000000000..34043933bc --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/ProjectCategoryFormDTO.java @@ -0,0 +1,37 @@ +package com.epmet.project.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/11/4 3:18 下午 + * @DESC + */ +@Data +public class ProjectCategoryFormDTO implements Serializable { + + private static final long serialVersionUID = 5047143743629810527L; + + public interface ProjectCategoryForm{} + + /** + * 组织ID + */ + private String orgId; + + /** + * 组织类型 组织:agency,网格:grid + */ + private String orgType; + + @NotBlank(message = "结束时间不能为空",groups = ProjectCategoryForm.class) + private String endTime; + + /** + * 开始时间 + */ + private String startTime; +} diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/CategoryProjectListResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/CategoryProjectListResultDTO.java new file mode 100644 index 0000000000..c1e191b8bb --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/CategoryProjectListResultDTO.java @@ -0,0 +1,61 @@ +package com.epmet.project.dto.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/11/4 3:31 下午 + * @DESC + */ +@Data +public class CategoryProjectListResultDTO implements Serializable { + + private static final long serialVersionUID = 8820354423099062062L; + + /** + * 分类 + */ + private String category; + + /** + * 项目状态:待处理 pending,结案closed + */ + private String projectStatus; + + /** + * 项目标题 + */ + private String projectTitle; + + /** + * 网格 + */ + private String gridName; + + /** + * 项目创建时间 + */ + private String createTime; + + /** + * 项目ID + */ + private String projectId; + + @JsonIgnore + private String orgId; + + @JsonIgnore + private String orgType; + + public CategoryProjectListResultDTO() { + this.category = ""; + this.projectStatus = ""; + this.projectTitle = ""; + this.gridName = ""; + this.createTime = ""; + } +} diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/PageCategoryProjectListResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/PageCategoryProjectListResultDTO.java new file mode 100644 index 0000000000..c17f00bf77 --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/PageCategoryProjectListResultDTO.java @@ -0,0 +1,28 @@ +package com.epmet.project.dto.result; + +import com.epmet.commons.tools.constant.NumConstant; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2021/11/5 1:51 下午 + * @DESC + */ +@Data +public class PageCategoryProjectListResultDTO implements Serializable { + + private static final long serialVersionUID = 8822993169364931502L; + + private Integer total; + + private List list; + + public PageCategoryProjectListResultDTO() { + this.total = NumConstant.ZERO; + this.list = new ArrayList<>(); + } +} diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/ProjectCategoryResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/ProjectCategoryResultDTO.java new file mode 100644 index 0000000000..f94fe8cb40 --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/ProjectCategoryResultDTO.java @@ -0,0 +1,64 @@ +package com.epmet.project.dto.result; + +import com.epmet.commons.tools.constant.NumConstant; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2021/11/4 3:13 下午 + * @DESC + */ +@Data +public class ProjectCategoryResultDTO implements Serializable { + + private static final long serialVersionUID = -2662970383306349424L; + + /** + * 分类CODE + */ + private String categoryCode; + + /** + * 分类名字 + */ + private String categoryName; + + /** + * 项目总数 + */ + private Integer projectTotal; + + /** + * 结案项目数 + */ + private Integer closedProjectTotal; + + /** + * 总数占比 + */ + private String totalRatio; + + /** + * 结案率 + */ + private String closedRatio; + + private List children; + @JsonIgnore + private int index; + + public ProjectCategoryResultDTO() { + this.categoryCode = ""; + this.categoryName = ""; + this.projectTotal = NumConstant.ZERO; + this.closedProjectTotal = NumConstant.ZERO; + this.totalRatio = ""; + this.closedRatio = ""; + this.children = new ArrayList<>(); + } +} diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/ProjectCategorySonResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/ProjectCategorySonResultDTO.java new file mode 100644 index 0000000000..22cbbbd0bb --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/ProjectCategorySonResultDTO.java @@ -0,0 +1,56 @@ +package com.epmet.project.dto.result; + +import com.epmet.commons.tools.constant.NumConstant; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/11/4 3:13 下午 + * @DESC + */ +@Data +public class ProjectCategorySonResultDTO implements Serializable { + + private static final long serialVersionUID = -2662970383306349424L; + + /** + * 分类CODE + */ + private String categoryCode; + + /** + * 分类名字 + */ + private String categoryName; + + /** + * 项目总数 + */ + private Integer projectTotal; + + /** + * 结案项目数 + */ + private Integer closedProjectTotal; + + /** + * 总数占比 + */ + private String totalRatio; + + /** + * 结案率 + */ + private String closedRatio; + + public ProjectCategorySonResultDTO() { + this.categoryCode = ""; + this.categoryName = ""; + this.projectTotal = NumConstant.ZERO; + this.closedProjectTotal = NumConstant.ZERO; + this.totalRatio = ""; + this.closedRatio = ""; + } +} diff --git a/epmet-module/data-report/data-report-server/pom.xml b/epmet-module/data-report/data-report-server/pom.xml index 43c7bffcae..15936771b6 100644 --- a/epmet-module/data-report/data-report-server/pom.xml +++ b/epmet-module/data-report/data-report-server/pom.xml @@ -116,6 +116,16 @@ true + + org.apache.maven.plugins + maven-resources-plugin + + + xls + xlsx + + + ${project.basedir}/src/main/java diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java index 94cd036277..afc882a39d 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java @@ -1,5 +1,13 @@ package com.epmet.datareport.controller.screen; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.TemplateExportParams; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.datareport.service.evaluationindex.screen.ScreenProjectOrgDailyService; @@ -12,13 +20,24 @@ import com.epmet.evaluationindex.screen.dto.form.ScreenProjectDetailFormDTO; import com.epmet.evaluationindex.screen.dto.form.ScreenProjectDistributionFormDTO; import com.epmet.evaluationindex.screen.dto.result.ProjectDetailResultDTO; import com.epmet.evaluationindex.screen.dto.result.ScreenProjectDistributionResultDTO; +import com.epmet.project.dto.form.CategoryProjectListFormDTO; import com.epmet.project.dto.form.CategoryTopAppealFormDTO; +import com.epmet.project.dto.form.ProjectCategoryFormDTO; import com.epmet.project.dto.result.CategoryTopAppealResultDTO; +import com.epmet.project.dto.result.PageCategoryProjectListResultDTO; +import com.epmet.project.dto.result.ProjectCategoryResultDTO; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 项目 @@ -155,4 +174,69 @@ public class ScreenProjectController { return new Result>().ok(screenProjectService.categoryTopAppeal(formDTO)); } + + /** + * @Description 【项目分类】查询项目分类 + * @param formDTO + * @param tokenDto + * @author zxc + * @date 2021/11/4 3:38 下午 + */ + @PostMapping("selectprojectcategory") + public Result> selectProjectCategory(@RequestBody ProjectCategoryFormDTO formDTO, @LoginUser TokenDto tokenDto){ + ValidatorUtils.validateEntity(formDTO, ProjectCategoryFormDTO.ProjectCategoryForm.class); + return new Result>().ok(screenProjectService.selectProjectCategory(formDTO,tokenDto)); + } + /** + * @Description 【项目分类】查询项目分类 + * @param formDTO + * @param tokenDto + * @author zxc + * @date 2021/11/4 3:38 下午 + */ + @PostMapping("selectprojectcategory/export") + public void selectProjectCategoryExport(@RequestBody ProjectCategoryFormDTO formDTO, /*@LoginUser*/ TokenDto tokenDto, HttpServletResponse response) throws Exception { + tokenDto.setUserId("36bc0fb38565ecdebf8ab9b476b44548"); + tokenDto.setCustomerId("45687aa479955f9d06204d415238f7cc"); + ValidatorUtils.validateEntity(formDTO, ProjectCategoryFormDTO.ProjectCategoryForm.class); + List data = screenProjectService.selectProjectCategory(formDTO, tokenDto); + String templatePath = "excel/project_category_temp.xlsx"; + + StringBuilder dateBuilder = new StringBuilder(); + if (StringUtils.isNotBlank(formDTO.getStartTime())){ + dateBuilder.append(formDTO.getStartTime()).append(StrConstant.HYPHEN); + } + if (StringUtils.isNotBlank(formDTO.getEndTime())){ + dateBuilder.append(formDTO.getEndTime()); + } + List resultDTOList = new ArrayList<>(); + data.forEach(e->{ + resultDTOList.add(e); + e.setIndex(1); + resultDTOList.addAll(ConvertUtils.sourceToTarget(e.getChildren(),ProjectCategoryResultDTO.class)); + }); + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); + Map mapData = new HashMap<>(); + mapData.put("list",resultDTOList); + mapData.put("orgName",staffInfo.getAgencyName()); + mapData.put("exportDate",dateBuilder.toString()); + Workbook workbook = ExcelExportUtil.exportExcel(new TemplateExportParams(templatePath), mapData); + response.setHeader("content-Type", "application/vnd.ms-excel"); + response.addHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("项目分类统计.xls", "UTF-8")); + workbook.write(response.getOutputStream()); + } + + /** + * @Description 【项目分类】查询分类下的项目 + * @param formDTO + * @param tokenDto + * @author zxc + * @date 2021/11/4 3:39 下午 + */ + @PostMapping("selectcategoryprojectlist") + public Result selectCategoryProjectList(@RequestBody CategoryProjectListFormDTO formDTO, @LoginUser TokenDto tokenDto){ + ValidatorUtils.validateEntity(formDTO, CategoryProjectListFormDTO.CategoryProjectListForm.class); + return new Result().ok(screenProjectService.selectCategoryProjectList(formDTO,tokenDto)); + } + } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java index e3cf3d074d..93b6564f87 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java @@ -19,7 +19,9 @@ package com.epmet.datareport.dao.evaluationindex.screen; import com.epmet.dto.result.screen.CategoryAnalysisResultDTO; import com.epmet.project.CustomerProjectCategoryDTO; +import com.epmet.project.dto.form.ProjectCategoryFormDTO; import com.epmet.project.dto.result.CategoryTopAppealResultDTO; +import com.epmet.project.dto.result.ProjectCategoryResultDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -52,4 +54,33 @@ public interface ScreenProjectCategoryOrgDailyDao { * @date 2021/8/18 1:40 下午 */ List categoryTopAppeal(@Param("agencyId") String agencyId,@Param("customerId")String customerId,@Param("topCount")Integer topCount); + + /** + * @Description 组织查询分类 + * @param customerId + * @param time + * @param orgId + * @author zxc + * @date 2021/11/5 8:54 上午 + */ + List selectProjectCategoryByAgency(@Param("customerId")String customerId,@Param("time")String time,@Param("orgId")String orgId); + + /** + * @Description 网格查询分类 + * @param customerId + * @param time + * @param orgId + * @author zxc + * @date 2021/11/5 8:55 上午 + */ + List selectProjectCategoryByGrid(@Param("customerId")String customerId,@Param("time")String time,@Param("orgId")String orgId); + + /** + * @Description 查询客户下所有分类 + * @param customerId + * @author zxc + * @date 2021/11/4 5:45 下午 + */ + List selectCategoryByCustomerId(@Param("customerId")String customerId); + } \ No newline at end of file diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectDataDao.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectDataDao.java index 49797b9cb2..11c019e4d9 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectDataDao.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectDataDao.java @@ -3,6 +3,7 @@ package com.epmet.datareport.dao.evaluationindex.screen; import com.epmet.dto.result.screen.ColorProjectTotalResultDTO; import com.epmet.evaluationindex.screen.dto.result.ScreenProjectDetailResultDTO; import com.epmet.evaluationindex.screen.dto.result.ScreenProjectDistributionResultDTO; +import com.epmet.project.dto.result.CategoryProjectListResultDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -45,4 +46,15 @@ public interface ScreenProjectDataDao { * @date 2021/6/1 3:48 下午 */ List selectColorProjectByAreaCode(@Param("areaCode") String areaCode,@Param("monthCount")Integer monthCount); + + /** + * @Description 查询分类下的项目列表 + * @param customerId + * @param orgId + * @author zxc + * @date 2021/11/5 1:40 下午 + */ + List selectCategoryProjectList(@Param("customerId") String customerId,@Param("orgId") String orgId, + @Param("categoryCode")String categoryCode,@Param("status")String status); + } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectOrgDailyDao.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectOrgDailyDao.java index 2a26119d9c..aeb20bdb97 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectOrgDailyDao.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectOrgDailyDao.java @@ -19,6 +19,7 @@ package com.epmet.datareport.dao.evaluationindex.screen; import com.epmet.dto.result.screen.EfficiencyAnalysisResultDTO; import com.epmet.dto.result.screen.ProjectQuantityResultDTO; +import com.epmet.project.dto.form.ProjectCategoryFormDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -45,4 +46,9 @@ public interface ScreenProjectOrgDailyDao { * @description 下级组织的效率(解决率)列表 **/ List queryEfficiencyAnalysis(@Param("customerId")String customerId,@Param("areaCode") String areaCode); + + Integer selectProjectTotalByAgency(@Param("customerId")String customerId,@Param("time")String time,@Param("orgId")String orgId); + + Integer selectProjectTotalByGrid(@Param("customerId")String customerId,@Param("time")String time,@Param("orgId")String orgId); + } \ No newline at end of file diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/ScreenProjectService.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/ScreenProjectService.java index e8d9110198..2f268cd35e 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/ScreenProjectService.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/ScreenProjectService.java @@ -1,5 +1,6 @@ package com.epmet.datareport.service.evaluationindex.screen; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.form.screen.CategoryAnalysisFormDTO; import com.epmet.dto.form.screen.ColorProjectTotalFormDTO; @@ -10,8 +11,13 @@ import com.epmet.evaluationindex.screen.dto.form.ScreenProjectDetailFormDTO; import com.epmet.evaluationindex.screen.dto.form.ScreenProjectDistributionFormDTO; import com.epmet.evaluationindex.screen.dto.result.ProjectDetailResultDTO; import com.epmet.evaluationindex.screen.dto.result.ScreenProjectDistributionResultDTO; +import com.epmet.project.dto.form.CategoryProjectListFormDTO; import com.epmet.project.dto.form.CategoryTopAppealFormDTO; +import com.epmet.project.dto.form.ProjectCategoryFormDTO; +import com.epmet.project.dto.result.CategoryProjectListResultDTO; import com.epmet.project.dto.result.CategoryTopAppealResultDTO; +import com.epmet.project.dto.result.PageCategoryProjectListResultDTO; +import com.epmet.project.dto.result.ProjectCategoryResultDTO; import java.util.List; @@ -62,4 +68,24 @@ public interface ScreenProjectService { */ List categoryTopAppeal(CategoryTopAppealFormDTO formDTO); + + /** + * @Description 【项目分类】查询项目分类 + * @param formDTO + * @param tokenDto + * @author zxc + * @date 2021/11/4 3:38 下午 + */ + List selectProjectCategory(ProjectCategoryFormDTO formDTO, TokenDto tokenDto); + + /** + * @Description 【项目分类】查询分类下的项目 + * @param formDTO + * @param tokenDto + * @author zxc + * @date 2021/11/4 3:39 下午 + */ + PageCategoryProjectListResultDTO selectCategoryProjectList(CategoryProjectListFormDTO formDTO, TokenDto tokenDto); + + } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java index a23152697e..3a3fe87591 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java @@ -3,14 +3,18 @@ package com.epmet.datareport.service.evaluationindex.screen.impl; import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.DataSourceConstant; -import com.epmet.datareport.dao.evaluationindex.screen.ScreenEventDataDao; -import com.epmet.datareport.dao.evaluationindex.screen.ScreenEventImgDataDao; -import com.epmet.datareport.dao.evaluationindex.screen.ScreenProjectCategoryOrgDailyDao; -import com.epmet.datareport.dao.evaluationindex.screen.ScreenProjectDataDao; +import com.epmet.datareport.constant.FactConstant; +import com.epmet.datareport.dao.evaluationindex.screen.*; import com.epmet.datareport.service.evaluationindex.screen.ScreenProjectService; import com.epmet.dto.UserDTO; import com.epmet.dto.form.CustomerAgencyUserRoleFormDTO; @@ -26,15 +30,21 @@ import com.epmet.evaluationindex.screen.dto.result.ScreenProjectDetailResultDTO; import com.epmet.evaluationindex.screen.dto.result.ScreenProjectDistributionResultDTO; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.project.CustomerProjectCategoryDTO; +import com.epmet.project.dto.form.CategoryProjectListFormDTO; import com.epmet.project.dto.form.CategoryTopAppealFormDTO; -import com.epmet.project.dto.result.CategoryTopAppealResultDTO; +import com.epmet.project.dto.form.ProjectCategoryFormDTO; +import com.epmet.project.dto.result.*; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -63,6 +73,9 @@ public class ScreenProjectServiceImpl implements ScreenProjectService { @Autowired private EpmetUserOpenFeignClient userOpenFeignClient; + @Autowired + private ScreenProjectOrgDailyDao screenProjectOrgDailyDao; + /** * @Description 3、项目详情 * @param projectDetailFormDTO @@ -228,4 +241,153 @@ public class ScreenProjectServiceImpl implements ScreenProjectService { } return result; } + + + /** + * @Description 【项目分类】查询项目分类 + * @param formDTO + * @param tokenDto + * @author zxc + * @date 2021/11/4 3:38 下午 + */ + @Override + public List selectProjectCategory(ProjectCategoryFormDTO formDTO, TokenDto tokenDto) { + if (StringUtils.isBlank(formDTO.getOrgId())){ + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); + if (null == staffInfo){ + throw new RenException("未查询到此工作人员的所属组织信息..."); + } + formDTO.setOrgId(staffInfo.getAgencyId()); + formDTO.setOrgType(FactConstant.AGENCY); + } + String customerId = tokenDto.getCustomerId(); + String endTime = formDTO.getEndTime(); + String startTime = formDTO.getStartTime(); + String orgId = formDTO.getOrgId(); + // 查询客户下的所有分类 + List result = screenProjectCategoryOrgDailyDao.selectCategoryByCustomerId(tokenDto.getCustomerId()); + List endCategoryList = new ArrayList<>(); + if (formDTO.getOrgType().equals(FactConstant.GRID)){ + Integer endTotal = screenProjectOrgDailyDao.selectProjectTotalByGrid(customerId, endTime, orgId); + endTotal = null == endTotal ? NumConstant.ZERO : endTotal; + endCategoryList = screenProjectCategoryOrgDailyDao.selectProjectCategoryByGrid(customerId,endTime,orgId); + Integer total = endTotal; + if (StringUtils.isNotBlank(startTime)){ + Integer startTotal = screenProjectOrgDailyDao.selectProjectTotalByGrid(customerId, startTime, orgId); + startTotal = null == startTotal ? NumConstant.ZERO : startTotal; + total = endTotal - startTotal; + List startCategoryList = screenProjectCategoryOrgDailyDao.selectProjectCategoryByGrid(customerId,startTime,orgId); + endCategoryList.forEach(e -> startCategoryList.stream().filter(s -> e.getCategoryCode().equals(s.getCategoryCode())).forEach(s -> e.setProjectTotal(subtract(e.getProjectTotal(),s.getProjectTotal())))); + endCategoryList.forEach(e -> startCategoryList.stream().filter(s -> e.getCategoryCode().equals(s.getCategoryCode())).forEach(s -> e.setClosedProjectTotal(subtract(e.getClosedProjectTotal(),s.getClosedProjectTotal())))); + } + Integer finalTotal = total; + endCategoryList.forEach(e -> { + e.setTotalRatio(ratio(e.getProjectTotal(), finalTotal)); + e.setClosedRatio(ratio(e.getClosedProjectTotal(),e.getProjectTotal())); + }); + }else { + Integer endTotal = screenProjectOrgDailyDao.selectProjectTotalByAgency(customerId, endTime, orgId); + endTotal = null == endTotal ? NumConstant.ZERO : endTotal; + endCategoryList = screenProjectCategoryOrgDailyDao.selectProjectCategoryByAgency(customerId,endTime,orgId); + Integer total = endTotal; + if (StringUtils.isNotBlank(startTime)){ + Integer startTotal = screenProjectOrgDailyDao.selectProjectTotalByAgency(customerId, startTime, orgId); + startTotal = null == startTotal ? NumConstant.ZERO : startTotal; + total = endTotal - startTotal; + List startCategoryList = screenProjectCategoryOrgDailyDao.selectProjectCategoryByAgency(customerId,startTime,orgId); + endCategoryList.forEach(e -> startCategoryList.stream().filter(s -> e.getCategoryCode().equals(s.getCategoryCode())).forEach(s -> e.setProjectTotal(subtract(e.getProjectTotal(),s.getProjectTotal())))); + endCategoryList.forEach(e -> startCategoryList.stream().filter(s -> e.getCategoryCode().equals(s.getCategoryCode())).forEach(s -> e.setClosedProjectTotal(subtract(e.getClosedProjectTotal(),s.getClosedProjectTotal())))); + } + Integer finalTotal = total; + endCategoryList.forEach(e -> { + e.setTotalRatio(ratio(e.getProjectTotal(), finalTotal)); + e.setClosedRatio(ratio(e.getClosedProjectTotal(),e.getProjectTotal())); + }); + } + List finalEndCategoryList = endCategoryList; + result.forEach(r -> { + finalEndCategoryList.stream().filter(e -> r.getCategoryCode().equals(e.getCategoryCode())).forEach(e -> { + r.setTotalRatio(e.getTotalRatio());r.setClosedRatio(e.getClosedRatio()); + }); + r.getChildren().forEach(son -> finalEndCategoryList.stream().filter(e -> son.getCategoryCode().equals(e.getCategoryCode())).forEach(e -> { + son.setTotalRatio(e.getTotalRatio());son.setClosedRatio(e.getClosedRatio()); + })); + }); + // 排序 + List collect = result.stream().sorted(Comparator.comparing(ProjectCategoryResultDTO::getProjectTotal).reversed()).collect(Collectors.toList()); + collect.forEach(c -> { + c.setChildren(c.getChildren().stream().sorted(Comparator.comparing(ProjectCategoryResultDTO::getProjectTotal).reversed()).collect(Collectors.toList())); + }); + return collect; + } + + /** + * @Description 俩数相减,小于0就赋值为0 + * @param end + * @param start + * @author zxc + * @date 2021/11/5 9:18 上午 + */ + public Integer subtract(Integer end,Integer start){ + return end - start < NumConstant.ZERO ? NumConstant.ZERO : end - start; + } + + /** + * @Description 返回占比,保留小数点2位 + * @param molecule 分子 + * @param denominator 分母 + * @author zxc + * @date 2021/11/5 9:26 上午 + */ + public String ratio(Integer molecule, Integer denominator){ + if (denominator == NumConstant.ZERO){ + return "0.00%"; + } + BigDecimal bigDecimalMolecule = new BigDecimal(molecule); + BigDecimal bigDecimalDenominator = new BigDecimal(denominator); + BigDecimal divide = bigDecimalMolecule.divide(bigDecimalDenominator, NumConstant.TWO, BigDecimal.ROUND_HALF_UP); + return divide.multiply(NumConstant.ONE_HUNDRED_DECIMAL)+"%"; + } + + /** + * @Description 【项目分类】查询分类下的项目 + * @param formDTO + * @param tokenDto + * @author zxc + * @date 2021/11/4 3:39 下午 + */ + @Override + public PageCategoryProjectListResultDTO selectCategoryProjectList(CategoryProjectListFormDTO formDTO, TokenDto tokenDto) { + if (StringUtils.isBlank(formDTO.getOrgId())){ + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); + if (null == staffInfo){ + throw new RenException("未查询到此工作人员的所属组织信息..."); + } + formDTO.setOrgId(staffInfo.getAgencyId()); + formDTO.setOrgType(FactConstant.AGENCY); + } + PageCategoryProjectListResultDTO result = new PageCategoryProjectListResultDTO(); + List list; + if (formDTO.getIsPage()){ + PageInfo objectPageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> screenProjectDataDao.selectCategoryProjectList(tokenDto.getCustomerId(), formDTO.getOrgId(), formDTO.getCategoryCode(), formDTO.getStatus())); + list = objectPageInfo.getList(); + result.setTotal(Integer.valueOf(String.valueOf(objectPageInfo.getTotal()))); + }else { + list = screenProjectDataDao.selectCategoryProjectList(tokenDto.getCustomerId(), formDTO.getOrgId(), formDTO.getCategoryCode(), formDTO.getStatus()); + } + if (!CollectionUtils.isEmpty(list)){ + list.forEach(l -> { + if (l.getOrgType().equals(FactConstant.AGENCY)){ + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(l.getOrgId()); + l.setGridName(agencyInfo.getOrganizationName()); + }else { + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(l.getOrgId()); + l.setGridName(gridInfo.getGridNamePath()); + } + }); + } + result.setList(list); + return result; + } + } diff --git a/epmet-module/data-report/data-report-server/src/main/resources/excel/project_category_temp.xlsx b/epmet-module/data-report/data-report-server/src/main/resources/excel/project_category_temp.xlsx new file mode 100644 index 0000000000..f12e92967d Binary files /dev/null and b/epmet-module/data-report/data-report-server/src/main/resources/excel/project_category_temp.xlsx differ diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectCategoryOrgDailyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectCategoryOrgDailyDao.xml index 5731b27e2b..96d06f7f93 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectCategoryOrgDailyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectCategoryOrgDailyDao.xml @@ -63,4 +63,53 @@ AND DATE_ID = (select date_id from screen_project_category_org_daily where del_flag = '0' and ORG_ID = #{agencyId} and CUSTOMER_ID= #{customerId} order by date_id desc, created_time desc limit 1) ORDER BY PROJECT_TOTAL DESC LIMIT #{topCount} + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectDataDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectDataDao.xml index e890e36389..27681bacad 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectDataDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectDataDao.xml @@ -158,4 +158,25 @@ AND UNIX_TIMESTAMP(pd.CREATED_TIME) >= UNIX_TIMESTAMP(DATE_SUB(NOW(),INTERVAL #{monthCount} MONTH)) ) + + + diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectOrgDailyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectOrgDailyDao.xml index 4189b03d16..0294005b7f 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectOrgDailyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectOrgDailyDao.xml @@ -54,4 +54,30 @@ )and m.CUSTOMER_ID=#{customerId} order by resolvedRatio+0 desc + + + + + + \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyResultDTO.java index e4592c5b0b..808e25d791 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyResultDTO.java @@ -41,9 +41,12 @@ public class AgencyResultDTO implements Serializable { * 机关组织名称 */ private String agencyName = ""; + + private String pid; + private String level; /** * 所有上级组织机构ID(以英文:隔开) */ @JsonIgnore private String pids = ""; -} \ No newline at end of file +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyTreeResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyTreeResultDTO.java index 896ebfb57c..3afae3011a 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyTreeResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyTreeResultDTO.java @@ -24,6 +24,8 @@ public class AgencyTreeResultDTO implements Serializable { private String agencyName; private String pid; + + private String level; /** * 下级机关组织 */ diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/BuildingResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/BuildingResultDTO.java new file mode 100644 index 0000000000..4835cefba5 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/BuildingResultDTO.java @@ -0,0 +1,24 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description + * @Author zhaoqifeng + * @Date 2021/10/25 15:03 + */ +@Data +public class BuildingResultDTO implements Serializable { + private static final long serialVersionUID = -2129418426919785999L; + private String buildingId; + + private String gridName; + + private String neighborhoodName; + + private String buildingName; + +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseListResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseListResultDTO.java new file mode 100644 index 0000000000..a63f415e94 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseListResultDTO.java @@ -0,0 +1,30 @@ +package com.epmet.dto.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description + * @Author zhaoqifeng + * @Date 2021/11/5 15:59 + */ +@NoArgsConstructor +@Data +public class HouseListResultDTO implements Serializable { + + private static final long serialVersionUID = 2063032844842070847L; + private String houseId; + private String houseName; + private List categoryList; + + @NoArgsConstructor + @Data + public static class CategoryListBean { + private String name; + private String iconUrl; + private String isSpecial; + } +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java index 5b18f345d2..08cee7d65d 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java @@ -519,4 +519,7 @@ public interface GovOrgOpenFeignClient { @GetMapping("/gov/org/ichouse/{id}") Result get(@PathVariable("id") String id); + + @PostMapping("/gov/org/building/buildinglistbyids") + Result> buildingListByIds(@RequestBody List buildingIdList); } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java index c6e0f96aa4..7734d66901 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java @@ -315,6 +315,11 @@ public class GovOrgOpenFeignClientFallback implements GovOrgOpenFeignClient { return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "get", id); } + @Override + public Result> buildingListByIds(List buildingIdList) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "buildingListByIds", buildingIdList); + } + @Override public Result selectPidsByGridId(String gridId) { return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "selectPidsByGridId", gridId); diff --git a/epmet-module/gov-org/gov-org-server/pom.xml b/epmet-module/gov-org/gov-org-server/pom.xml index ccbc334ede..5b9c7fbf37 100644 --- a/epmet-module/gov-org/gov-org-server/pom.xml +++ b/epmet-module/gov-org/gov-org-server/pom.xml @@ -113,6 +113,12 @@ 2.0.0 compile + + com.epmet + oper-customize-client + 2.0.0 + compile + diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java index e576abec7c..c3222f2ad4 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java @@ -37,6 +37,7 @@ import com.epmet.dto.form.IcBulidingFormDTO; import com.epmet.dto.form.IcBulidingUnitFormDTO; import com.epmet.dto.form.IcNeighborHoodFormDTO; import com.epmet.dto.form.ListIcNeighborHoodFormDTO; +import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; import com.epmet.entity.IcBuildingUnitEntity; import com.epmet.excel.IcBuildingExcel; @@ -206,7 +207,7 @@ public class BuildingController { * @return * @throws IOException */ - @PostMapping("buildingunitlist") + public Result buildingunitlist(@LoginUser TokenDto tokenDTO,@RequestBody IcBulidingUnitFormDTO icBulidingUnitFormDTO ){ ValidatorUtils.validateEntity(icBulidingUnitFormDTO); List icBuildingUnitEntityList = icBuildingUnitDao.selectList(new QueryWrapper().lambda().eq(IcBuildingUnitEntity::getBuildingId, icBulidingUnitFormDTO.getBuildingId()).orderByAsc(IcBuildingUnitEntity::getUnitNum)); @@ -221,4 +222,15 @@ public class BuildingController { return new Result().ok(result); } + + @PostMapping("buildinglistbyids") + public Result> buildingListByIds(@RequestBody List buildingIdList){ + if(CollectionUtils.isEmpty(buildingIdList)){ + return new Result(); + } + List result = buildingService.buildingListByIds(buildingIdList); + return new Result>().ok(result); + + } + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java index 065c819c82..183b6f81f5 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java @@ -325,7 +325,7 @@ public class CustomerAgencyController { } /** - * @Description 获取客户下组织树 + * @Description 获取客户下组织树不含网格和部门 * @Param tokenDTO * @Return {@link Result< AgencyTreeResultDTO >} * @Author zhaoqifeng @@ -357,4 +357,16 @@ public class CustomerAgencyController { return new Result>().ok(orgList); } -} \ No newline at end of file + /** + * @Description 获取当前登陆人的 所属组织及下级组织/网格(含直属网格)树 + * @Param tokenDTO + * @Return {@link Result< AgencyTreeResultDTO >} + * @Author zhaoqifeng + * @Date 2021/9/8 15:20 + */ + @PostMapping("agencygridtree") + public Result getOrgTreeData(@LoginUser TokenDto tokenDTO) { + return new Result().ok(customerAgencyService.getOrgTreeData(tokenDTO.getUserId())); + } + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java index 4092579603..2409edaad0 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java @@ -17,8 +17,10 @@ package com.epmet.controller; +import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; import com.epmet.commons.tools.validator.ValidatorUtils; @@ -27,6 +29,7 @@ import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.IcHouseDTO; import com.epmet.dto.form.HouseFormDTO; +import com.epmet.dto.result.HouseListResultDTO; import com.epmet.service.IcHouseService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -99,4 +102,16 @@ public class IcHouseController { return new Result>().ok(icHouseService.selectHouseInfoByIdCard(idCard)); } + /** + * @Description 房屋查询 + * @Param formDTO + * @Return {@link Result< List< HouseListResultDTO>>} + * @Author zhaoqifeng + * @Date 2021/11/5 16:01 + */ + @PostMapping("houselist") + public Result> getHouseList(@LoginUser TokenDto tokenDto, @RequestBody HouseFormDTO formDTO){ + return new Result>().ok(icHouseService.getHouseList(tokenDto, formDTO)); + } + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java index 187a964973..07716708be 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java @@ -273,4 +273,12 @@ public interface CustomerAgencyDao extends BaseDao { * @date 2021/10/25 2:30 下午 */ List selectSonOrg(@Param("pid")String pid,@Param("type")String type); -} \ No newline at end of file + + /** + * desc:获取组织网格树 含直属网格 + * @param agencyId + * @return + */ + AgencyTreeResultDTO getAgencyGridTree(String agencyId); +} + diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java index ddae0aca45..accf59bb87 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java @@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.result.BaseInfoFamilyBuildingResultDTO; +import com.epmet.dto.result.BuildingResultDTO; import com.epmet.entity.CustomerAgencyEntity; import com.epmet.entity.IcBuildingEntity; import com.epmet.entity.IcHouseEntity; @@ -69,4 +70,6 @@ public interface IcBuildingDao extends BaseDao { * @date 2021/11/2 9:25 上午 */ List baseInfoFamilyBuilding(@Param("neighborHoodId")String neighborHoodId); + + List buildingListByIds(@Param("buildingIdList") List buildingIdList); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java index 39df4d14df..728c472116 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java @@ -20,6 +20,7 @@ package com.epmet.service; import com.epmet.dto.BuildingTreeLevelDTO; import com.epmet.dto.form.IcBulidingFormDTO; import com.epmet.dto.form.ListIcNeighborHoodFormDTO; +import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; import com.epmet.excel.IcBuildingExcel; import com.epmet.excel.IcNeighborHoodExcel; @@ -57,4 +58,6 @@ public interface BuildingService { IcNeighborHoodResultDTO listBuilding(ListIcNeighborHoodFormDTO formDTO); void exportBuildinginfo(ListIcNeighborHoodFormDTO formDTO, HttpServletResponse response) throws Exception ; + + List buildingListByIds(List buildingIdList); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java index 3eb6585c03..ec145a5dfb 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java @@ -19,7 +19,6 @@ package com.epmet.service; 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.commons.tools.utils.Result; import com.epmet.dto.CustomerAgencyDTO; import com.epmet.dto.form.*; @@ -257,4 +256,13 @@ public interface CustomerAgencyService extends BaseService AgencyTreeResultDTO getAgencyList(GetAgencyListFormDTO formDTO); List getStaffOrgListByStaffId(String staffId); -} \ No newline at end of file + + /** + * desc:获取用户所属组织的组织及网格树 + * @param staffId + * @return + */ + AgencyTreeResultDTO getOrgTreeData(String staffId); + + List getStaffOrgListByStaffId(String staffId); +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java index 2f434ab350..66f02d80fa 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java @@ -20,8 +20,10 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.dto.IcHouseDTO; import com.epmet.dto.form.HouseFormDTO; +import com.epmet.dto.result.HouseListResultDTO; import com.epmet.entity.IcHouseEntity; import java.util.List; @@ -112,4 +114,14 @@ public interface IcHouseService extends BaseService { */ List selectHouseInfoByIdCard(String idCard); + /** + * @Description 楼栋下房屋列表 + * @Param tokenDto + * @Param formDTO + * @Return {@link List< HouseListResultDTO>} + * @Author zhaoqifeng + * @Date 2021/11/5 16:01 + */ + List getHouseList(TokenDto tokenDto, HouseFormDTO formDTO); + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index 10371e3369..ef09973b53 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -13,6 +13,7 @@ import com.epmet.dto.CustomerStaffAgencyDTO; import com.epmet.dto.IcBuildingDTO; import com.epmet.dto.form.IcBulidingFormDTO; import com.epmet.dto.form.ListIcNeighborHoodFormDTO; +import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; import com.epmet.entity.*; import com.epmet.enums.BuildingTypeEnums; @@ -278,6 +279,12 @@ public class BuildingServiceImpl implements BuildingService { ExcelPoiUtils.exportExcel(templatePath ,map,"楼宇信息录入表",response); return ; } + + @Override + public List buildingListByIds(List buildingIdList) { + return icBuildingDao.buildingListByIds(buildingIdList); + } + private List searchAllBuilding(ListIcNeighborHoodFormDTO formDTO) { // QueryWrapper neighborHoodEntityQueryWrapper = new QueryWrapper<>(); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java index 836bbbb355..de90539444 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java @@ -16,7 +16,6 @@ */ 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; @@ -1107,6 +1106,63 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl%s", staffId)); + throw new RenException(CustomerAgencyConstant.SELECT_STAFF_AGENCY_EXCEPTION); + } + result.setPid(rootAgency.getPid()); + result.setAgencyName(rootAgency.getAgencyName()); + result.setAgencyId(rootAgency.getAgencyId()); + result.setLevel(rootAgency.getLevel()); + ExtStaffPermissionResultDTO res = baseDao.selectAgencyById(rootAgency.getAgencyId()); + convert2AgencyTreeResult(result,res.getSubAgencyList(),res.getGridList()); + return result; + } + /** + * 递归查询子节点 + * @param root 根节点 + * @param all 所有节点 + * @return 根节点信息 + */ + private void convert2AgencyTreeResult(AgencyTreeResultDTO root, List agencyList, List gridList) { + try { + for (ExtStaffPermissionResultDTO agency : agencyList) { + AgencyTreeResultDTO resultDTO = new AgencyTreeResultDTO(); + resultDTO.setAgencyId(agency.getAgencyId()); + resultDTO.setAgencyName(agency.getAgencyName()); + resultDTO.setPid(root.getAgencyId()); + resultDTO.setLevel(agency.getLevel()); + + if (root.getSubAgencyList() == null) { + root.setSubAgencyList(new ArrayList<>()); + } + root.getSubAgencyList().add(resultDTO); + if (CollectionUtils.isNotEmpty(agency.getSubAgencyList()) || CollectionUtils.isNotEmpty(agency.getGridList())) { + convert2AgencyTreeResult(resultDTO, agency.getSubAgencyList(), agency.getGridList()); + } + } + for (ExtGridResultDTO o : gridList) { + AgencyTreeResultDTO grid = new AgencyTreeResultDTO(); + grid.setAgencyId(o.getGridId()); + grid.setAgencyName(o.getGridName()); + grid.setPid(root.getAgencyId()); + grid.setLevel("grid"); + grid.setSubAgencyList(null); + if (root.getSubAgencyList() == null) { + root.setSubAgencyList(new ArrayList<>()); + } + root.getSubAgencyList().add(grid); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + /** * @Description 组织树最后一级没有数据的话设null * @Param agencyList diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java index 041bdc6b54..2858eb6d31 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java @@ -22,13 +22,22 @@ 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.constant.FieldConstant; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.dto.result.OptionResultDTO; +import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.Result; import com.epmet.dao.IcHouseDao; import com.epmet.dto.IcHouseDTO; +import com.epmet.dto.IcResiCategoryStatsConfigDTO; +import com.epmet.dto.IcResiUserDTO; import com.epmet.dto.form.HouseFormDTO; +import com.epmet.dto.result.HouseListResultDTO; import com.epmet.entity.IcHouseEntity; +import com.epmet.feign.EpmetUserOpenFeignClient; +import com.epmet.feign.OperCustomizeOpenFeignClient; import com.epmet.service.IcHouseService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -36,6 +45,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; @@ -48,6 +58,10 @@ import java.util.stream.Collectors; @Slf4j @Service public class IcHouseServiceImpl extends BaseServiceImpl implements IcHouseService { + @Resource + private OperCustomizeOpenFeignClient operCustomizeOpenFeignClient; + @Resource + private EpmetUserOpenFeignClient epmetUserOpenFeignClient; @Override @@ -147,4 +161,67 @@ public class IcHouseServiceImpl extends BaseServiceImpl} + * @Author zhaoqifeng + * @Date 2021/11/5 16:01 + */ + @Override + public List getHouseList(TokenDto tokenDto, HouseFormDTO formDTO) { + //查询楼栋下房屋列表 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcHouseEntity::getBuildingId, formDTO.getBuildingId()); + wrapper.last("ORDER BY CONVERT ( HOUSE_NAME USING gbk ) ASC"); + List list = baseDao.selectList(wrapper); + if(CollectionUtils.isEmpty(list)) { + return Collections.emptyList(); + } + //获取居民分类列表 + IcResiCategoryStatsConfigDTO categoryDto = new IcResiCategoryStatsConfigDTO(); + categoryDto.setCustomerId(tokenDto.getCustomerId()); + Result> categoryResult = operCustomizeOpenFeignClient.getCategoryList(categoryDto); + if (!categoryResult.success()) { + throw new RenException(categoryResult.getCode(), categoryResult.getMsg()); + } + List categoryList = categoryResult.getData(); + //获取居民分类数量统计 + IcResiUserDTO userDTO = new IcResiUserDTO(); + userDTO.setBuildId(formDTO.getBuildingId()); + Result>> resultMap = epmetUserOpenFeignClient.getHomeUserCategoryCount(userDTO); + if (!resultMap.success()) { + throw new RenException(resultMap.getCode(), resultMap.getMsg()); + } + Map> map = resultMap.getData(); + + return list.stream().map(item -> { + Map countMap = map.get(item.getId()); + HouseListResultDTO dto = new HouseListResultDTO(); + dto.setHouseId(item.getId()); + dto.setHouseName(item.getHouseName()); + List categories = new ArrayList<>(); + if (null != countMap && CollectionUtils.isNotEmpty(categoryList)) { + for (IcResiCategoryStatsConfigDTO category : categoryList) { + if (null == countMap.get(category.getColumnName()) || countMap.get(category.getColumnName()) == NumConstant.ZERO) { + continue; + } + HouseListResultDTO.CategoryListBean bean = new HouseListResultDTO.CategoryListBean(); + bean.setName(category.getLabel()); + bean.setIconUrl(category.getHouseShowIcon()); + if ("党员".equals(category.getLabel())) { + bean.setIsSpecial(NumConstant.ONE_STR); + } else { + bean.setIsSpecial(NumConstant.ZERO_STR); + } + categories.add(bean); + } + } + dto.setCategoryList(categories); + return dto; + }).collect(Collectors.toList()); + } + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml index be6423e487..f0d6065116 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml @@ -342,7 +342,9 @@ SELECT ca.id AS "agencyId", ca.organization_name AS "agencyName", - ca.pids AS "pids" + ca.pids AS "pids", + ca.PID AS pid, + ca.LEVEL FROM customer_agency ca INNER JOIN customer_staff_agency csa ON ca.id = csa.agency_id @@ -545,6 +547,7 @@ + @@ -557,7 +560,8 @@ select ID AS agencyId, ORGANIZATION_NAME AS agencyName, - PID + PID, + LEVEL from customer_agency where DEL_FLAG = 0 @@ -568,7 +572,8 @@ select ID AS agencyId, ORGANIZATION_NAME AS agencyName, - PID + PID, + LEVEL from customer_agency where @@ -633,4 +638,4 @@ order by created_time desc - \ No newline at end of file + diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml index 3d110df7bd..6be098c62c 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml @@ -300,5 +300,25 @@ AND b.NEIGHBOR_HOOD_ID = #{neighborHoodId} + + \ No newline at end of file diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/controller/BaseGridInfoController.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/controller/BaseGridInfoController.java index 531ecc8cde..628c4802ca 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/controller/BaseGridInfoController.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/controller/BaseGridInfoController.java @@ -44,7 +44,7 @@ public class BaseGridInfoController { /** * @Author sun - * @Description 组织基础信息中介库同步 + * @Description 组织基础信息中间库同步 **/ @PostMapping("agencybaseinfo") public Result getAgencyBaseInfo(@RequestBody(required = false) GridBaseInfoFormDTO formDTO) { @@ -55,7 +55,7 @@ public class BaseGridInfoController { /** * @Author sun - * @Description 网格基础信息中介库同步 + * @Description 网格基础信息中间库同步 **/ @PostMapping("gridbaseinfo") public Result getGridBaseInfo(@RequestBody(required = false) GridBaseInfoFormDTO formDTO) { diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseGridInfoServiceImpl.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseGridInfoServiceImpl.java index 8c7fd0d5c8..e50d9404e4 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseGridInfoServiceImpl.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseGridInfoServiceImpl.java @@ -144,7 +144,8 @@ public class BaseGridInfoServiceImpl extends BaseServiceImpl - when grid_code = #{item.gridCode} then #{item.deptIdQx} + + when dept_name_qx = #{item.deptNameQx} then #{item.deptIdQx} @@ -29,7 +30,8 @@ - when grid_code = #{item.gridCode} then #{item.deptNameQx} + when dept_name_qx = #{item.deptNameQx} then #{item.deptIdQx} + @@ -38,7 +40,8 @@ WHERE 1=1 - grid_code = #{item.gridCode} + + dept_name_qx = #{item.deptNameQx} diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcResiCategoryStatsConfigSortFormDTO.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcResiCategoryStatsConfigSortFormDTO.java index b5e7347e4c..9e843dd7da 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcResiCategoryStatsConfigSortFormDTO.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcResiCategoryStatsConfigSortFormDTO.java @@ -21,6 +21,7 @@ import com.epmet.commons.tools.validator.group.UpdateGroup; import lombok.Data; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.io.Serializable; @@ -44,7 +45,7 @@ public class IcResiCategoryStatsConfigSortFormDTO implements Serializable { /** * 排序 */ - @NotBlank(message = "排序不能为空") + @NotNull(message = "排序不能为空") private Integer sort; diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java index 28693abe46..ecfe051d35 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java @@ -3,6 +3,8 @@ package com.epmet.feign; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.CustomerFootBarDTO; +import com.epmet.dto.IcResiCategoryStatsConfigDTO; +import com.epmet.dto.IcResiCategoryWarnConfigDTO; import com.epmet.dto.form.CheckFloatFootBarFormDTO; import com.epmet.dto.form.CustomerFootBarFormDTO; import com.epmet.dto.form.CustomerFormQueryDTO; @@ -14,6 +16,7 @@ import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; import java.util.List; import java.util.Set; @@ -97,4 +100,27 @@ public interface OperCustomizeOpenFeignClient { @PostMapping("/oper/customize/icformitem/getmustcolumn/{customerId}") Result> getMustColumn(@PathVariable("customerId") String customerId); + @PostMapping("/oper/customize/icresicategorystatsconfig/categorylist") + Result> getCategoryList(@RequestBody IcResiCategoryStatsConfigDTO dto); + + + + @PostMapping("/oper/customize/resicategorystatsconfig/resicategorystatslistshowd") + Result> resiCategoryStatsListShowd(); + + @PostMapping("/oper/customize/resicategorystatsconfig/resicategorywarnlist") + Result> resiCategoryWarnList(); + + @PostMapping("/oper/customize/resicategorystatsconfig/resicategorywarninfobyid") + Result resiCategoryWarnInfoById(@RequestBody IcResiCategoryWarnConfigDTO dto); + + /** + * @Description 查询志愿者类型 + * @param volunteers + * @author zxc + * @date 2021/11/8 10:02 上午 + */ + @PostMapping("/oper/customize/icformitemoptions/volunteerlabelbyvalues") + Result> volunteerLabelByValues(@RequestBody List volunteers,@RequestParam("customerId") String customerId); + } diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java index 6aa1809620..b1cc198c20 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java @@ -4,6 +4,8 @@ import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.CustomerFootBarDTO; +import com.epmet.dto.IcResiCategoryStatsConfigDTO; +import com.epmet.dto.IcResiCategoryWarnConfigDTO; import com.epmet.dto.form.CheckFloatFootBarFormDTO; import com.epmet.dto.form.CustomerFootBarFormDTO; import com.epmet.dto.form.CustomerFormQueryDTO; @@ -79,4 +81,29 @@ public class OperCustomizeOpenFeignClientFallback implements OperCustomizeOpenFe public Result> getMustColumn(String customerId) { return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "getMustColumn", customerId); } + + @Override + public Result> getCategoryList(IcResiCategoryStatsConfigDTO dto) { + return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "getCategoryList", dto); + } + + @Override + public Result> resiCategoryStatsListShowd() { + return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "resiCategoryStatsListShowd"); + } + + @Override + public Result> resiCategoryWarnList() { + return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "resiCategoryWarnList"); + } + + @Override + public Result resiCategoryWarnInfoById(IcResiCategoryWarnConfigDTO dto) { + return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "resiCategoryWarnInfoById",dto); + } + + @Override + public Result> volunteerLabelByValues(List volunteers,String customerId) { + return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "volunteerLabelByValues",volunteers,customerId); + } } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemOptionsController.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemOptionsController.java index 5d70a901d7..262255826a 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemOptionsController.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemOptionsController.java @@ -91,4 +91,15 @@ public class IcFormItemOptionsController { ExcelUtils.exportExcelToTarget(response, null, list, IcFormItemOptionsExcel.class); } + /** + * @Description 查询志愿者类型 + * @param volunteers + * @author zxc + * @date 2021/11/8 10:02 上午 + */ + @PostMapping("volunteerlabelbyvalues") + public Result> volunteerLabelByValues(@RequestBody List volunteers,@RequestParam("customerId") String customerId){ + return new Result>().ok(icFormItemOptionsService.volunteerLabelByValues(volunteers,customerId)); + } + } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcResiCategoryStatsConfigController.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcResiCategoryStatsConfigController.java index f088a65265..70880418dd 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcResiCategoryStatsConfigController.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcResiCategoryStatsConfigController.java @@ -91,4 +91,9 @@ public class IcResiCategoryStatsConfigController { ExcelUtils.exportExcelToTarget(response, null, list, IcResiCategoryStatsConfigExcel.class); } + @PostMapping("categorylist") + public Result> getCategoryList(@RequestBody IcResiCategoryStatsConfigDTO dto) { + return new Result>().ok(icResiCategoryStatsConfigService.getCategoryList(dto)); + } + } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/ResiCategoryStatsConfigController.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/ResiCategoryStatsConfigController.java index be1a538f1b..c2639023d4 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/ResiCategoryStatsConfigController.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/ResiCategoryStatsConfigController.java @@ -17,9 +17,11 @@ package com.epmet.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.ConvertUtils; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; @@ -27,17 +29,25 @@ 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.dao.IcResiCategoryStatsConfigDao; +import com.epmet.dao.IcResiCategoryWarnConfigDao; import com.epmet.dto.IcResiCategoryStatsConfigDTO; +import com.epmet.dto.IcResiCategoryWarnConfigDTO; 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.entity.IcResiCategoryStatsConfigEntity; +import com.epmet.entity.IcResiCategoryWarnConfigEntity; import com.epmet.excel.IcResiCategoryStatsConfigExcel; import com.epmet.service.IcResiCategoryStatsConfigService; import com.epmet.service.ResiCategoryStatsConfigService; +import com.github.pagehelper.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; @@ -58,6 +68,10 @@ public class ResiCategoryStatsConfigController { @Autowired private ResiCategoryStatsConfigService resiCategoryStatsConfigService; + @Resource + private IcResiCategoryWarnConfigDao icResiCategoryWarnConfigDao; + @Resource + private IcResiCategoryStatsConfigDao icResiCategoryStatsConfigDao; /** * 居民类别配置列表 @@ -103,5 +117,34 @@ public class ResiCategoryStatsConfigController { return new Result().ok(resiCategoryStatsConfigService.info(formDTO.getId())); } + @PostMapping("resicategorystatslistshowd") + public Result> resiCategoryStatsListShowd(){ + //获取预警配置列表 + List statsConfigEntityList = icResiCategoryStatsConfigDao.selectList(new QueryWrapper() + .lambda() + .eq(IcResiCategoryStatsConfigEntity::getStatus,"show") + .orderByAsc(IcResiCategoryStatsConfigEntity::getSort)); + + return new Result>().ok(ConvertUtils.sourceToTarget(statsConfigEntityList, IcResiCategoryStatsConfigDTO.class)); + } + + @PostMapping("resicategorywarnlist") + public Result> resiCategoryWarnList(){ + //获取预警配置列表 + List warnConfigEntityList = icResiCategoryWarnConfigDao.selectList(new QueryWrapper() + .lambda() + .orderByAsc(IcResiCategoryWarnConfigEntity::getSort)); + + return new Result>().ok(ConvertUtils.sourceToTarget(warnConfigEntityList, IcResiCategoryWarnConfigDTO.class)); + } + @PostMapping("resicategorywarninfobyid") + public Result resiCategoryWarnInfoById(@RequestBody IcResiCategoryWarnConfigDTO dto){ + //获取预警配置列表 + if(StringUtils.isEmpty(dto.getId())){ + return new Result<>(); + } + return new Result().ok(ConvertUtils.sourceToTarget(icResiCategoryWarnConfigDao.selectById(dto.getId()),IcResiCategoryWarnConfigDTO.class)); + } + } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemOptionsDao.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemOptionsDao.java index 3609c41f9e..d731505e3d 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemOptionsDao.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemOptionsDao.java @@ -20,6 +20,9 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.entity.IcFormItemOptionsEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 表单项的选项 @@ -29,5 +32,13 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface IcFormItemOptionsDao extends BaseDao { - + + /** + * @Description 查询志愿者类型 + * @param volunteers + * @author zxc + * @date 2021/11/8 10:02 上午 + */ + List volunteerLabelByValues(@Param("volunteers") List volunteers,@Param("customerId")String customerId); + } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/IcResiCategoryWarnConfigEntity.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/IcResiCategoryWarnConfigEntity.java index a15c0c7958..f604689f81 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/IcResiCategoryWarnConfigEntity.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/IcResiCategoryWarnConfigEntity.java @@ -17,6 +17,7 @@ package com.epmet.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.epmet.commons.mybatis.entity.BaseEpmetEntity; @@ -66,16 +67,19 @@ public class IcResiCategoryWarnConfigEntity extends BaseEpmetEntity { /** * 等级1阈值 */ + @TableField(value = "LEVEL_1") private Integer level1; /** * 等级2阈值 */ + @TableField(value = "LEVEL_2") private Integer level2; /** * 等级3阈值 */ + @TableField(value = "LEVEL_3") private Integer level3; } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemOptionsService.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemOptionsService.java index 0ffe8fa5ea..387cc05412 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemOptionsService.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemOptionsService.java @@ -92,4 +92,12 @@ public interface IcFormItemOptionsService extends BaseService volunteerLabelByValues(List volunteers, String customerId); } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcResiCategoryStatsConfigService.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcResiCategoryStatsConfigService.java index b7c5938162..aa99453387 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcResiCategoryStatsConfigService.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcResiCategoryStatsConfigService.java @@ -92,4 +92,13 @@ public interface IcResiCategoryStatsConfigService extends BaseService} + * @Author zhaoqifeng + * @Date 2021/11/5 15:43 + */ + List getCategoryList(IcResiCategoryStatsConfigDTO dto); } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemOptionsServiceImpl.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemOptionsServiceImpl.java index c7ed24cd3d..144e56e568 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemOptionsServiceImpl.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemOptionsServiceImpl.java @@ -97,4 +97,15 @@ public class IcFormItemOptionsServiceImpl extends BaseServiceImpl volunteerLabelByValues(List volunteers,String customerId) { + return baseDao.volunteerLabelByValues(volunteers,customerId); + } + } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcResiCategoryStatsConfigServiceImpl.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcResiCategoryStatsConfigServiceImpl.java index 368ecec876..d0183a03f9 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcResiCategoryStatsConfigServiceImpl.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcResiCategoryStatsConfigServiceImpl.java @@ -17,12 +17,13 @@ package com.epmet.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.constant.FieldConstant; 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; @@ -34,6 +35,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -101,4 +103,24 @@ public class IcResiCategoryStatsConfigServiceImpl extends BaseServiceImpl} + * @Author zhaoqifeng + * @Date 2021/11/5 15:43 + */ + @Override + public List getCategoryList(IcResiCategoryStatsConfigDTO dto) { + if(StringUtils.isBlank(dto.getCustomerId())) { + return Collections.emptyList(); + } + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcResiCategoryStatsConfigEntity::getCustomerId, dto.getCustomerId()); + wrapper.orderByAsc(IcResiCategoryStatsConfigEntity::getSort); + List list = baseDao.selectList(wrapper); + return ConvertUtils.sourceToTarget(list, IcResiCategoryStatsConfigDTO.class); + } + } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/ResiCategoryStatsConfigServiceImpl.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/ResiCategoryStatsConfigServiceImpl.java index c5003a5d78..25eb5eafd0 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/ResiCategoryStatsConfigServiceImpl.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/ResiCategoryStatsConfigServiceImpl.java @@ -54,7 +54,10 @@ public class ResiCategoryStatsConfigServiceImpl implements ResiCategoryStatsConf return new ArrayList<>(); } Set groupIds = icFormItemEntityList.stream().filter(item-> !"0".equals(item.getItemGroupId())).map(item->item.getItemGroupId()).collect(Collectors.toSet()); - List icFormItemGroupEntityList = icFormItemGroupDao.selectList(new QueryWrapper().lambda().in(IcFormItemGroupEntity::getId, groupIds)); + List icFormItemGroupEntityList = new ArrayList<>(); + if(!CollectionUtils.isEmpty(groupIds)){ + icFormItemGroupEntityList.addAll(icFormItemGroupDao.selectList(new QueryWrapper().lambda().in(IcFormItemGroupEntity::getId, groupIds))); + } //获取tableName和COLUMN_NAME Map tableColumnMap = new HashMap<>(); Map idTableMap = new HashMap<>(); @@ -202,6 +205,8 @@ public class ResiCategoryStatsConfigServiceImpl implements ResiCategoryStatsConf //更新配置预警 if(IcResiCategoryStatsConfigConstant.WARN_YES.equals(formDTO.getWarn())){ + //TODO 判断阈值范围 + //更新 IcResiCategoryWarnConfigEntity icResiCategoryWarnConfigEntity = icResiCategoryWarnConfigDao.selectOne(new QueryWrapper().lambda() .eq(IcResiCategoryWarnConfigEntity::getTableName, icResiCategoryStatsConfigDTO.getTableName()) @@ -259,6 +264,25 @@ public class ResiCategoryStatsConfigServiceImpl implements ResiCategoryStatsConf icResiCategoryStatsConfigEntity.setSort(formDTO.getSort()); entityList.add(icResiCategoryStatsConfigEntity); } + if(CollectionUtils.isEmpty(entityList)){ + return ; + } icResiCategoryStatsConfigService.updateBatchById(entityList); + //排序更新预警的 + List statsConfigEntityList = icResiCategoryStatsConfigDao.selectList(null); + List warnConfigEntityList = icResiCategoryWarnConfigDao.selectList(null); + if(CollectionUtils.isEmpty(warnConfigEntityList)){ + return ; + } + for (IcResiCategoryWarnConfigEntity warnConfigEntity : warnConfigEntityList) { + List collect = statsConfigEntityList.stream().filter(i -> i.getTableName().equals(warnConfigEntity.getTableName()) && i.getColumnName().equals(warnConfigEntity.getColumnName())).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(collect)){ + continue; + } + warnConfigEntity.setSort(collect.get(0).getSort()); + } + icResiCategoryWarnConfigService.updateBatchById(warnConfigEntityList); + + } } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemOptionsDao.xml b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemOptionsDao.xml index 910d1f833f..36daa2158d 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemOptionsDao.xml +++ b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemOptionsDao.xml @@ -3,6 +3,17 @@ - - + + \ No newline at end of file diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcStatsResiWarnDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcStatsResiWarnDTO.java new file mode 100644 index 0000000000..006cf7fb67 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcStatsResiWarnDTO.java @@ -0,0 +1,111 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

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

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

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dto; + +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 IcStatsResiWarnDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + private String id; + + /** + * 客户id + */ + private String customerId; + + /** + * 预警配置ID + */ + private String configId; + + /** + * 网格id + */ + private String gridId; + + /** + * 组织id + */ + private String agencyId; + + /** + * 组织的所有上级组织id + */ + private String agencyPids; + + /** + * 小区id + */ + private String neighborHoodId; + + /** + * 楼宇id + */ + private String buildingId; + + /** + * 该分类的居民数量 + */ + private Integer count; + + /** + * 删除标识:0.未删除 1.已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private String revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private String createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/StatsResiListFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/StatsResiListFormDTO.java new file mode 100644 index 0000000000..1bb20c647a --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/StatsResiListFormDTO.java @@ -0,0 +1,46 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

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

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

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dto.form; + +import 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 StatsResiListFormDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 组织id + */ + @NotBlank(message = "id不能为空") + private String id; + + @NotBlank(message = "level不能为空") + private String level; + +} \ No newline at end of file diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/StatsResiWarnFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/StatsResiWarnFormDTO.java new file mode 100644 index 0000000000..f14b15d409 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/StatsResiWarnFormDTO.java @@ -0,0 +1,55 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

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

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

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + + +/** + * 预警统计表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-11-04 + */ +@Data +public class StatsResiWarnFormDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + public interface ListSelectedBuilding {}; + public interface ListSelectedUser {}; + + /** + * 组织id + */ + @NotBlank(message = "组织id不能为空",groups = {ListSelectedBuilding.class}) + private String agencyId; + + @NotBlank(message = "配置id不能为空",groups = {ListSelectedUser.class}) + private String configId; + @NotNull(message = "楼宇不能为空",groups = {ListSelectedUser.class}) + private List buildingIdList; + + +} \ No newline at end of file diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcStatsResiResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcStatsResiResultDTO.java new file mode 100644 index 0000000000..4f670770f3 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcStatsResiResultDTO.java @@ -0,0 +1,44 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

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

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

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + + +/** + * 预警统计表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-11-04 + */ +@Data +public class IcStatsResiResultDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + + private String id; + private String label; + private Integer count; + private String managementIcon; + private String dataIcon; + private String houseShowIcon; + +} \ No newline at end of file diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcStatsResiWarnBuildingResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcStatsResiWarnBuildingResultDTO.java new file mode 100644 index 0000000000..5a4369d6ba --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcStatsResiWarnBuildingResultDTO.java @@ -0,0 +1,58 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

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

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

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + + +/** + * 预警统计表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-11-04 + */ +@Data +public class IcStatsResiWarnBuildingResultDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + + /** + * 预警配置ID + */ + private String configId; + + private String label; + + private Integer sort; + private Integer level1; + private Integer levelCount1; + private Integer level2; + private Integer levelCount2; + private Integer level3; + private Integer levelCount3; + + private List buildingIdList1; + private List buildingIdList2; + private List buildingIdList3; + +} \ No newline at end of file diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcStatsResiWarnUserResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcStatsResiWarnUserResultDTO.java new file mode 100644 index 0000000000..4cd3332dca --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcStatsResiWarnUserResultDTO.java @@ -0,0 +1,47 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

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

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

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + + +/** + * 预警统计表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-11-04 + */ +@Data +public class IcStatsResiWarnUserResultDTO implements Serializable { + private static final long serialVersionUID = 1L; + + + /** + * 预警配置ID + */ + private String configId; + private String buildingId; + private String gridName; + private String neighborhoodName; + private String buildingName; + private String residentNames; + +} \ No newline at end of file diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java index ae4082c383..bde896c27c 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java @@ -72,4 +72,16 @@ public class PersonDataResultDTO implements Serializable { */ @JsonIgnore private String idCard; + + /** + * 是否是志愿者 1是,0否 + */ + @JsonIgnore + private String isVolunteer; + + @JsonIgnore + private String customerId; + + @JsonIgnore + private String gridId; } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java index 8a597860ae..f1ffabeb14 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java @@ -650,4 +650,7 @@ public interface EpmetUserOpenFeignClient { @PostMapping("/epmetuser/icresidemanddict/demandoption/demandoption") Result> getDemandOptions(); + + @PostMapping("/epmetuser/icresiuser/categorycount") + Result>> getHomeUserCategoryCount(@RequestBody IcResiUserDTO formDTO); } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java index a5d111a991..681a067692 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java @@ -469,4 +469,9 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien public Result> getDemandOptions() { return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getDemandOptions", null); } + + @Override + public Result>> getHomeUserCategoryCount(IcResiUserDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getHomeUserCategoryCount", formDTO); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/LevelConstant.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/LevelConstant.java new file mode 100644 index 0000000000..5cd985c11a --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/LevelConstant.java @@ -0,0 +1,8 @@ +package com.epmet.constant; + +public interface LevelConstant { + String AGENCY = "agency"; + String GRID = "grid"; + String NEIGHBORHOOD = "neighborHood"; + String BUILDING = "building"; +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/UserConstant.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/UserConstant.java index 87278ba55f..b9b1c5c87d 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/UserConstant.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/UserConstant.java @@ -99,6 +99,7 @@ public interface UserConstant { String MAN_WOMAN = "先生/女士"; String GRID_ID="GRID_ID"; + String GRID_NAME="GRID_NAME"; String GENDER="GENDER"; String HOUSE_TYPE_KEY="HOUSE_TYPE"; String HOME_ID = "HOME_ID"; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index dd62a9fd02..d1fa95e43a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -22,6 +22,7 @@ import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; @@ -35,18 +36,26 @@ import com.epmet.feign.OperCustomizeOpenFeignClient; import com.epmet.service.IcResiUserImportService; import com.epmet.service.IcResiUserService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.FilenameUtils; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.Workbook; import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; +import java.io.FileOutputStream; import java.io.IOException; import java.net.URLEncoder; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; @@ -62,6 +71,8 @@ import java.util.concurrent.atomic.AtomicInteger; public class IcResiUserController { private static final String BASE_TABLE_NAME = "ic_resi_user"; + private Path IC_RESI_UPLOAD_DIR; + @Autowired private OperCustomizeOpenFeignClient operCustomizeOpenFeignClient; @Autowired @@ -69,6 +80,20 @@ public class IcResiUserController { @Autowired private IcResiUserImportService icResiUserImportService; + { + // 初始化上传目录 + String home = System.getProperty("user.home"); + Path importDir = Paths.get(home, "epmet_files", "ic_user_import"); + if (Files.notExists(importDir)) { + try { + Files.createDirectories(importDir); + } catch (IOException e) { + log.error("创建数字赋能平台上传目录失败"); + } + } + IC_RESI_UPLOAD_DIR = importDir; + } + @PostMapping("delete") public Result delete(@LoginUser TokenDto tokenDto,@RequestBody DelIcResiUserFormDTO formDTO){ formDTO.setCustomerId(tokenDto.getCustomerId()); @@ -162,7 +187,7 @@ public class IcResiUserController { continue; } - if (item2.getItemType().equals("checkbox") || item2.getItemType().equals("select") || item2.getItemType().equals("radio")) { + if ("checkbox".equals(item2.getItemType()) || "select".equals(item2.getItemType()) || "radio".equals(item2.getItemType())) { itemMap.put(item2.getColumnName().concat(item2.getColumnNum() == 0 ? "" : item2.getColumnNum().toString()), ConvertUtils.sourceToTarget(item2, FormItem.class)); } } @@ -181,13 +206,13 @@ public class IcResiUserController { if (StringUtils.isBlank(formItem2.getColumnName())) { continue; } - if (formItem2.getItemType().equals("checkbox") || formItem2.getItemType().equals("select") || formItem2.getItemType().equals("radio")) { + if ("checkbox".equals(formItem2.getItemType()) || "select".equals(formItem2.getItemType()) || "radio".equals(formItem2.getItemType())) { itemMap.put(formItem2.getColumnName().concat(formItem2.getColumnNum() == 0 ? "" : formItem2.getColumnNum().toString()), ConvertUtils.sourceToTarget(formItem2, FormItem.class)); } } } - Map> resiMainList = icResiUserService.getDataForExport(otherSheetItems.get(BASE_TABLE_NAME), pageFormDTO.getCustomerId(), pageFormDTO.getFormCode(), BASE_TABLE_NAME, pageFormDTO.getConditions()); + Map> resiMainList = icResiUserService.getDataForExport(otherSheetItems.get(BASE_TABLE_NAME),new HashMap<>(), pageFormDTO.getCustomerId(), pageFormDTO.getFormCode(), BASE_TABLE_NAME, pageFormDTO.getConditions()); //resiMainList = (List>)JSON.parse("[{\"IS_BDHJ\":\"1\",\"IS_SPECIAL\":\"1\",\"IS_XFRY\":\"0\",\"REMARKS\":\"beizhu\",\"IS_PARTY\":\"1\",\"icResiUserId\":\"yzmtest2\",\"HOME_ID\":\"中海国际社区一里城1号楼1单元101\",\"HOUSE_TYPE\":\"平房\",\"UNIT_NAME\":\"1单元\",\"GRID_ID\":\"市北区-市北区第三网格3\",\"IS_DB\":\"0\",\"GENDER\":\"男\",\"BIRTHDAY\":\"2021-10-04\",\"IS_VETERANS\":\"0\",\"IS_MB\":\"0\",\"IS_UNEMPLOYED\":\"0\",\"DEMAND_NAME\":null,\"IS_KC\":\"0\",\"IS_ENSURE_HOUSE\":\"0\",\"IS_SD\":\"0\",\"NAME\":\"尹作梅\",\"RDSJ\":null,\"IS_VOLUNTEER\":\"1\",\"GRID_ID_VALUE\":\"e74829ffc43d5470eba6b5e060c11e63\",\"IS_SZ\":\"0\",\"IS_CJ\":\"0\",\"HOME_ID_VALUE\":\"200\",\"DEMAND_CATEGORY_IDS\":null,\"VILLAGE_NAME\":\"中海国际社区一里城\",\"IS_DBH\":\"0\",\"IS_SN\":\"0\",\"BUILD_NAME\":\"1号楼\",\"IS_YLFN\":\"0\",\"IS_UNITED_FRONT\":\"0\",\"ID_CARD\":\"371325199310260529\",\"MOBILE\":\"15764229697\",\"IS_OLD_PEOPLE\":\"0\",\"DOOR_NAME\":\"101\"},{\"IS_SPECIAL\":\"1\",\"IS_XFRY\":\"0\",\"REMARKS\":\"beizhu\",\"IS_PARTY\":\"1\",\"icResiUserId\":\"yzmtest\",\"HOME_ID\":\"中海国际社区一里城1号楼1单元101\",\"HOUSE_TYPE\":\"平房\",\"UNIT_NAME\":\"1单元\",\"GRID_ID\":\"市北区-市北区第三网格3\",\"IS_DB\":\"0\",\"GENDER\":\"男\",\"BIRTHDAY\":\"2021-10-04\",\"IS_VETERANS\":\"0\",\"IS_MB\":\"0\",\"IS_UNEMPLOYED\":\"0\",\"DEMAND_NAME\":\"心理咨询\",\"IS_KC\":\"0\",\"IS_ENSURE_HOUSE\":\"0\",\"IS_SD\":\"0\",\"NAME\":\"尹作梅\",\"RDSJ\":\"2021-10-28 00:00:00\",\"IS_VOLUNTEER\":\"1\",\"GRID_ID_VALUE\":\"e74829ffc43d5470eba6b5e060c11e63\",\"IS_SZ\":\"0\",\"IS_CJ\":\"0\",\"HOME_ID_VALUE\":\"200\",\"DEMAND_CATEGORY_IDS\":\"10180002\",\"VILLAGE_NAME\":\"中海国际社区一里城\",\"IS_DBH\":\"0\",\"IS_SN\":\"0\",\"BUILD_NAME\":\"1号楼\",\"IS_YLFN\":\"0\",\"IS_UNITED_FRONT\":\"0\",\"ID_CARD\":\"371325199310260529\",\"MOBILE\":\"15764229697\",\"IS_OLD_PEOPLE\":\"0\",\"DOOR_NAME\":\"101\"}]"); log.info("resiMainList:{}", JSON.toJSONString(resiMainList)); String templatePath = "excel/ic_resi_info_cid.xls"; @@ -203,7 +228,7 @@ public class IcResiUserController { if (item.getChildGroup() != null) { if (!item.getChildGroup().getTableName().equals(BASE_TABLE_NAME)) { Map itemMap1 = otherSheetItems.get(item.getChildGroup().getTableName()); - Map> resiChildMap = icResiUserService.getDataForExport(itemMap1, pageFormDTO.getCustomerId(), pageFormDTO.getFormCode(), item.getChildGroup().getTableName(), pageFormDTO.getConditions()); + Map> resiChildMap = icResiUserService.getDataForExport(itemMap1,resiMainList, pageFormDTO.getCustomerId(), pageFormDTO.getFormCode(), item.getChildGroup().getTableName(), pageFormDTO.getConditions()); resiChildMap.forEach((key, value) -> value.putAll(resiMainList.get(key))); Map mapData2 = new HashMap<>(); @@ -227,10 +252,36 @@ public class IcResiUserController { * * @return */ - @PostMapping("import/excel") - public Result importExcelByEasyExcel() { - Object result = icResiUserImportService.importIcResiInfoFromExcel(); - return new Result().ok(result); + @PostMapping("importExcel") + public void importExcelByEasyExcel(@RequestPart("file") MultipartFile file, HttpServletResponse response) { + if (file.isEmpty()) { + throw new RenException("请上传文件"); + } + + // 校验文件类型 + String extension = FilenameUtils.getExtension(file.getOriginalFilename()); + if (!"xls".equals(extension) && !"xlsx".equals(extension)) { + throw new RenException("文件类型不匹配"); + } + + Path savePath = null; + try { + String fileName = UUID.randomUUID().toString().concat(".").concat(extension); + savePath = IC_RESI_UPLOAD_DIR.resolve(fileName); + + IOUtils.copy(file.getInputStream(), new FileOutputStream(savePath.toString())); + icResiUserImportService.importIcResiInfoFromExcel(savePath.toString(), response); + } catch (IOException e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【导入居民信息失败】导入失败:{}", errorMsg); + throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); + } finally { + try { + Files.delete(savePath); + } catch (IOException e) { + log.error("【导入居民信息失败】清理上传的文件失败:{}", ExceptionUtils.getErrorStackTrace(e)); + } + } } @PostMapping("test") @@ -292,4 +343,16 @@ public class IcResiUserController { return new Result().ok(icResiUserService.getOwnerRelation(formDTO.getUserId())); } + /** + * @Description 获取一栋楼每个房间人员分类的数量 + * @Param formDTO + * @Return {@link Result< Map< String, Map< String, Integer>>>} + * @Author zhaoqifeng + * @Date 2021/11/5 15:10 + */ + @PostMapping("categorycount") + public Result>> getHomeUserCategoryCount(@RequestBody IcResiUserDTO formDTO) { + return new Result>>().ok(icResiUserService.getHomeUserCategoryCount(formDTO.getBuildId())); + } + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcStatsResiWarnController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcStatsResiWarnController.java new file mode 100644 index 0000000000..f0b9860e45 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcStatsResiWarnController.java @@ -0,0 +1,94 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

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

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

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.controller; + +import 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.IcStatsResiWarnDTO; +import com.epmet.excel.IcStatsResiWarnExcel; +import com.epmet.service.IcStatsResiWarnService; +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("icstatsresiwarn") +public class IcStatsResiWarnController { + + @Autowired + private IcStatsResiWarnService icStatsResiWarnService; + + @GetMapping("page") + public Result> page(@RequestParam Map params){ + PageData page = icStatsResiWarnService.page(params); + return new Result>().ok(page); + } + + @GetMapping("{id}") + public Result get(@PathVariable("id") String id){ + IcStatsResiWarnDTO data = icStatsResiWarnService.get(id); + return new Result().ok(data); + } + + @PostMapping + public Result save(@RequestBody IcStatsResiWarnDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + icStatsResiWarnService.save(dto); + return new Result(); + } + + @PutMapping + public Result update(@RequestBody IcStatsResiWarnDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + icStatsResiWarnService.update(dto); + return new Result(); + } + + @DeleteMapping + public Result delete(@RequestBody String[] ids){ + //效验数据 + AssertUtils.isArrayEmpty(ids, "id"); + icStatsResiWarnService.delete(ids); + return new Result(); + } + + @GetMapping("export") + public void export(@RequestParam Map params, HttpServletResponse response) throws Exception { + List list = icStatsResiWarnService.list(params); + ExcelUtils.exportExcelToTarget(response, null, list, IcStatsResiWarnExcel.class); + } + +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StatsResiWarnController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StatsResiWarnController.java new file mode 100644 index 0000000000..6a872d078d --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StatsResiWarnController.java @@ -0,0 +1,95 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

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

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

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.controller; + +import com.epmet.common.token.annotation.Login; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.form.StatsResiListFormDTO; +import com.epmet.dto.form.StatsResiWarnFormDTO; +import com.epmet.dto.result.IcStatsResiResultDTO; +import com.epmet.dto.result.IcStatsResiWarnBuildingResultDTO; +import com.epmet.dto.result.IcStatsResiWarnUserResultDTO; +import com.epmet.service.IcStatsResiWarnService; +import com.epmet.service.StatsResiWarnService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + + +/** + * 预警统计表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-11-04 + */ +@RestController +@RequestMapping("statsresiwarn") +public class StatsResiWarnController { + + @Autowired + private IcStatsResiWarnService icStatsResiWarnService; + + @Autowired + private StatsResiWarnService statsResiWarnService; + + @PostMapping("list") + public Result list(@RequestBody StatsResiListFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO); + List icStatsResiResultDTOList = statsResiWarnService.list(formDTO.getId(),formDTO.getLevel()); + return new Result().ok(icStatsResiResultDTOList); + + } + + @PostMapping("buildingwarnlist") + public Result buildingWarnList(@RequestBody StatsResiWarnFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO, StatsResiWarnFormDTO.ListSelectedBuilding.class); + String agencyID = formDTO.getAgencyId(); + List icStatsResiWarnBuildingResultDTOS = statsResiWarnService.buildingwWarnList(agencyID); + return new Result().ok(icStatsResiWarnBuildingResultDTOS); + + } + @PostMapping("userwarnlist") + public Result userWarnList(@RequestBody StatsResiWarnFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO, StatsResiWarnFormDTO.ListSelectedUser.class); + List buildingIdList = formDTO.getBuildingIdList(); + if(CollectionUtils.isEmpty(buildingIdList)){ + return new Result(); + } + List icStatsResiWarnUserResultDTOS = statsResiWarnService.userWarnList(formDTO.getConfigId(), formDTO.getBuildingIdList()); + return new Result().ok(icStatsResiWarnUserResultDTOS); + } + + /** + * 统计 + * @return + */ + @PostMapping("resiwarn") + public Result resiWarn(@LoginUser TokenDto tokenDto){ + statsResiWarnService.resiWarn(tokenDto.getCustomerId()); + return new Result(); + } + +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java index 45e31dd726..4825f7abaa 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java @@ -23,6 +23,7 @@ import com.epmet.dto.result.IcFormResColumnDTO; import com.epmet.dto.result.PersonDataResultDTO; import com.epmet.dto.result.SearchByNameResultDTO; import com.epmet.entity.IcResiUserEntity; +import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -49,7 +50,7 @@ public interface IcResiUserDao extends BaseDao { * @Author sun * @Description 更新或新增居民信息各表数据 **/ - void upTable(@Param("tableName") String tableName, @Param("id") String id, @Param("map") Map map); + void upTable(@Param("tableName") String tableName, @Param("id") String id, @Param("map") Map map); List> selectListResiMap(@Param("customerId") String customerId, @Param("formCode") String formCode, @@ -119,6 +120,17 @@ public interface IcResiUserDao extends BaseDao { List searchByName(@Param("name")String name, @Param("agencyId")String agencyId,@Param("pageNo")Integer pageNo); Set selectUserDemandCode(String icResiUserId); - String selectCategoryNames(@Param("customerId") String customerId,@Param("codeSet") Set codeSet); + + @MapKey("HOME_ID") + Map> getHomeUserCategoryCount(@Param("buildId") String buildId); + + /** + * @Description 根据userId查询志愿者 + * @param userId + * @author zxc + * @date 2021/11/5 5:44 下午 + */ + List selectVolunteerByUserId(@Param("userId")String userId); + } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcStatsResiWarnDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcStatsResiWarnDao.java new file mode 100644 index 0000000000..0cd26050a0 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcStatsResiWarnDao.java @@ -0,0 +1,49 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

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

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

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.IcResiCategoryStatsConfigDTO; +import com.epmet.entity.IcStatsResiWarnEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * 预警统计表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-11-04 + */ +@Mapper +public interface IcStatsResiWarnDao extends BaseDao { + + List selectResiWarnByAgencyId(@Param("agencyId") String agencyId); + + List> userWarnList(@Param("buildingIdList") List buildingIdList, @Param("tableName") String tableName, @Param("columnName") String columnName); + + Integer countListByLevelAndCol( + @Param("tableName") String tableName, + @Param("columnName") String columnName, + @Param("id")String id, + @Param("level")String level); + + List resiWarn(@Param("tableName") String tableName,@Param("columnName") String columnName); +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcStatsResiWarnEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcStatsResiWarnEntity.java new file mode 100644 index 0000000000..fd636c095b --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcStatsResiWarnEntity.java @@ -0,0 +1,81 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

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

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

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.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_stats_resi_warn") +public class IcStatsResiWarnEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户id + */ + private String customerId; + + /** + * 预警配置ID + */ + private String configId; + + /** + * 网格id + */ + private String gridId; + + /** + * 组织id + */ + private String agencyId; + + /** + * 组织的所有上级组织id + */ + private String agencyPids; + + /** + * 小区id + */ + private String neighborHoodId; + + /** + * 楼宇id + */ + private String buildingId; + + /** + * 该分类的居民数量 + */ + private Integer count; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnums.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnums.java new file mode 100644 index 0000000000..c03d5649c3 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnums.java @@ -0,0 +1,82 @@ +package com.epmet.enums; + +import lombok.AllArgsConstructor; +import lombok.Data; + +/** + * @Description 描述 + * @Author wangxianzhang + * @Date 2021/11/5 10:37 上午 + * @Version 1.0 + */ +@AllArgsConstructor +public enum IcResiUserTableEnums { + + IC_RESI_USER("ic_resi_user","社区居民基本信息录入表", 0, 3, null), + IC_PARTY_MEMBER("ic_party_member","党员信息录入表", 1, 2, "IS_PARTY"), + IC_ENSURE_HOUSE("ic_ensure_house","保障房人员信息录入表", 2, 2, "IS_ENSURE_HOUSE"), + IC_UNEMPLOYED("ic_unemployed","失业人员信息录入表", 3, 2, "IS_UNEMPLOYED"), + IC_VETERANS("ic_veterans","退役军人信息录入表", 4, 2, "IS_VETERANS"), + IC_UNITED_FRONT("ic_united_front","统战人员信息录入表", 5, 2, "IS_UNITED_FRONT"), + IC_VOLUNTEER("ic_volunteer","志愿者信息录入表", 6, 3, "IS_VOLUNTEER"), + IC_OLD_PEOPLE("ic_old_people","老年人信息录入表", 7, 2, "IS_OLD_PEOPLE"), + IC_SPECIAL("ic_special","特殊人群信息录入表", 8, 3, "IS_SPECIAL"); + + private String tableName; + private String tableComment; + private int sheetNo; + private int headRowNo; + private String mainTableFlagColumnName; + + public static IcResiUserTableEnums getObjectByTableName(String tableName) { + for (IcResiUserTableEnums i : IcResiUserTableEnums.values()) { + if (i.tableName.equals(tableName)) { + return i; + } + } + return null; + } + + + + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public String getTableComment() { + return tableComment; + } + + public void setTableComment(String tableComment) { + this.tableComment = tableComment; + } + + public int getSheetNo() { + return sheetNo; + } + + public void setSheetNo(int sheetNo) { + this.sheetNo = sheetNo; + } + + public int getHeadRowNo() { + return headRowNo; + } + + public void setHeadRowNo(int headRowNo) { + this.headRowNo = headRowNo; + } + + public String getMainTableFlagColumnName() { + return mainTableFlagColumnName; + } + + public void setMainTableFlagColumnName(String mainTableFlagColumnName) { + this.mainTableFlagColumnName = mainTableFlagColumnName; + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcStatsResiWarnExcel.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcStatsResiWarnExcel.java new file mode 100644 index 0000000000..59983add12 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcStatsResiWarnExcel.java @@ -0,0 +1,80 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

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

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

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.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 IcStatsResiWarnExcel { + + @Excel(name = "id") + private String id; + + @Excel(name = "客户id") + private String customerId; + + @Excel(name = "预警配置ID") + private String configId; + + @Excel(name = "网格id") + private String gridId; + + @Excel(name = "组织id") + private String agencyId; + + @Excel(name = "组织的所有上级组织id") + private String agencyPids; + + @Excel(name = "小区id") + private String neighborHoodId; + + @Excel(name = "楼宇id") + private String buildingId; + + @Excel(name = "该分类的居民数量") + private Integer count; + + @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; + + +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/DynamicEasyExcelListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/DynamicEasyExcelListener.java index 0abf0f28d0..4c12594a45 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/DynamicEasyExcelListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/DynamicEasyExcelListener.java @@ -34,7 +34,7 @@ public class DynamicEasyExcelListener extends AnalysisEventListener headMap, AnalysisContext context) { - log.info("解析到一条头数据:{}", JSON.toJSONString(headMap)); + //log.info("解析到一条头数据:{}", JSON.toJSONString(headMap)); //存储全部表头数据 headList.add(headMap); } @@ -48,7 +48,7 @@ public class DynamicEasyExcelListener extends AnalysisEventListener data, AnalysisContext context) { - log.info("解析到一条数据:{}", JSON.toJSONString(data)); + //log.info("解析到一条数据:{}", JSON.toJSONString(data)); dataList.add(data); } @@ -60,7 +60,7 @@ public class DynamicEasyExcelListener extends AnalysisEventListener> getHeadList() { diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/IcStatsResiWarnRedis.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/IcStatsResiWarnRedis.java new file mode 100644 index 0000000000..6f143a4264 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/IcStatsResiWarnRedis.java @@ -0,0 +1,47 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

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

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

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.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 IcStatsResiWarnRedis { + @Autowired + private RedisUtils redisUtils; + + public void delete(Object[] ids) { + + } + + public void set(){ + + } + + public String get(String id){ + return null; + } + +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java index be0d40187d..ba4d0c9458 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java @@ -1,5 +1,8 @@ package com.epmet.service; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + /** *@Description 居民信息导入service *@Author wangxianzhang @@ -7,6 +10,5 @@ package com.epmet.service; */ public interface IcResiUserImportService { - Object importIcResiInfoFromExcel(); - + void importIcResiInfoFromExcel(String excelPathName, HttpServletResponse response); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java index db49d560d5..76a6a24618 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java @@ -75,7 +75,7 @@ public interface IcResiUserService extends BaseService { */ Map queryIcResiDetail(IcResiDetailFormDTO pageFormDTO); - + List> dynamicQuery(String customerId, String formCode, @@ -104,13 +104,14 @@ public interface IcResiUserService extends BaseService { * desc:条件导出 * * @param itemList + * @param resiMainList * @param customerId * @param formCode * @param baseTableName * @param conditions * @return */ - Map> getDataForExport(Map itemList, String customerId, String formCode, String baseTableName, List conditions); + Map> getDataForExport(Map itemList, Map> resiMainList, String customerId, String formCode, String baseTableName, List conditions); /** * @Description 家庭关系 @@ -120,4 +121,13 @@ public interface IcResiUserService extends BaseService { * @Date 2021/11/5 10:28 */ OwnerRelationResultDTO getOwnerRelation(String userId); + + /** + * @Description 获取一栋楼每个房间人员分类的数量 + * @Param buildId + * @Return {@link Map< String, Map< String, Integer>>} + * @Author zhaoqifeng + * @Date 2021/11/5 14:40 + */ + Map> getHomeUserCategoryCount(String buildId); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcStatsResiWarnService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcStatsResiWarnService.java new file mode 100644 index 0000000000..6a0592adbe --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcStatsResiWarnService.java @@ -0,0 +1,95 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

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

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

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.IcStatsResiWarnDTO; +import com.epmet.entity.IcStatsResiWarnEntity; + +import java.util.List; +import java.util.Map; + +/** + * 预警统计表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-11-04 + */ +public interface IcStatsResiWarnService extends BaseService { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2021-11-04 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2021-11-04 + */ + List list(Map params); + + /** + * 单条查询 + * + * @param id + * @return IcStatsResiWarnDTO + * @author generator + * @date 2021-11-04 + */ + IcStatsResiWarnDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2021-11-04 + */ + void save(IcStatsResiWarnDTO dto); + + /** + * 默认更新 + * + * @param dto + * @return void + * @author generator + * @date 2021-11-04 + */ + void update(IcStatsResiWarnDTO dto); + + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2021-11-04 + */ + void delete(String[] ids); +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StatsResiWarnService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StatsResiWarnService.java new file mode 100644 index 0000000000..5192e27981 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StatsResiWarnService.java @@ -0,0 +1,41 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

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

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

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.service; + +import com.epmet.dto.result.IcStatsResiResultDTO; +import com.epmet.dto.result.IcStatsResiWarnBuildingResultDTO; +import com.epmet.dto.result.IcStatsResiWarnUserResultDTO; + +import java.util.List; + +/** + * 预警统计表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-11-04 + */ +public interface StatsResiWarnService{ + + List buildingwWarnList(String agencyID); + + List userWarnList(String configId, List buildingIdList); + + List list(String id, String level); + + void resiWarn(String customerId); +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 4e121b2e8f..6d4c874f59 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -1,10 +1,15 @@ package com.epmet.service.impl; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.annotation.Excel; +import cn.afterturn.easypoi.excel.entity.ExportParams; import com.alibaba.excel.EasyExcelFactory; +import com.alibaba.fastjson.JSON; 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.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.security.user.LoginUserUtil; @@ -19,6 +24,7 @@ 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.enums.IcResiUserTableEnums; import com.epmet.excel.handler.DynamicEasyExcelListener; import com.epmet.feign.EpmetAdminOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; @@ -29,10 +35,14 @@ import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletResponse; import java.io.File; +import java.io.IOException; +import java.net.URLEncoder; import java.util.*; import java.util.stream.Collectors; @@ -47,7 +57,9 @@ import java.util.stream.Collectors; @Service public class IcResiUserImportServiceImpl implements IcResiUserImportService, ResultDataResolver { - public static final ThreadLocal errorRow = new ThreadLocal(); + // 错误和跳过excel行暂存 + public static final ThreadLocal>> errorRows = new ThreadLocal<>(); + public static final ThreadLocal>> skipedRows = new ThreadLocal<>(); @Autowired private LoginUserUtil loginUserUtil; @@ -80,6 +92,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res private String columnName; private String itemType; private String itemId; + + // 是否必填 + private Integer required; private List colIndexs; //private List colContents; // 单元格内容 @@ -104,20 +119,49 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res /** * 错误行信息 */ + @Data public static class ErrorRow { + + @Excel(name = "工作表", width = 30) private String sheetName; + + private String tableName; + + @Excel(name = "身份证号", width = 40) private String idCard; + + @Excel(name = "姓名", width = 25) private String name; + + @Excel(name = "错误信息", width = 40) private String errorInfo; } + @Data + public static class SkipedRow { + + @Excel(name = "工作表") + private String sheetName; + + private String tableName; + + @Excel(name = "身份证号") + private String idCard; + + @Excel(name = "姓名") + private String name; + + @Excel(name = "信息") + private String info; + } + /** * 导入居民信息 * 导入主表和所有子表信息 * @return */ @Override - public Object importIcResiInfoFromExcel() { + public void importIcResiInfoFromExcel(String excelPathName, HttpServletResponse response) { String loginUserId = loginUserUtil.getLoginUserId(); String loginUserApp = loginUserUtil.getLoginUserApp(); String loginUserClient = loginUserUtil.getLoginUserClient(); @@ -130,21 +174,67 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res 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"; + //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; + try { + initThreadLocalRowsStorage(); + + // 上传主表信息 + importIcResiBaseInfoFromExcel(excelPathName, IcResiUserTableEnums.IC_RESI_USER.getSheetNo(), IcResiUserTableEnums.IC_RESI_USER.getHeadRowNo(), + currUserAgencyId, agencyInfo.getPids(), loginUserId, IcResiUserTableEnums.IC_RESI_USER.getTableName()); + + // 上传附表信息 + for (IcResiUserTableEnums sheet : IcResiUserTableEnums.values()) { + if (sheet == IcResiUserTableEnums.IC_RESI_USER) { + continue; + } + + try { + importIcResiExtraInfoFromExcel(excelPathName, sheet.getSheetNo(), sheet.getHeadRowNo(), currUserAgencyId, loginUserId, sheet.getTableName(), customerId); + } catch (Exception e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("导入IC居民附加信息【{}】错误:{}", sheet.getTableComment(), errorMsg); + ErrorRow errorRow = new ErrorRow(); + errorRow.setName("*"); + errorRow.setIdCard("*"); + errorRows.get().get(sheet.getTableName()).add(errorRow); + } + } + + String errors = JSON.toJSONString(errorRows.get()); + //String skipeds = JSON.toJSONString(skipedRows.get()); + + log.error(errors); + //log.error(skipeds); + + try { + downLoadResults(response); + } catch (IOException e) { + log.error("【导入IC居民附加信息】下载导入结果信息失败:{}", ExceptionUtils.getErrorStackTrace(e)); + } + } finally { + skipedRows.remove(); + errorRows.remove(); + } + } + + /** + * 暂存rows信息初始化 + */ + private void initThreadLocalRowsStorage() { + Map> skipedRowsMap = new LinkedHashMap<>(); + for (IcResiUserTableEnums e : IcResiUserTableEnums.values()) { + skipedRowsMap.put(e.getTableName(), new LinkedList<>()); + } + skipedRows.set(skipedRowsMap); + + Map> errorRowsMap = new LinkedHashMap<>(); + for (IcResiUserTableEnums e : IcResiUserTableEnums.values()) { + errorRowsMap.put(e.getTableName(), new LinkedList<>()); + } + errorRows.set(errorRowsMap); } /** @@ -156,7 +246,8 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * @param currentUserId * @return */ - private Object importIcResiBaseInfoFromExcel(String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currUserAgencyPids, String currentUserId) { + private Object importIcResiBaseInfoFromExcel(String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currUserAgencyPids, String currentUserId, + String tableName) { DynamicEasyExcelListener readListener = new DynamicEasyExcelListener(); EasyExcelFactory.read(new File(excelPathName)).registerReadListener(readListener).headRowNumber(headRowNumber).sheet(sheetNo).doRead(); @@ -189,7 +280,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res Map headerColumnWrapper = convertExcelHeaders2DBColumnWrappers(formItemMap, combinedHeaders, dataList, abandonedHeaders); // 持久化 - persistIcResiBaseInfo(headerColumnWrapper, dataList, currUserAgencyId, abandonedHeaders, currUserAgencyPids, currentUserId); + persistIcResiBaseInfo(headerColumnWrapper, dataList, currUserAgencyId, abandonedHeaders, currUserAgencyPids, currentUserId, tableName); return headers; } @@ -249,39 +340,66 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res */ private void persistIcResiBaseInfo(Map headerColumnWrapper, List> dataRows, String currUserAgencyId, Map checkBoxOptionColumnIdxAndLabel, - String currUserAgencyPids, String currentUserId) { + String currUserAgencyPids, String currentUserId, String tableName) { // 遍历每一行,将行内容转化为 for (Map row : dataRows) { - LinkedHashMap 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 idCardQuery = new LambdaQueryWrapper<>(); - idCardQuery.eq(IcResiUserEntity::getIdCard, idCard); - - if (icResiUserDao.selectCount(idCardQuery) > 0) { - log.info("身份证号为【{}】的居民信息已存在,跳过导入", idCard); - } + LinkedHashMap columnAndValues = new LinkedHashMap<>(); + try { + convertColumnWrappers2Map4Persist(headerColumnWrapper, row, currUserAgencyId, checkBoxOptionColumnIdxAndLabel, columnAndValues); + + 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 idCardQuery = new LambdaQueryWrapper<>(); + idCardQuery.eq(IcResiUserEntity::getIdCard, idCard); + + if (icResiUserDao.selectCount(idCardQuery) > 0) { + //log.info("身份证号为【{}】的居民信息已存在,跳过导入", idCard); + SkipedRow skipedRow = new SkipedRow(); + skipedRow.setName(columnAndValues.get("NAME")); + skipedRow.setIdCard(idCard); + skipedRow.setInfo("身份证号已存在,跳过导入"); + skipedRow.setTableName(tableName); + skipedRows.get().get(IcResiUserTableEnums.IC_RESI_USER.getTableName()).add(skipedRow); + continue; + } + + icResiUserDao.add(tableName, columnAndValues); + } catch (Exception e) { + String errorMsg; + if (e instanceof RenException) { + errorMsg = e.getMessage(); + } else { + errorMsg = "未知系统错误"; + log.error(ExceptionUtils.getErrorStackTrace(e)); + } - icResiUserDao.add("ic_resi_user", columnAndValues); + ErrorRow errorRow = new ErrorRow(); + errorRow.setIdCard(columnAndValues.get("ID_CARD")); + errorRow.setName(columnAndValues.get("NAME")); + errorRow.setErrorInfo(errorMsg); + errorRow.setTableName(tableName); + errorRows.get().get(IcResiUserTableEnums.IC_RESI_USER.getTableName()).add(errorRow); + } finally { + columnAndValues.clear(); + } } } @@ -297,44 +415,75 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String currUserAgencyId, Map checkBoxOptionColumnIdxAndLabel, String currentUserId, String targetTableName, String customerId) { + LinkedHashMap columnAndValues = new LinkedHashMap<>(); + // 遍历每一行,将行内容转化为 for (Map row : dataRows) { - LinkedHashMap columnAndValues = convertColumnWrappers2Map4Persist(headerColumnWrapper, row, currUserAgencyId, checkBoxOptionColumnIdxAndLabel); + try { + convertColumnWrappers2Map4Persist(headerColumnWrapper, row, currUserAgencyId, checkBoxOptionColumnIdxAndLabel, columnAndValues); - // 检验身份证号 - String idCard = columnAndValues.get("ID_CARD"); - if (StringUtils.isBlank(idCard)) { - throw new RenException(EpmetErrorCode.IDCARDNO_ERROR.getCode(), String.format("用户【%s】身份证号未填写或格式错误", columnAndValues.get("NAME"))); - } + // 检验身份证号 + String idCard = columnAndValues.get("ID_CARD"); + if (StringUtils.isBlank(idCard)) { + throw new RenException(EpmetErrorCode.IDCARDNO_ERROR.getCode(), String.format("用户【%s】身份证号未填写或格式错误", columnAndValues.get("NAME"))); + } - // 检查用户是否存在 - LambdaQueryWrapper idCardQuery = new LambdaQueryWrapper<>(); - idCardQuery.eq(IcResiUserEntity::getIdCard, idCard); + // 检查用户是否存在 + LambdaQueryWrapper 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)); - } + IcResiUserEntity icResiUserBaseInfo = icResiUserDao.selectOne(idCardQuery); + if (icResiUserBaseInfo == null) { + throw new RenException(EpmetErrorCode.RESI_NOT_FOUND.getCode(), String.format("身份证号为【%s】的居民信息未找到,请确认该居民信息存在", idCard)); + } - String icResiId = icResiUserBaseInfo.getId(); + String icResiId = icResiUserBaseInfo.getId(); - // 验证党员信息是否存在 - if (CollectionUtils.isNotEmpty(icResiUserDao.selectSubTableRecords(customerId, icResiId, targetTableName))) { - log.info("身份证号为【{}】的居民【{}】信息已存在,跳过导入", idCard, targetTableName); - continue; - } + // 验证党员信息是否存在 + if (CollectionUtils.isNotEmpty(icResiUserDao.selectSubTableRecords(customerId, icResiId, targetTableName))) { + log.info("身份证号为【{}】的居民【{}】信息已存在,跳过导入", idCard, targetTableName); + + SkipedRow skipedRow = new SkipedRow(); + skipedRow.setName(columnAndValues.get("NAME")); + skipedRow.setIdCard(columnAndValues.get("ID_CARD")); + skipedRow.setInfo("信息已存在,跳过导入"); + skipedRow.setTableName(targetTableName); + skipedRows.get().get(targetTableName).add(skipedRow); + + continue; + } + + columnAndValues.put("IC_RESI_USER", icResiId); - 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.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); - columnAndValues = removeNeedlessColumns(columnAndValues); + icResiUserDao.add(targetTableName, columnAndValues); - icResiUserDao.add(targetTableName, columnAndValues); + updateMainTableResiTypeFlag(Objects.requireNonNull(IcResiUserTableEnums.getObjectByTableName(targetTableName)), icResiId); + } catch (Exception e) { + String errorMsg; + if (e instanceof RenException) { + errorMsg = e.getMessage(); + } else { + errorMsg = "未知系统错误"; + log.error(ExceptionUtils.getErrorStackTrace(e)); + } + + ErrorRow errorRow = new ErrorRow(); + errorRow.setName(columnAndValues.get("NAME")); + errorRow.setIdCard(columnAndValues.get("ID_CARD")); + errorRow.setErrorInfo(errorMsg); + errorRow.setTableName(targetTableName); + errorRows.get().get(targetTableName).add(errorRow); + } finally { + columnAndValues.clear(); + } } } @@ -365,12 +514,16 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * @param row 当前行数据 * @param currUserAgencyId 当前用户所属机构ID * @param checkBoxOptionColumnIdxAndLabel 复选框options列表。key:列号,value:复选框中文 - * @return + * @param target 要将数据放到哪个对象中 */ - private LinkedHashMap convertColumnWrappers2Map4Persist(Map headerColumnWrapper, Map row, - String currUserAgencyId, Map checkBoxOptionColumnIdxAndLabel) { - LinkedHashMap columnAndValues = new LinkedHashMap<>(); - + private void convertColumnWrappers2Map4Persist(Map headerColumnWrapper, Map row, + String currUserAgencyId, Map checkBoxOptionColumnIdxAndLabel, + LinkedHashMap target) { + + boolean interupt = false; + + List errorColumnNames = new LinkedList<>(); + for (Map.Entry columnWrapperEntry : headerColumnWrapper.entrySet()) { ColumnWrapper columnWrapper = columnWrapperEntry.getValue(); @@ -408,10 +561,19 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String checkBoxColValue = getCheckBoxColValue(columnWrapper, row, checkBoxOptionColumnIdxAndLabel); columnWrapper.setColValue(checkBoxColValue); } - columnAndValues.put(columnWrapper.columnName, columnWrapper.colValue); + + // requiredColumns中的值为必填项 + if (columnWrapper.getRequired() == 1 && StringUtils.isBlank(columnWrapper.colValue)) { + interupt = true; + errorColumnNames.add(columnWrapper.combinedLabel); + } + + target.put(columnWrapper.columnName, columnWrapper.colValue); + } + + if (interupt) { + throw new RenException(String.join(",", errorColumnNames) + "的值未填写"); } - - return columnAndValues; } /** @@ -517,6 +679,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res columnWrapper.setCombinedLabel(combinedLabel); columnWrapper.setColumnName(item.getColumnName()); columnWrapper.setColIndexs(entry.getValue()); + columnWrapper.setRequired(item.getRequired()); columnWrapper.setOptionSourceType(item.getOptionSourceType()); columnWrapper.setOptionSourceValue(item.getOptionSourceValue()); @@ -714,5 +877,40 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res }*/ } - + + /** + * 更新主表中人员类别标记 + * @param icResiUserTableEnum + * @param resiUserId + */ + private void updateMainTableResiTypeFlag(IcResiUserTableEnums icResiUserTableEnum, String resiUserId) { + HashMap map = new HashMap<>(); + map.put(icResiUserTableEnum.getMainTableFlagColumnName(), true); + icResiUserDao.upTable("ic_resi_user", resiUserId, map); + } + + /** + * 下载导入结果 + * @param response + * @throws IOException + */ + public void downLoadResults(HttpServletResponse response) throws IOException { + //public static final ThreadLocal>> errorRows = new ThreadLocal<>(); + + String fileName = "导入失败条目清单.xls"; + response.setHeader("content-Type", "application/vnd.ms-excel"); + response.addHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(fileName, "UTF-8")); + + LinkedList list = new LinkedList<>(); + for (Map.Entry> entry : errorRows.get().entrySet()) { + list.addAll(entry.getValue()); + } + + list.forEach(row -> row.setSheetName(IcResiUserTableEnums.getObjectByTableName(row.tableName).getTableComment())); + + Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("导入失败的条目列表","导入失败"), + ErrorRow.class, list); + + workbook.write(response.getOutputStream()); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index edec6e3d51..ab211a7e29 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -31,7 +31,9 @@ import com.epmet.commons.tools.enums.HouseTypeEnum; import com.epmet.commons.tools.enums.RelationshipEnum; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; @@ -493,7 +495,36 @@ public class IcResiUserServiceImpl extends BaseServiceImpl volunteerList = baseDao.selectVolunteerByUserId(formDTO.getUserId()); + if (!CollectionUtils.isEmpty(volunteerList)){ + List volunteers = new ArrayList<>(); + List finalVolunteers = volunteers; + volunteerList.forEach(v -> { + List collect = Arrays.stream(v.split(",")).collect(Collectors.toList()); + finalVolunteers.addAll(collect); + }); + volunteers = volunteers.stream().distinct().collect(Collectors.toList()); + // 去customize 查询志愿者类别 + Result> volunteerResult = operCustomizeOpenFeignClient.volunteerLabelByValues(volunteers, personData.getCustomerId()); + if (!volunteerResult.success()){ + throw new RenException("查询志愿者类别失败..."); + } + personData.setVolunteerCategory(volunteerResult.getData()); + } + } + // 网格名 + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(personData.getGridId()); + if (null != gridInfo){ + personData.setGridName(gridInfo.getGridNamePath()); + } + /** + * 人员类别 + * 先查询customize配置的 + * 再根据配置去查询字段 + */ return personData; } @@ -526,7 +557,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> getDataForExport(Map formItemMap, String customerId, String formCode, String baseTableName, List conditions) { + public Map> getDataForExport(Map formItemMap, Map> resiMainList, String customerId, String formCode, String baseTableName, List conditions) { List> mapList = this.dynamicQuery(customerId, formCode, baseTableName, conditions); Map> result = new LinkedHashMap<>(); mapList.stream().filter(Objects::nonNull).forEach(map -> { String resiId = (String) map.getOrDefault(UserConstant.IC_RESI_USER, ""); + + if ("ic_resi_user".equals(baseTableName)) { + resiId = (String) map.get("ID"); + } + + if (StringUtils.isBlank(resiId)){ + log.error("getDataForExport error,resiId:{}",resiId); + return; + } + result.put(resiId, map); for (Map.Entry e : formItemMap.entrySet()) { String k = e.getKey(); FormItem v = e.getValue(); @@ -546,8 +588,16 @@ public class IcResiUserServiceImpl extends BaseServiceImpl columnWrappers = new HashMap<>(); + if(v.getItemId().equals("1078")){ + Map userMap = resiMainList.get(map.get(UserConstant.IC_RESI_USER)); + Object gridId = userMap.get(UserConstant.GRID_ID); + IcResiUserImportServiceImpl.ColumnWrapper value = new IcResiUserImportServiceImpl.ColumnWrapper(); + value.setColValue(gridId.toString()); + columnWrappers.put("1001", value); + } //todo 获取 options - Map stringMap = icResiUserImportService.listRemoteOptions(new HashMap<>(), v.getOptionSourceValue(), null); + Map stringMap = icResiUserImportService.listRemoteOptions(columnWrappers, 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())) { @@ -582,15 +632,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl gridInfoRes = govOrgOpenFeignClient.getGridBaseInfoByGridId(formDTO); if (gridInfoRes != null && gridInfoRes.success() && gridInfoRes.getData() != null) { - map.put(UserConstant.GRID_ID, gridInfoRes.getData().getGridName()); + map.put(UserConstant.GRID_NAME, gridInfoRes.getData().getGridName()); } } Object homeId = map.get(UserConstant.HOME_ID); @@ -658,4 +701,17 @@ public class IcResiUserServiceImpl extends BaseServiceImpl>} + * @Author zhaoqifeng + * @Date 2021/11/5 14:40 + */ + @Override + public Map> getHomeUserCategoryCount(String buildId) { + return baseDao.getHomeUserCategoryCount(buildId); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcStatsResiWarnServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcStatsResiWarnServiceImpl.java new file mode 100644 index 0000000000..6d17d804ca --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcStatsResiWarnServiceImpl.java @@ -0,0 +1,104 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

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

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

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.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.IcStatsResiWarnDao; +import com.epmet.dto.IcStatsResiWarnDTO; +import com.epmet.entity.IcStatsResiWarnEntity; +import com.epmet.redis.IcStatsResiWarnRedis; +import com.epmet.service.IcStatsResiWarnService; +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 IcStatsResiWarnServiceImpl extends BaseServiceImpl implements IcStatsResiWarnService { + + @Autowired + private IcStatsResiWarnRedis icStatsResiWarnRedis; + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, IcStatsResiWarnDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, IcStatsResiWarnDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public IcStatsResiWarnDTO get(String id) { + IcStatsResiWarnEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, IcStatsResiWarnDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(IcStatsResiWarnDTO dto) { + IcStatsResiWarnEntity entity = ConvertUtils.sourceToTarget(dto, IcStatsResiWarnEntity.class); + insert(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(IcStatsResiWarnDTO dto) { + IcStatsResiWarnEntity entity = ConvertUtils.sourceToTarget(dto, IcStatsResiWarnEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } + +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java new file mode 100644 index 0000000000..33d30a3212 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java @@ -0,0 +1,210 @@ +package com.epmet.service.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dao.IcStatsResiWarnDao; +import com.epmet.dto.IcResiCategoryStatsConfigDTO; +import com.epmet.dto.IcResiCategoryWarnConfigDTO; +import com.epmet.dto.result.BuildingResultDTO; +import com.epmet.dto.result.IcStatsResiResultDTO; +import com.epmet.dto.result.IcStatsResiWarnBuildingResultDTO; +import com.epmet.dto.result.IcStatsResiWarnUserResultDTO; +import com.epmet.entity.IcStatsResiWarnEntity; +import com.epmet.feign.GovOrgOpenFeignClient; +import com.epmet.feign.OperCustomizeOpenFeignClient; +import com.epmet.service.IcStatsResiWarnService; +import com.epmet.service.StatsResiWarnService; +import lombok.extern.slf4j.Slf4j; +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.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class StatsResiWarnServiceImpl implements StatsResiWarnService { + @Resource + private IcStatsResiWarnDao icStatsResiWarnDao; + + @Autowired + private IcStatsResiWarnService icStatsResiWarnService; + + @Autowired + private GovOrgOpenFeignClient govOrgOpenFeignClient; + + @Autowired + private OperCustomizeOpenFeignClient operCustomizeOpenFeignClient; + + @Override + public List buildingwWarnList(String agencyID) { + List result = new ArrayList<>(); + //feign获取当前需要预警的配置信息以及阈值 + Result> warnResult = operCustomizeOpenFeignClient.resiCategoryWarnList(); + if (!warnResult.success() || null == warnResult.getData()) { + throw new RenException("预警配置查询失败:"+ warnResult.getMsg()); + } + List icResiCategoryWarnConfigDTOList = warnResult.getData(); + + if(CollectionUtils.isEmpty(icResiCategoryWarnConfigDTOList )){ + return result; + } + result = icResiCategoryWarnConfigDTOList.stream().map(item -> { + IcStatsResiWarnBuildingResultDTO resiWarnBuildingResultDTO = new IcStatsResiWarnBuildingResultDTO(); + resiWarnBuildingResultDTO.setConfigId(item.getId()); + resiWarnBuildingResultDTO.setLabel(item.getLabel()); + resiWarnBuildingResultDTO.setLevel1(item.getLevel1()); + resiWarnBuildingResultDTO.setLevel2(item.getLevel2()); + resiWarnBuildingResultDTO.setLevel3(item.getLevel3()); + resiWarnBuildingResultDTO.setSort(item.getSort()); + resiWarnBuildingResultDTO.setLevelCount1(0); + resiWarnBuildingResultDTO.setLevelCount2(0); + resiWarnBuildingResultDTO.setLevelCount3(0); + resiWarnBuildingResultDTO.setBuildingIdList1(new ArrayList<>()); + resiWarnBuildingResultDTO.setBuildingIdList2(new ArrayList<>()); + resiWarnBuildingResultDTO.setBuildingIdList3(new ArrayList<>()); + return resiWarnBuildingResultDTO; + }).collect(Collectors.toList()); + //统计数量 + List icStatsResiWarnEntityList = icStatsResiWarnDao.selectResiWarnByAgencyId(agencyID); + if(CollectionUtils.isEmpty(icStatsResiWarnEntityList )){ + return result; + } + Map warnResultMap = result.stream().collect(Collectors.toMap(IcStatsResiWarnBuildingResultDTO::getConfigId, Function.identity(),(k1, k2)->k1)); + for (IcStatsResiWarnEntity item : icStatsResiWarnEntityList) { + //每栋楼的数量 + Integer count = Optional.ofNullable(item.getCount()).orElse(0); + IcStatsResiWarnBuildingResultDTO resiWarnBuildingResultDTO = warnResultMap.get(item.getConfigId()); + //判断数量 + Integer levle1= resiWarnBuildingResultDTO.getLevel1(); + Integer levle2= resiWarnBuildingResultDTO.getLevel2(); + Integer levle3= resiWarnBuildingResultDTO.getLevel3(); + if(0 == count){ + continue; + } + if(null!=levle1 && count>levle1){ + resiWarnBuildingResultDTO.setLevelCount1(resiWarnBuildingResultDTO.getLevelCount1()+1); + resiWarnBuildingResultDTO.getBuildingIdList1().add(item.getBuildingId()); + } + if(null!=levle1 && null!=levle2 && count<=levle1 && count>=levle2){ + resiWarnBuildingResultDTO.setLevelCount2(resiWarnBuildingResultDTO.getLevelCount2()+1); + resiWarnBuildingResultDTO.getBuildingIdList2().add(item.getBuildingId()); + } + if(null!=levle2 && null!=levle3 && count<=levle2 && count>=levle3){ + resiWarnBuildingResultDTO.setLevelCount3(resiWarnBuildingResultDTO.getLevelCount3()+1); + resiWarnBuildingResultDTO.getBuildingIdList3().add(item.getBuildingId()); + } + } + return result; + + } + + @Override + public List userWarnList(String configId, List buildingIdList) { + //feign根据buildingIdList 获取网格,小区,楼宇 信息 + Result> buildingList = govOrgOpenFeignClient.buildingListByIds(buildingIdList); + if (!buildingList.success() || null == buildingList.getData()) { + throw new RenException("楼宇信息查询失败,buildingList="+ JSON.toJSONString(buildingIdList)); + } + List buildingResultDTOList = buildingList.getData(); + + List result = ConvertUtils.sourceToTarget(buildingResultDTOList,IcStatsResiWarnUserResultDTO.class); + if(CollectionUtils.isEmpty(result)){ + return new ArrayList<>(); + } + //获取configId预警配置信息 + IcResiCategoryWarnConfigDTO formDto = new IcResiCategoryWarnConfigDTO(); + formDto.setId(configId); + Result warnResult = operCustomizeOpenFeignClient.resiCategoryWarnInfoById(formDto); + if (!warnResult.success() || null == warnResult.getData()) { + throw new RenException("获取预警配置信息失败,configId="+ configId); + } + IcResiCategoryWarnConfigDTO icResiCategoryWarnConfigDTO = warnResult.getData(); + + //根据buildingID,tableName he columnName获取名字 + List> maps = icStatsResiWarnDao.userWarnList(buildingIdList, icResiCategoryWarnConfigDTO.getTableName(), icResiCategoryWarnConfigDTO.getColumnName()); + result.forEach(item->{ + item.setConfigId(configId); + List> buildingIds = maps.stream().filter(map -> item.getBuildingId().equals(map.get("buildingId"))).collect(Collectors.toList()); + item.setResidentNames(CollectionUtils.isEmpty(buildingIds)?"":buildingIds.get(0).get("residentNames")); + }); + return result; + } + + @Override + public List list(String id, String level) { + //获取所有配置类项 getshow + Result> statsResult = operCustomizeOpenFeignClient.resiCategoryStatsListShowd(); + if (!statsResult.success() || null == statsResult.getData()) { + throw new RenException("获取配置类项失败"); + } + List icResiCategoryStatsConfigDTOList = statsResult.getData(); + //获取tableName 和columnName + List result = new ArrayList<>(); + icResiCategoryStatsConfigDTOList.forEach(item->{ + IcStatsResiResultDTO resultDTO = new IcStatsResiResultDTO(); + resultDTO.setId(item.getId()); + resultDTO.setLabel(item.getLabel()); + resultDTO.setDataIcon(item.getDataIcon()); + resultDTO.setHouseShowIcon(item.getHouseShowIcon()); + resultDTO.setManagementIcon(item.getManagementIcon()); + //根据id ,level 获取count + Integer count = icStatsResiWarnDao.countListByLevelAndCol(item.getTableName(),item.getColumnName(),id,level); + resultDTO.setCount(count); + result.add(resultDTO); + }); + return result; + } + + /** + * 统计 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void resiWarn(String customerId) { + // 获取预警配置项 + Result> warnResult = operCustomizeOpenFeignClient.resiCategoryWarnList(); + if (!warnResult.success() || null == warnResult.getData()) { + throw new RenException("预警配置查询失败:"+ warnResult.getMsg()); + } + List icResiCategoryWarnConfigDTOList = warnResult.getData(); + + //保存数据 + List icStatsResiWarnEntities = new ArrayList<>(); + for (IcResiCategoryWarnConfigDTO item : icResiCategoryWarnConfigDTOList) { + icStatsResiWarnDao.delete(new QueryWrapper().lambda().eq(IcStatsResiWarnEntity::getConfigId,item.getId())); + List maps = icStatsResiWarnDao.resiWarn(item.getTableName(), item.getColumnName()); + + + if(CollectionUtils.isEmpty(maps)){ + continue; + } + + maps.forEach(map->{ + IcStatsResiWarnEntity icStatsResiWarnEntity = new IcStatsResiWarnEntity(); + icStatsResiWarnEntity.setAgencyId(map.getAgencyId()); + icStatsResiWarnEntity.setAgencyPids(map.getAgencyPids()); + icStatsResiWarnEntity.setBuildingId(map.getBuildingId()); + icStatsResiWarnEntity.setConfigId(item.getId()); + icStatsResiWarnEntity.setCount(map.getCount()); + icStatsResiWarnEntity.setCustomerId(customerId); + icStatsResiWarnEntity.setGridId(map.getGridId()); + icStatsResiWarnEntity.setNeighborHoodId(map.getNeighborHoodId()); + icStatsResiWarnEntities.add(icStatsResiWarnEntity); + }); + + } + icStatsResiWarnService.insertBatch(icStatsResiWarnEntities,500); + + } +} diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid.xls b/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid.xls index 3ef0d2242a..6e2934b55b 100644 Binary files a/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid.xls and b/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid.xls differ diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml index b3fce33028..87ecaf57ca 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml @@ -153,6 +153,10 @@ + + + + @@ -160,11 +164,14 @@ + + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcStatsResiWarnDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcStatsResiWarnDao.xml new file mode 100644 index 0000000000..4416ac2f2e --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcStatsResiWarnDao.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file