|
|
@ -31,11 +31,15 @@ import org.apache.commons.collections4.CollectionUtils; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.web.servlet.resource.ResourceUrlEncodingFilter; |
|
|
|
|
|
|
|
import javax.servlet.ServletOutputStream; |
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
import java.io.IOException; |
|
|
|
import java.time.*; |
|
|
|
import java.time.format.DateTimeFormatter; |
|
|
|
import java.time.temporal.ChronoUnit; |
|
|
|
import java.time.temporal.TemporalUnit; |
|
|
|
import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
@ -65,6 +69,9 @@ public class ResiServiceImpl implements ResiService, ResultDataResolver { |
|
|
|
String client = EpmetRequestHolder.getLoginUserClient(); |
|
|
|
String customerId = EpmetRequestHolder.getLoginUserCustomerId(); |
|
|
|
|
|
|
|
// 对特殊规则进行转换。
|
|
|
|
specificRuleConvert(resiRule); |
|
|
|
|
|
|
|
// 查询当前组织及下级id路径
|
|
|
|
LoginUserDetailsResultDTO userDetail = getResultDataOrThrowsException(userOpenFeignClient.getLoginUserDetails(new LoginUserDetailsFormDTO(app, client, userId)), |
|
|
|
ServiceConstant.EPMET_USER_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null, null); |
|
|
@ -87,9 +94,8 @@ public class ResiServiceImpl implements ResiService, ResultDataResolver { |
|
|
|
int total = 0; |
|
|
|
do { |
|
|
|
// 拿到房屋id列表,去查询居民列表
|
|
|
|
List<IcHouseEntity> houseEntities = govOrgService.listHousesByRules(customerId, orgIdPath, orgId, orgType, neighborHoodId, buildingId, unitId, |
|
|
|
List<String> houseIds = govOrgService.listHouseIdsByRules(customerId, orgIdPath, orgId, orgType, neighborHoodId, buildingId, unitId, |
|
|
|
houseId, houseRule, statRule, housePageNo, 50); |
|
|
|
List<String> houseIds = houseEntities.stream().map(icHouseEntity -> icHouseEntity.getId()).collect(Collectors.toList()); |
|
|
|
|
|
|
|
if (houseIds.size() == 0) { |
|
|
|
// 用户使用了房屋和统计相关的条件,但是没查到房屋,我看就没有走下去了的必要了吧..
|
|
|
@ -125,6 +131,46 @@ public class ResiServiceImpl implements ResiService, ResultDataResolver { |
|
|
|
return new PageData<>(resultResis, total); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 为特定的规则进行转换 |
|
|
|
* @param resiRule |
|
|
|
*/ |
|
|
|
private void specificRuleConvert(List<ResisByPolicyRulesFormDTO.ResiRule> resiRule) { |
|
|
|
// 使用年龄计算出生日期
|
|
|
|
resiRule.stream().forEach((r) -> { |
|
|
|
if ("BIRTHDAY".equals(r.getColKey())) { |
|
|
|
LocalDate birthday = LocalDate.now().minus(Long.valueOf(r.getColVal()), ChronoUnit.YEARS); |
|
|
|
r.setQueryType(revertQueryType(r.getQueryType())); |
|
|
|
r.setColVal(birthday.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 翻转逻辑操作符 |
|
|
|
* @param oldRel |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String revertQueryType(String oldRel) { |
|
|
|
if (">".equals(oldRel)) { |
|
|
|
return "<"; |
|
|
|
} |
|
|
|
|
|
|
|
if (">=".equals(oldRel)) { |
|
|
|
return "<="; |
|
|
|
} |
|
|
|
|
|
|
|
if ("<".equals(oldRel)) { |
|
|
|
return ">"; |
|
|
|
} |
|
|
|
|
|
|
|
if ("<=".equals(oldRel)) { |
|
|
|
return ">="; |
|
|
|
} |
|
|
|
|
|
|
|
return ""; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 补充额外信息 |
|
|
|
* @param resultResis |
|
|
|