Browse Source

Merge remote-tracking branch 'origin/房屋tree_yzm' into dev

master
yinzuomei 3 years ago
parent
commit
7a4cd2e123
  1. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcoll/impl/ScreenPyHistoryScoreServiceImpl.java
  2. 6
      epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ShowApiServiceImpl.java
  3. 9
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/WorkDayInitTask.java
  4. 5
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/BuildingTreeLevelDTO.java
  5. 54
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/HouseManageTreeFormDTO.java
  6. 10
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcHouseListFormDTO.java
  7. 40
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java
  8. 20
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java
  9. 4
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java
  10. 1
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/EnterpriseExportExcelDTO.java
  11. 27
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java
  12. 186
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java
  13. 65
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml
  14. 13
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml
  15. 10
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml
  16. 214
      epmet-user/epmet-user-server/src/main/java/com/epmet/util/MySequence.java
  17. 11
      epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

4
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;

6
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<CalenderEntity> list = calenderDao.selectByDay(currentDate);

9
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));
}
}

5
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;
}

54
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;
}

10
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;
}

40
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<List<BuildingTreeLevelDTO>> treeList(@LoginUser TokenDto tokenDTO){
List<BuildingTreeLevelDTO> buildingTreeLevelDTOS =buildingService.treeList(tokenDTO.getCustomerId(), tokenDTO.getUserId());
return new Result().ok(buildingTreeLevelDTOS);
}
/**
* 房屋信息左侧树
* 逐级展开用户点击树节点去查询 目前只有烟台客户房屋信息调用
* @param tokenDTO
* @return
*/
@PostMapping("treeinit")
public Result<BuildingTreeLevelDTO> 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<BuildingTreeLevelDTO>().ok(buildingTreeLevelDTOS);
}
/**
* 房屋信息左侧树
* 点击树上节点查询下一级列表
* @param tokenDTO
* @param formDTO
* @return
*/
@PostMapping("next-tree-node")
public Result<List<BuildingTreeLevelDTO>> nextTreeNode(@LoginUser TokenDto tokenDTO,@RequestBody HouseManageTreeFormDTO formDTO){
formDTO.setCustomerId(tokenDTO.getCustomerId());
formDTO.setStaffId(tokenDTO.getUserId());
ValidatorUtils.validateEntity(formDTO,HouseManageTreeFormDTO.NodeEventGroup.class);
List<BuildingTreeLevelDTO> resultList =buildingService.nextTreeNode(formDTO);
return new Result<List<BuildingTreeLevelDTO>>().ok(resultList);
}
/**
* Desc: 根据前端方便新开接口只返回树的ID
* @param tokenDTO

20
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<CustomerAgencyEntity> {
List<CurrentUserCommunityInfoResultDTO> getCurrentUserCommunityInfo(@Param("customerId") String customerId,@Param("staffAgencyId")String staffAgencyId);
/**
*
* @param agencyId
* @return 组织信息用于房屋信息左侧树
*/
BuildingTreeLevelDTO selectAgencyTree(String agencyId);
/**
*
* @param agencyId
* @return 获取当前agencyId的下一级组织+直属网格
*/
List<BuildingTreeLevelDTO> selectNextOrg(String agencyId);
/**
* 查询当前agencyId下 组织数+网格数
* @param agencyId
* @return
*/
Integer selectTotalNext(String agencyId);
}

4
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java

@ -51,7 +51,9 @@ public interface IcBuildingDao extends BaseDao<IcBuildingEntity> {
List<IcBuildingExcel> searchAllBuilding(
@Param("building")IcBuildingEntity building, @Param("house")IcHouseEntity house);
List<CustomerAgencyEntity> selectAgencyChildrenList(@Param("agencyId") String agencyId);
List<CustomerAgencyEntity> selectAgencyChildrenList(@Param("customerId")String customerId,
@Param("pidsKey") String pidsKey,
@Param("pid")String pid);
List<Map<String, Object>> selectListByName(@Param("customerId") String customerId,
@Param("neighborNameList")ArrayList<String> strings,

1
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;
/**
* 规模名称

27
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<BuildingTreeLevelDTO> treeList(String customerId, String staffId);
/**
* 房屋信息左侧树
* @param houseManageTreeFormDTO
* @return 逐级展开用户点击树节点去查询
*/
BuildingTreeLevelDTO treeInit(HouseManageTreeFormDTO houseManageTreeFormDTO);
/**
* 房屋信息左侧树
* 点击树上节点查询下一级列表
* @param houseManageTreeFormDTO
* @return
*/
List<BuildingTreeLevelDTO> nextTreeNode(HouseManageTreeFormDTO houseManageTreeFormDTO);
List<String> treeIds(String customerId, String staffId);
PageData<IcBuildingListResultDTO> listBuilding(IcBuildingListFormDTO formDTO);

186
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<CustomerAgencyEntity> customerAgencyList = icBuildingDao.selectAgencyChildrenList(agency.getAgencyId());
List<CustomerAgencyEntity> 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<BuildingTreeLevelDTO> 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<IcNeighborHoodEntity> queryWrapper = new QueryWrapper<IcNeighborHoodEntity>().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<BuildingTreeLevelDTO> nextTreeNode(HouseManageTreeFormDTO formDTO) {
/**
* level::::
* 省级:province
* 市级: city
* 区县级: district,
* 街道:street,
* 社区级community
* 网格grid
* 小区neighborHood
* 楼栋building
*/
List<BuildingTreeLevelDTO> resultList = new ArrayList<>();
if ("province".equals(formDTO.getLevel())
|| "city".equals(formDTO.getLevel())
|| "district".equals(formDTO.getLevel())
|| "street".equals(formDTO.getLevel())) {
List<BuildingTreeLevelDTO> 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<IcNeighborHoodEntity> queryWrapper = new QueryWrapper<IcNeighborHoodEntity>().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<BuildingTreeLevelDTO> getGridTreeNode(String agencyId) {
List<BuildingTreeLevelDTO> list = new ArrayList<>();
LambdaQueryWrapper<CustomerGridEntity> gridWrapper = new LambdaQueryWrapper<>();
gridWrapper.eq(CustomerGridEntity::getPid, agencyId);
gridWrapper.last("ORDER BY sort,CAST(GRID_NAME AS SIGNED),CONVERT(GRID_NAME using gbk)");
List<CustomerGridEntity> 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<IcNeighborHoodEntity> neighborhoodWrapper = new QueryWrapper<IcNeighborHoodEntity>().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<BuildingTreeLevelDTO> getNeighborHoodTreeNode(String gridId) {
List<BuildingTreeLevelDTO> list = new ArrayList<>();
// 当前网格下有几个小区
LambdaQueryWrapper<IcNeighborHoodEntity> neighborhoodWrapper = new QueryWrapper<IcNeighborHoodEntity>().lambda()
.eq(IcNeighborHoodEntity::getGridId, gridId)
.last("ORDER BY CAST(NEIGHBOR_HOOD_NAME AS SIGNED),CONVERT(NEIGHBOR_HOOD_NAME using gbk)");
;
List<IcNeighborHoodEntity> 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<IcBuildingEntity> buildingQueryWrapper = new QueryWrapper<IcBuildingEntity>().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<BuildingTreeLevelDTO> getBuildTreeNode(String neighborHoodId) {
List<BuildingTreeLevelDTO> list = new ArrayList<>();
LambdaQueryWrapper<IcBuildingEntity> buildingQueryWrapper = new QueryWrapper<IcBuildingEntity>().lambda()
.in(IcBuildingEntity::getNeighborHoodId, neighborHoodId)
.last("ORDER BY SORT, CAST(BUILDING_NAME AS SIGNED),CONVERT(BUILDING_NAME USING gbk)");
List<IcBuildingEntity> icBuildingList = icBuildingDao.selectList(buildingQueryWrapper);
// 获取楼里已经有多少个房屋
LambdaQueryWrapper<IcHouseEntity> icHouseEntityWrapper = new QueryWrapper<IcHouseEntity>().lambda()
.eq(IcHouseEntity::getNeighborHoodId, neighborHoodId)
.select(IcHouseEntity::getId)
.select(IcHouseEntity::getBuildingId);
List<IcHouseEntity> buildingHouseCount = icHouseDao.selectList(icHouseEntityWrapper);
Map<String, Long> 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<BuildingTreeLevelDTO> covertToTree(CustomerAgencyEntity customerAgency, List<BuildingTreeLevelDTO> 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());

65
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml

@ -1055,4 +1055,69 @@
</select>
<select id="selectAgencyTree" parameterType="java.lang.String" resultType="com.epmet.dto.BuildingTreeLevelDTO">
SELECT
ca.ID as id,
ca.ORGANIZATION_NAME as label,
ca.LONGITUDE as longitude,
ca.LATITUDE as latitude,
ca.`LEVEL` as level,
ca.PID as pId,
'agency' AS orgType
FROM
customer_agency ca
WHERE
ca.ID = #{agencyId}
AND ca.DEL_FLAG = '0'
</select>
<select id="selectNextOrg" parameterType="java.lang.String" resultType="com.epmet.dto.BuildingTreeLevelDTO">
(SELECT ca.ID as id,
ca.ORGANIZATION_NAME as label,
ca.LONGITUDE as longitude,
ca.LATITUDE as latitude,
ca.`LEVEL` as level,
ca.PID as pId,
'agency' AS orgType
FROM customer_agency ca
WHERE ca.PID = #{agencyId}
AND ca.DEL_FLAG = '0'
ORDER BY CAST(ca.organization_name AS SIGNED), CONVERT(ca.organization_name using gbk))
union all
(SELECT cg.id,
cg.GRID_NAME AS label,
cg.LONGITUDE,
cg.LATITUDE,
'grid' AS LEVEL,
cg.PID,
'grid' AS orgType
FROM customer_grid cg
WHERE cg.DEL_FLAG = '0'
AND cg.PID = #{agencyId}
ORDER BY cg.sort, CAST(cg.GRID_NAME AS SIGNED), CONVERT(cg.GRID_NAME using gbk))
</select>
<select id="selectTotalNext" parameterType="java.lang.String" resultType="java.lang.Integer">
SELECT
sum( t.total )
FROM
(
SELECT
count( a.id ) AS total
FROM
customer_agency a
WHERE
a.PID = #{agencyId}
AND a.DEL_FLAG = '0'
UNION all
SELECT
count( g.id ) AS total
FROM
customer_grid g
WHERE
g.PID = #{agencyId}
AND g.DEL_FLAG = '0'
) t
</select>
</mapper>

13
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}
<if test=" null != pidsKey and pidsKey.trim() != ''">
and CONCAT(':',ca.pids, ':') like CONCAT('%:',#{pidsKey},':%')
</if>
<if test=" null != pid and pid.trim() != ''">
and ca.pid = #{pid}
</if>
ORDER BY CAST(organization_name AS SIGNED),CONVERT(organization_name using gbk)
</select>

10
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml

@ -128,6 +128,16 @@
<where>
1 = 1
and a.del_flag = '0'
<if test=" orgType == 'grid'">
<if test="orgId != null and orgId != ''">
AND c.GRID_ID = #{orgId}
</if>
</if>
<if test=" orgType == 'agency'">
<if test="orgId != null and orgId != ''">
and (c.AGENCY_ID =#{orgId} or c.AGENCY_PIDS like concat('%',#{orgId},'%') )
</if>
</if>
<if test="pids != null and pids != ''">
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

214
epmet-user/epmet-user-server/src/main/java/com/epmet/util/MySequence.java

@ -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)
*
* <p>优化开源项目https://gitee.com/yu120/sequence</p>
*
* @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();
}
}

11
epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

@ -128,7 +128,7 @@
</foreach>
</if>
<if test="subCondition.queryType!= null and subCondition.queryType == 'resi_category111' ">
<if test="subCondition.queryType!= null and subCondition.queryType == 'resi_category' ">
<if test="null!=subCondition.columnValue[0] and ''!=subCondition.columnValue[0]">
<foreach collection="subCondition.columnValue" item="colValue" open="" separator="" close="">
<if test="colValue != null and colValue != ''">
@ -137,15 +137,6 @@
</foreach>
</if>
</if>
<if test="subCondition.queryType!= null and subCondition.queryType == 'resi_category' ">
<if test="null!=subCondition.columnValue[0] and ''!=subCondition.columnValue[0]">
<foreach collection="subCondition.columnValue" item="colValue" open=" and (" separator="or" close=")">
<if test="colValue != null and colValue != ''">
${subCondition.tableName}.${colValue} ='1'
</if>
</foreach>
</if>
</if>
</if>
</foreach>
</if>

Loading…
Cancel
Save