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/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/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/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/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/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/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..519594fb62 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; @@ -97,4 +99,20 @@ 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); + + + } 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..cad357aca5 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,24 @@ 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); + } } 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/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/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/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-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..9cc92f1a37 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,10 @@ public class PersonDataResultDTO implements Serializable { */ @JsonIgnore private String idCard; + + /** + * 是否是志愿者 1是,0否 + */ + @JsonIgnore + private String isVolunteer; } 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/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index dd62a9fd02..23d7cdfe47 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,12 +71,28 @@ 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 private IcResiUserService icResiUserService; @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){ @@ -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,7 +206,7 @@ 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)); } } @@ -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..b84138258a 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 @@ -120,4 +120,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..18c8896477 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 @@ -493,6 +493,14 @@ public class IcResiUserServiceImpl extends BaseServiceImpl volunteers = baseDao.selectVolunteerByUserId(formDTO.getUserId()); + volunteers.forEach(v -> { + + }); + } // TODO return personData; } @@ -658,4 +666,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/mapper/IcResiUserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml index b3fce33028..319743fe3e 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 @@ -214,4 +214,35 @@ + + + + \ 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