diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcoll/impl/ScreenPyHistoryScoreServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcoll/impl/ScreenPyHistoryScoreServiceImpl.java index 05429d9505..bf657668e2 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcoll/impl/ScreenPyHistoryScoreServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcoll/impl/ScreenPyHistoryScoreServiceImpl.java @@ -188,7 +188,7 @@ public class ScreenPyHistoryScoreServiceImpl implements ScreenPyHistoryScoreServ } if (!CollectionUtils.isEmpty(result.getData())) { GridLivelyResultDTO gridLively = result.getData().get(NumConstant.ZERO); - String score = (gridLively.getGridSumNum() <= 0) ? "0" : numberFormat.format(((float) gridLively.getGridLivelyNum() / (float) gridLively.getGridSumNum()) * 100 + (gridLively.getGridOrdinaryNum() / gridLively.getGridSumNum()) * 80); + String score = (gridLively.getGridSumNum() <= 0) ? "0" : numberFormat.format(((float) gridLively.getGridLivelyNum() / (float) gridLively.getGridSumNum()) * 100 + ((float)gridLively.getGridOrdinaryNum() / (float)gridLively.getGridSumNum()) * 80); resultDTO.setScore(score); } } else if ("event".equals(formDTO.getType())) { @@ -202,7 +202,7 @@ public class ScreenPyHistoryScoreServiceImpl implements ScreenPyHistoryScoreServ HistoryScoreSjffResultDTO dto2 = screenPyHistoryScoreDao.sumProjectScore(formDTO); //查询街道下有效网格员数 HistoryScoreSjffResultDTO dto3 = screenPyHistoryScoreDao.sumGridNum(formDTO); - String score = numberFormat.format(((float) dto1.getEventScore() / (float) dto3.getGridStaffNum()) + (dto2.getProjectScore() / dto3.getGridStaffNum())); + String score = numberFormat.format(((float) dto1.getEventScore() / (float) dto3.getGridStaffNum()) + ((float)dto2.getProjectScore() / (float)dto3.getGridStaffNum())); resultDTO.setScore(score); } return resultDTO; diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ShowApiServiceImpl.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ShowApiServiceImpl.java index 28fb609191..7d2aadcc2d 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ShowApiServiceImpl.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ShowApiServiceImpl.java @@ -129,13 +129,11 @@ public class ShowApiServiceImpl implements ShowApiService { try { dayDetailResultDTO = ShowApiUtil.queryHolidayV2020(currentDate); if (dayDetailResultDTO == null){ - logger.error(String.format("workDayInitTask 获取(%s)工作日接口异常", currentDate)); - // logger.warn("initWorkDay howApiUtil.queryHolidayV2020 return null"); + logger.warn("initWorkDay howApiUtil.queryHolidayV2020 return null"); return; } } catch (Exception e) { - // logger.error("queryHolidayV2020 exception", e); - logger.error(String.format("workDayInitTask 获取(%s)工作日接口异常:%s", currentDate, e.getMessage())); + logger.error("queryHolidayV2020 exception", e); return; } List list = calenderDao.selectByDay(currentDate); diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/WorkDayInitTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/WorkDayInitTask.java index 2fc300a977..b1e6673044 100644 --- a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/WorkDayInitTask.java +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/WorkDayInitTask.java @@ -24,16 +24,11 @@ public class WorkDayInitTask implements ITask { @Autowired private WorkDayInitService workDayInitService; - /** - * 定时任务,调用互联网api,插入calender 表数据 - * @param params 参数,多参数使用JSON数据 - */ @Override public void run(String params) { log.info("WorkDayInitTask定时任务正在执行,参数为:{}", params); if (StringUtils.isBlank(params)){ //没有参数默认 初始化明天的 - //params: yyyyMMdd明天的日期 params = DateUtils.format(DateUtils.addDateDays(new Date(), NumConstant.ONE),DateUtils.DATE_PATTERN_YYYYMMDD); } Result result = workDayInitService.workDayInit(params); @@ -43,8 +38,4 @@ public class WorkDayInitTask implements ITask { log.error("{}定时任务执行失败:{},param:{}" ,getClass().getSimpleName(), result.getMsg(), params); } } - - public static void main(String[] args) { - System.out.println(DateUtils.format(DateUtils.addDateDays(new Date(), NumConstant.ONE),DateUtils.DATE_PATTERN_YYYYMMDD)); - } } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/BuildingTreeLevelDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/BuildingTreeLevelDTO.java index 195336b46e..5aa877ecaf 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/BuildingTreeLevelDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/BuildingTreeLevelDTO.java @@ -17,6 +17,7 @@ package com.epmet.dto; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import java.io.Serializable; @@ -57,4 +58,8 @@ public class BuildingTreeLevelDTO implements Serializable { private String showNum; private String showName; + //agency、grid + @JsonIgnore + private String orgType; + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/HouseManageTreeFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/HouseManageTreeFormDTO.java new file mode 100644 index 0000000000..f8a659eafd --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/HouseManageTreeFormDTO.java @@ -0,0 +1,54 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 烟台,房屋信息界面,左侧树查询入参 + * @Author yzm + * @Date 2023/1/6 13:39 + */ +@Data +public class HouseManageTreeFormDTO implements Serializable { + public interface InitTreeGroup { + } + + // public interface AddUserShowGroup extends CustomerClientShowGroup {} + public interface NodeEventGroup { + } + + + /** + * 组织id、网格id、小区id、楼栋id + */ + @NotBlank(message = "id不能为空", groups = NodeEventGroup.class) + private String id; + /** + * 省级:province + * 市级: city + * 区县级: district, + * 乡(镇、街道)级:street, + * 社区级:community, + * 网格:grid + * 小区:neighborHood + * 楼栋:building + */ + @NotBlank(message = "level不能为空", groups = NodeEventGroup.class) + private String level; + + + // ------------------------------------ + /** + * tokenDto.customerId + */ + @NotBlank(message = "customerId不能为空", groups = {InitTreeGroup.class,NodeEventGroup.class}) + private String customerId; + /** + * tokenDto.userId + */ + @NotBlank(message = "staffId不能为空", groups = {InitTreeGroup.class,NodeEventGroup.class}) + private String staffId; +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcHouseListFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcHouseListFormDTO.java index e2022b1420..fc24ee9fae 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcHouseListFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcHouseListFormDTO.java @@ -115,4 +115,14 @@ public class IcHouseListFormDTO extends PageFormDTO { * 楼栋ID */ private String unitId; + + + //对应界面上的所属组织 + /** + * 组织:agency + * 网格:grid + * 与orgId一起使用 + */ + private String orgType; + private String orgId; } 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 9185571640..971015a298 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 @@ -109,12 +109,50 @@ public class BuildingController { return new Result(); } + /** + * 房屋信息左侧树 + * 此接口返回的树是完整的,针对烟台市这个客户,改为逐级展开,烟台调用下面的接口: + * @param tokenDTO + * @return + */ @PostMapping("treelist") - public Result treeList(@LoginUser TokenDto tokenDTO){ + public Result> treeList(@LoginUser TokenDto tokenDTO){ List buildingTreeLevelDTOS =buildingService.treeList(tokenDTO.getCustomerId(), tokenDTO.getUserId()); return new Result().ok(buildingTreeLevelDTOS); } + /** + * 房屋信息左侧树 + * 逐级展开,用户点击树节点去查询 目前只有烟台客户房屋信息调用 + * @param tokenDTO + * @return + */ + @PostMapping("treeinit") + public Result treeInit(@LoginUser TokenDto tokenDTO){ + HouseManageTreeFormDTO formDTO=new HouseManageTreeFormDTO(); + formDTO.setCustomerId(tokenDTO.getCustomerId()); + formDTO.setStaffId(tokenDTO.getUserId()); + ValidatorUtils.validateEntity(formDTO,HouseManageTreeFormDTO.InitTreeGroup.class); + BuildingTreeLevelDTO buildingTreeLevelDTOS =buildingService.treeInit(formDTO); + return new Result().ok(buildingTreeLevelDTOS); + } + + /** + * 房屋信息左侧树 + * 点击树上节点,查询下一级列表 + * @param tokenDTO + * @param formDTO + * @return + */ + @PostMapping("next-tree-node") + public Result> nextTreeNode(@LoginUser TokenDto tokenDTO,@RequestBody HouseManageTreeFormDTO formDTO){ + formDTO.setCustomerId(tokenDTO.getCustomerId()); + formDTO.setStaffId(tokenDTO.getUserId()); + ValidatorUtils.validateEntity(formDTO,HouseManageTreeFormDTO.NodeEventGroup.class); + List resultList =buildingService.nextTreeNode(formDTO); + return new Result>().ok(resultList); + } + /** * Desc: 根据前端方便,新开接口,只返回树的ID * @param tokenDTO diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java index e2fbd3162a..7e98f598f8 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java @@ -18,6 +18,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.BuildingTreeLevelDTO; import com.epmet.dto.CustomerAgencyDTO; import com.epmet.dto.form.GridInfoVaccinePrarmeterFormDTO; import com.epmet.dto.form.OrgInfoPointFormDTO; @@ -401,6 +402,25 @@ public interface CustomerAgencyDao extends BaseDao { List getCurrentUserCommunityInfo(@Param("customerId") String customerId,@Param("staffAgencyId")String staffAgencyId); + /** + * + * @param agencyId + * @return 组织信息,用于房屋信息左侧树 + */ + BuildingTreeLevelDTO selectAgencyTree(String agencyId); + /** + * + * @param agencyId + * @return 获取当前agencyId的下一级组织+直属网格 + */ + List selectNextOrg(String agencyId); + + /** + * 查询当前agencyId下 组织数+网格数 + * @param agencyId + * @return + */ + Integer selectTotalNext(String agencyId); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java index 46f0041e8d..4b10e94bf1 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 @@ -51,7 +51,9 @@ public interface IcBuildingDao extends BaseDao { List searchAllBuilding( @Param("building")IcBuildingEntity building, @Param("house")IcHouseEntity house); - List selectAgencyChildrenList(@Param("agencyId") String agencyId); + List selectAgencyChildrenList(@Param("customerId")String customerId, + @Param("pidsKey") String pidsKey, + @Param("pid")String pid); List> selectListByName(@Param("customerId") String customerId, @Param("neighborNameList")ArrayList strings, diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseExportExcelDTO.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseExportExcelDTO.java index cf045560bc..9188b748b7 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseExportExcelDTO.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseExportExcelDTO.java @@ -85,7 +85,6 @@ public class EnterpriseExportExcelDTO { @ExcelIgnore private String scale; - @ExcelIgnore private Integer scaleTotal; /** * 规模名称 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 441995271b..27e1c4c1ee 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,10 +20,7 @@ package com.epmet.service; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.BuildingTreeLevelDTO; -import com.epmet.dto.form.IcBuildingListFormDTO; -import com.epmet.dto.form.IcBulidingAddFormDTO; -import com.epmet.dto.form.IcHouseListFormDTO; -import com.epmet.dto.form.ImportInfoFormDTO; +import com.epmet.dto.form.*; import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.BuildingResultPagedDTO; import com.epmet.dto.result.IcBuildingListResultDTO; @@ -57,7 +54,29 @@ public interface BuildingService { void addBuilding(String customerId, IcBulidingAddFormDTO formDTO); + /** + * 房屋信息左侧树 + * @param customerId + * @param staffId + * @return + */ List treeList(String customerId, String staffId); + + /** + * 房屋信息左侧树 + * @param houseManageTreeFormDTO + * @return 逐级展开,用户点击树节点去查询 + */ + BuildingTreeLevelDTO treeInit(HouseManageTreeFormDTO houseManageTreeFormDTO); + + /** + * 房屋信息左侧树 + * 点击树上节点,查询下一级列表 + * @param houseManageTreeFormDTO + * @return + */ + List nextTreeNode(HouseManageTreeFormDTO houseManageTreeFormDTO); + List treeIds(String customerId, String staffId); PageData listBuilding(IcBuildingListFormDTO formDTO); 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 36dde00dfe..3219513ac1 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 @@ -53,10 +53,7 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.ExecutorService; import java.util.stream.Collectors; @@ -181,7 +178,7 @@ public class BuildingServiceImpl implements BuildingService { // agency.setAgencyId("77f6bc7f07064bf4c09ef848139a344c"); //1.获取所在组织及下级组织 CustomerAgencyEntity customerAgency = customerAgencyDao.selectById(agency.getAgencyId()); - List customerAgencyList = icBuildingDao.selectAgencyChildrenList(agency.getAgencyId()); + List customerAgencyList = icBuildingDao.selectAgencyChildrenList(customerId,agency.getAgencyId(),null); customerAgencyList.add(customerAgency); if (CollectionUtils.isEmpty(customerAgencyList)) { @@ -313,6 +310,184 @@ public class BuildingServiceImpl implements BuildingService { } + /** + * 房屋信息左侧树 + * + * @param formDTO + * @return 逐级展开,用户点击树节点去查询 + */ + @Override + public BuildingTreeLevelDTO treeInit(HouseManageTreeFormDTO formDTO) { + CustomerStaffInfoCacheResult staffInfoCacheResult=CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(),formDTO.getStaffId()); + BuildingTreeLevelDTO resultDto = customerAgencyDao.selectAgencyTree(staffInfoCacheResult.getAgencyId()); + if (null != resultDto) { + int showNum = customerAgencyDao.selectTotalNext(staffInfoCacheResult.getAgencyId()); + resultDto.setShowNum(String.valueOf(showNum)); + resultDto.setShowName(String.format("%s(%s)", resultDto.getLabel(), showNum)); + List children = customerAgencyDao.selectNextOrg(staffInfoCacheResult.getAgencyId()); + for (BuildingTreeLevelDTO dto : children) { + if ("agency".equals(dto.getOrgType())) { + dto.setShowNum(String.valueOf(customerAgencyDao.selectTotalNext(dto.getId()))); + dto.setShowName(String.format("%s(%s)", dto.getLabel(), dto.getShowNum())); + } else if ("grid".equals(dto.getOrgType())) { + LambdaQueryWrapper queryWrapper = new QueryWrapper().lambda() + .eq(IcNeighborHoodEntity::getGridId, dto.getId()); + dto.setShowNum(String.valueOf(icNeighborHoodDao.selectCount(queryWrapper))); + dto.setShowName(String.format("%s(%s)", dto.getLabel(), dto.getShowNum())); + } + } + resultDto.setChildren(children); + } + return resultDto; + } + + /** + * 房屋信息左侧树 + * 点击树上节点,查询下一级列表 + * + * @param formDTO + * @return + */ + @Override + public List nextTreeNode(HouseManageTreeFormDTO formDTO) { + /** + * level:::: + * 省级:province + * 市级: city + * 区县级: district, + * 乡(镇、街道)级:street, + * 社区级:community, + * 网格:grid + * 小区:neighborHood + * 楼栋:building + */ + List resultList = new ArrayList<>(); + if ("province".equals(formDTO.getLevel()) + || "city".equals(formDTO.getLevel()) + || "district".equals(formDTO.getLevel()) + || "street".equals(formDTO.getLevel())) { + List list = customerAgencyDao.selectNextOrg(formDTO.getId()); + for (BuildingTreeLevelDTO dto : list) { + if ("agency".equals(dto.getOrgType())) { + dto.setShowNum(String.valueOf(customerAgencyDao.selectTotalNext(dto.getId()))); + dto.setShowName(String.format("%s(%s)", dto.getLabel(), dto.getShowNum())); + } else if ("grid".equals(dto.getOrgType())) { + LambdaQueryWrapper queryWrapper = new QueryWrapper().lambda() + .eq(IcNeighborHoodEntity::getGridId, dto.getId()); + dto.setShowNum(String.valueOf(icNeighborHoodDao.selectCount(queryWrapper))); + dto.setShowName(String.format("%s(%s)", dto.getLabel(), dto.getShowNum())); + } + } + resultList.addAll(list); + } else if ("community".equals(formDTO.getLevel())) { + // 网格列表,需要计算网格下小区数量 + resultList.addAll(getGridTreeNode(formDTO.getId())); + } else if ("grid".equals(formDTO.getLevel())) { + // 小区列表,需要计算小区下楼栋数量 + resultList.addAll(getNeighborHoodTreeNode(formDTO.getId())); + } else if ("neighborHood".equals(formDTO.getLevel())) { + // 楼栋列表,需要计算楼栋下 实有房屋数/楼栋总户数 + resultList.addAll(getBuildTreeNode(formDTO.getId())); + } else if ("building".equals(formDTO.getLevel())) { + // 直接返回 + return resultList; + } + return resultList; + } + + private List getGridTreeNode(String agencyId) { + List list = new ArrayList<>(); + LambdaQueryWrapper gridWrapper = new LambdaQueryWrapper<>(); + gridWrapper.eq(CustomerGridEntity::getPid, agencyId); + gridWrapper.last("ORDER BY sort,CAST(GRID_NAME AS SIGNED),CONVERT(GRID_NAME using gbk)"); + List customerGridList = customerGridDao.selectList(gridWrapper); + customerGridList.forEach(gridEntity -> { + BuildingTreeLevelDTO resultDto = new BuildingTreeLevelDTO(); + resultDto.setId(gridEntity.getId()); + resultDto.setLabel(gridEntity.getGridName()); + resultDto.setLevel("grid"); + resultDto.setPId(gridEntity.getPid()); + resultDto.setLongitude(gridEntity.getLongitude()); + resultDto.setLatitude(gridEntity.getLatitude()); + resultDto.setChildren(new ArrayList<>()); + // 当前网格下有几个小区 + LambdaQueryWrapper neighborhoodWrapper = new QueryWrapper().lambda() + .eq(IcNeighborHoodEntity::getGridId, resultDto.getId()); + resultDto.setShowNum(String.valueOf(icNeighborHoodDao.selectCount(neighborhoodWrapper))); + resultDto.setShowName(String.format("%s(%s)", resultDto.getLabel(), resultDto.getShowNum())); + list.add(resultDto); + }); + return list; + } + + private List getNeighborHoodTreeNode(String gridId) { + List list = new ArrayList<>(); + // 当前网格下有几个小区 + LambdaQueryWrapper neighborhoodWrapper = new QueryWrapper().lambda() + .eq(IcNeighborHoodEntity::getGridId, gridId) + .last("ORDER BY CAST(NEIGHBOR_HOOD_NAME AS SIGNED),CONVERT(NEIGHBOR_HOOD_NAME using gbk)"); + ; + List neighborHoodEntityList = icNeighborHoodDao.selectList(neighborhoodWrapper); + neighborHoodEntityList.forEach(item -> { + BuildingTreeLevelDTO neighborHood = new BuildingTreeLevelDTO(); + neighborHood.setId(item.getId()); + neighborHood.setPId(item.getGridId()); + neighborHood.setLabel(item.getNeighborHoodName()); + neighborHood.setLevel("neighborHood"); + neighborHood.setLongitude(item.getLongitude()); + neighborHood.setLatitude(item.getLatitude()); + neighborHood.setChildren(new ArrayList<>()); + // 当前小区下,有几栋楼 + LambdaQueryWrapper buildingQueryWrapper = new QueryWrapper().lambda() + .eq(IcBuildingEntity::getNeighborHoodId, neighborHood.getId()); + neighborHood.setShowNum(String.valueOf(icBuildingDao.selectCount(buildingQueryWrapper))); + neighborHood.setShowNum(String.format("%s(%s)", neighborHood.getLabel(), neighborHood.getShowNum())); + list.add(neighborHood); + }); + return list; + } + + private List getBuildTreeNode(String neighborHoodId) { + List list = new ArrayList<>(); + LambdaQueryWrapper buildingQueryWrapper = new QueryWrapper().lambda() + .in(IcBuildingEntity::getNeighborHoodId, neighborHoodId) + .last("ORDER BY SORT, CAST(BUILDING_NAME AS SIGNED),CONVERT(BUILDING_NAME USING gbk)"); + List icBuildingList = icBuildingDao.selectList(buildingQueryWrapper); + + // 获取楼里已经有多少个房屋 + LambdaQueryWrapper icHouseEntityWrapper = new QueryWrapper().lambda() + .eq(IcHouseEntity::getNeighborHoodId, neighborHoodId) + .select(IcHouseEntity::getId) + .select(IcHouseEntity::getBuildingId); + List buildingHouseCount = icHouseDao.selectList(icHouseEntityWrapper); + Map buildingHouseCountMap = buildingHouseCount.stream().collect(Collectors.groupingBy(IcHouseEntity::getBuildingId, Collectors.counting())); + + icBuildingList.forEach(item -> { + BuildingTreeLevelDTO building = new BuildingTreeLevelDTO(); + building.setId(item.getId()); + building.setPId(item.getNeighborHoodId()); + building.setLabel(item.getBuildingName()); + building.setLevel("building"); + building.setLongitude(item.getLongitude()); + building.setLatitude(item.getLatitude()); + building.setChildren(new ArrayList<>()); + // 当前楼栋共有多少户,有多少户有人住 + building.setShowNum(StrConstant.EPMETY_STR); + // 楼栋总户数 + Integer total = null == item.getTotalHouseNum() ? NumConstant.ZERO : item.getTotalHouseNum(); + // 实际已录入的总房屋数 + int count = buildingHouseCountMap.getOrDefault(item.getId(), NumConstant.ZERO_L).intValue(); + if (NumConstant.ZERO == total) { + building.setShowNum(String.format("%s/%s", count, count)); + } else { + building.setShowNum(String.format("%s/%s", count, total)); + } + building.setShowName(String.format("%s(%s)", building.getLabel(), building.getShowNum())); + list.add(building); + }); + return list; + } + /** * Desc: * 2022-06-06 需求变动,只返回当前组织下级ID @@ -441,6 +616,7 @@ public class BuildingServiceImpl implements BuildingService { private List covertToTree(CustomerAgencyEntity customerAgency, List agencyList) { BuildingTreeLevelDTO buildingTreeLevelDTO = new BuildingTreeLevelDTO(); buildingTreeLevelDTO.setId(customerAgency.getId()); + buildingTreeLevelDTO.setPId(customerAgency.getPid()); buildingTreeLevelDTO.setLabel(customerAgency.getOrganizationName()); buildingTreeLevelDTO.setLevel(customerAgency.getLevel()); buildingTreeLevelDTO.setLongitude(customerAgency.getLongitude()); diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml index 482eac4596..37964a6e2c 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml @@ -1055,4 +1055,69 @@ + + + + + + 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 a825c2538a..2c8176a18f 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 @@ -190,13 +190,20 @@ ca.organization_name AS organizationName, ca.LEVEL AS LEVEL, ca.pid as pid, - ca.pids as pids + ca.pids as pids, + ca.LONGITUDE longitude, + ca.LATITUDE latitude FROM customer_agency ca WHERE ca.del_flag = '0' - and - CONCAT(':',ca.pids, ':') like CONCAT('%:',#{agencyId},':%') + and ca.customer_id = #{customerId} + + and CONCAT(':',ca.pids, ':') like CONCAT('%:',#{pidsKey},':%') + + + and ca.pid = #{pid} + ORDER BY CAST(organization_name AS SIGNED),CONVERT(organization_name using gbk) diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml index 441dfe7f1b..6eac8ed9fd 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml @@ -128,6 +128,16 @@ 1 = 1 and a.del_flag = '0' + + + AND c.GRID_ID = #{orgId} + + + + + and (c.AGENCY_ID =#{orgId} or c.AGENCY_PIDS like concat('%',#{orgId},'%') ) + + and case c.AGENCY_PIDS when '' then CONCAT(c.AGENCY_ID) like CONCAT(#{pids}, '%') else CONCAT(c.AGENCY_PIDS, ':', c.AGENCY_ID) like CONCAT(#{pids}, '%') end diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/util/MySequence.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/util/MySequence.java deleted file mode 100644 index 28475b916f..0000000000 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/util/MySequence.java +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright (c) 2011-2021, baomidou (jobob@qq.com). - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.epmet.util; - -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.toolkit.Assert; -import com.baomidou.mybatisplus.core.toolkit.StringPool; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.core.toolkit.SystemClock; -import com.epmet.commons.tools.utils.HttpClientManager; -import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.logging.Log; -import org.apache.ibatis.logging.LogFactory; - -import java.lang.management.ManagementFactory; -import java.net.InetAddress; -import java.net.NetworkInterface; -import java.util.concurrent.ThreadLocalRandom; - -/** - * 分布式高效有序 ID 生产黑科技(sequence) - * - *

优化开源项目:https://gitee.com/yu120/sequence

- * - * @author hubin - * @since 2016-08-18 - */ -@Slf4j -public class MySequence { - - private static final Log logger = LogFactory.getLog(MySequence.class); - /** - * 时间起始标记点,作为基准,一般取系统的最近时间(一旦确定不能变动) - */ - private final long twepoch = 1288834974657L; - /** - * 机器标识位数 - */ - private final long workerIdBits = 5L; - private final long datacenterIdBits = 5L; - private final long maxWorkerId = -1L ^ (-1L << workerIdBits); - private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits); - /** - * 毫秒内自增位 - */ - private final long sequenceBits = 12L; - private final long workerIdShift = sequenceBits; - private final long datacenterIdShift = sequenceBits + workerIdBits; - /** - * 时间戳左移动位 - */ - private final long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits; - private final long sequenceMask = -1L ^ (-1L << sequenceBits); - - private final long workerId; - - /** - * 数据标识 ID 部分 - */ - private final long datacenterId; - /** - * 并发控制 - */ - private long sequence = 0L; - /** - * 上次生产 ID 时间戳 - */ - private long lastTimestamp = -1L; - - public MySequence() { - this.datacenterId = getDatacenterId(maxDatacenterId); - this.workerId = getMaxWorkerId(datacenterId, maxWorkerId); - String msg = "MySequence datacenterId:" + this.datacenterId + ";workerId:" + this.workerId; - log.info(msg); - HttpClientManager.getInstance().sendAlarmMsg(msg); - } - - /** - * 有参构造器 - * - * @param workerId 工作机器 ID - * @param datacenterId 序列号 - */ - public MySequence(long workerId, long datacenterId) { - Assert.isFalse(workerId > maxWorkerId || workerId < 0, - String.format("MySequence worker Id can't be greater than %d or less than 0", maxWorkerId)); - Assert.isFalse(datacenterId > maxDatacenterId || datacenterId < 0, - String.format("MySequence datacenter Id can't be greater than %d or less than 0", maxDatacenterId)); - this.workerId = workerId; - this.datacenterId = datacenterId; - } - - /** - * 获取 maxWorkerId - */ - protected static long getMaxWorkerId(long datacenterId, long maxWorkerId) { - StringBuilder mpid = new StringBuilder(); - mpid.append(datacenterId); - String name = ManagementFactory.getRuntimeMXBean().getName(); - String msg = "MySequence getMaxWorkerId name:" + name; - log.info(msg); - HttpClientManager.getInstance().sendAlarmMsg(msg); - if (StringUtils.isNotBlank(name)) { - /* - * GET jvmPid - */ - mpid.append(name.split(StringPool.AT)[0]); - } - /* - * MAC + PID 的 hashcode 获取16个低位 - */ - return (mpid.toString().hashCode() & 0xffff) % (maxWorkerId + 1); - } - - /** - * 数据标识id部分 - */ - protected static long getDatacenterId(long maxDatacenterId) { - long id = 0L; - try { - InetAddress ip = InetAddress.getLocalHost(); - NetworkInterface network = NetworkInterface.getByInetAddress(ip); - String msg = "MySequence ip:" + JSON.toJSONString(ip) + ";network: " + JSON.toJSONString(network); - log.info(msg); - HttpClientManager.getInstance().sendAlarmMsg(msg); - if (network == null) { - id = 1L; - log.info("MySequen cenetwork ==null "); - } else { - byte[] mac = network.getHardwareAddress(); - if (null != mac) { - id = ((0x000000FF & (long) mac[mac.length - 2]) | (0x0000FF00 & (((long) mac[mac.length - 1]) << 8))) >> 6; - id = id % (maxDatacenterId + 1); - } - } - } catch (Exception e) { - logger.warn(" getDatacenterId: " + e.getMessage()); - } - return id; - } - - /** - * 获取下一个 ID - * - * @return 下一个 ID - */ - public synchronized long nextId() { - long timestamp = timeGen(); - //闰秒 - if (timestamp < lastTimestamp) { - long offset = lastTimestamp - timestamp; - if (offset <= 5) { - try { - wait(offset << 1); - timestamp = timeGen(); - if (timestamp < lastTimestamp) { - throw new RuntimeException(String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", offset)); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - } else { - throw new RuntimeException(String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", offset)); - } - } - - if (lastTimestamp == timestamp) { - // 相同毫秒内,序列号自增 - sequence = (sequence + 1) & sequenceMask; - if (sequence == 0) { - // 同一毫秒的序列数已经达到最大 - timestamp = tilNextMillis(lastTimestamp); - } - } else { - // 不同毫秒内,序列号置为 1 - 3 随机数 - sequence = ThreadLocalRandom.current().nextLong(1, 3); - } - - lastTimestamp = timestamp; - - // 时间戳部分 | 数据中心部分 | 机器标识部分 | 序列号部分 - return ((timestamp - twepoch) << timestampLeftShift) - | (datacenterId << datacenterIdShift) - | (workerId << workerIdShift) - | sequence; - } - - protected long tilNextMillis(long lastTimestamp) { - long timestamp = timeGen(); - while (timestamp <= lastTimestamp) { - timestamp = timeGen(); - } - return timestamp; - } - - protected long timeGen() { - return SystemClock.now(); - } - -} - 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 3cf6e804e9..b3e82440ef 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 @@ -128,7 +128,7 @@
- + @@ -137,15 +137,6 @@ - - - - - ${subCondition.tableName}.${colValue} ='1' - - - -