From 8b7258c9427882bb1798f1502eaa35184c6e374e Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Fri, 09 Aug 2024 14:29:18 +0800
Subject: [PATCH] 短信指定楼栋发送
---
src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java | 160 +++++++++++++++++++++++++++++++---------------------
1 files changed, 95 insertions(+), 65 deletions(-)
diff --git a/src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java b/src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java
index 7b04ed6..a6ba2ef 100644
--- a/src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java
+++ b/src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java
@@ -31,6 +31,7 @@
import org.springblade.common.param.CommonParamSet;
import org.springblade.common.utils.NodeTreeUtil;
import org.springblade.common.utils.SpringUtils;
+import org.springblade.common.utils.ThreadPoolUtil;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
@@ -58,13 +59,14 @@
import org.springblade.modules.system.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StopWatch;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
-import java.util.concurrent.*;
+import java.util.concurrent.Future;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
@@ -95,10 +97,12 @@
private IHouseRentalService iHouseRentalService;
+ @Autowired
+ private ThreadPoolUtil threadPoolUtil;
+
+
@Override
public IPage<HouseholdVO> selectHouseholdPage(IPage<HouseholdVO> page, HouseholdVO household) {
- StopWatch stopWatch = new StopWatch();
- stopWatch.start();
CommonParamSet commonParamSet = new CommonParamSet().invoke(HouseholdVO.class, household);
// List<String> regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId());
@@ -107,10 +111,26 @@
if (Objects.nonNull(household.getLabelType())) {
extracted(household);
}
+ StopWatch stopWatch = new StopWatch();
+ stopWatch.start();
List<HouseholdVO> householdVOS = baseMapper.selectHouseholdPage(page, household, commonParamSet.getIsAdministrator(),
commonParamSet.getRegionChildCodesList(), commonParamSet.getGridCodeList());
stopWatch.stop();
-// System.out.println("selectHouseholdPage:" + stopWatch.getTotalTimeMillis());
+ if (household.getRelationship() != null && household.getRelationship() == 18) {
+ householdVOS.forEach(item -> {
+ HouseholdEntity householdEntity = getOne(Wrappers.<HouseholdEntity>lambdaQuery()
+ .eq(HouseholdEntity::getHouseCode, item.getHouseCode())
+ .eq(HouseholdEntity::getRelationship, 1)
+ .eq(HouseholdEntity::getIsDeleted, 0)
+ .last("limit 1"));
+ if (householdEntity != null) {
+ item.setHouseName(householdEntity.getName());
+ item.setHousePhone(householdEntity.getPhoneNumber());
+ item.setHouseIdCard(householdEntity.getIdCard());
+ }
+ });
+ }
+ System.out.println("selectHouseholdPage:" + stopWatch.getTotalTimeMillis());
return page.setRecords(householdVOS);
}
@@ -341,30 +361,27 @@
* @param isCovered
*/
@Override
- @Transactional(rollbackFor = Exception.class)
public String importUserHouseHold(List<ImportHouseholdExcel> data, Boolean isCovered, String isTenant) {
IHouseService houseService = SpringUtils.getBean(IHouseService.class);
int totalNum = data.size();
int importNum = 0;
int updateNum = 0;
int errorNum = 0;
-
- // 创建一个固定大小的线程池
- int numberOfThreads = Runtime.getRuntime().availableProcessors(); // 使用可用处理器数量作为线程数
- ExecutorService executorService = Executors.newFixedThreadPool(numberOfThreads);
-
+ int runErrorNum = 0;
// 创建Future列表来保存每个任务的结果
List<Future<Map<String, String>>> futures = new ArrayList<>();
-
for (ImportHouseholdExcel houseHoldExcel : data) {
- Callable<Map<String, String>> task = () -> importHouseHold(houseHoldExcel, houseService, isCovered, isTenant);
- futures.add(executorService.submit(task));
+ // 提交任务
+ futures.add(threadPoolUtil.submit(() -> {
+ // 这里执行你的异步任务
+ return importHouseHold(houseHoldExcel, houseService, isCovered, isTenant);
+ }));
}
// 收集并打印结果
for (Future<Map<String, String>> future : futures) {
try {
Map<String, String> stringStringMap = future.get();
- logger.info("结果:{}", stringStringMap);
+ // logger.info("结果:{}", stringStringMap);
String result = stringStringMap.get("restult");
switch (result) {
case "1":
@@ -385,19 +402,10 @@
break;
}
// 获取并打印每个任务的结果
- } catch (InterruptedException | ExecutionException e) {
- errorNum++;
+ } catch (Exception e) {
+ runErrorNum++;
logger.error("获取异常-----》", e);
}
- }
- // 关闭线程池
- executorService.shutdown();
- try {
- if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) {
- executorService.shutdownNow();
- }
- } catch (InterruptedException e) {
- executorService.shutdownNow();
}
StringBuilder builder = new StringBuilder("导入完成!");
builder.append("其中本次表格共有 ").append(totalNum).append(" 条数据,")
@@ -408,14 +416,16 @@
if (errorNum > 0) {
builder.append("共有 ").append(errorNum).append(" 条数据由于无姓名或门牌地址编码信息未导入!");
}
+ if (runErrorNum > 0) {
+ builder.append("共有 ").append(runErrorNum).append(" 条数据由于数据其他信息异常未导入!");
+ }
return builder.toString();
}
-
+ @Transactional(propagation = Propagation.REQUIRES_NEW)
public Map<String, String> importHouseHold(ImportHouseholdExcel houseHoldExcel, IHouseService houseService, Boolean isCovered, String isTenant) {
Map<String, String> objectObjectHashMap = new HashMap<>();
- try {
- HouseholdEntity householdEntity = Objects.requireNonNull(BeanUtil.copy(houseHoldExcel, HouseholdEntity.class));
+ HouseholdEntity householdEntity = Objects.requireNonNull(BeanUtil.copy(houseHoldExcel, HouseholdEntity.class));
// 判断姓名,手机号
if (Strings.isBlank(householdEntity.getName()) || Strings.isBlank(householdEntity.getHouseCode())) {
objectObjectHashMap.put("row", householdEntity.getName() + ":" + householdEntity.getPhoneNumber());
@@ -445,28 +455,29 @@
}
}
// 判断是否租户导入
- if (StringUtils.isNotBlank(isTenant)) {
- householdEntity.setRelationship(18);
- HouseRentalEntity houseRentalEntity = iHouseRentalService.getOne(Wrappers.<HouseRentalEntity>lambdaQuery()
- .eq(HouseRentalEntity::getHouseCode, householdEntity.getHouseCode()).last("limit 1"));
- if (houseRentalEntity != null) {
- householdEntity.setHousingRentalId(houseRentalEntity.getId());
- } else {
- // 新建出租屋
- HouseRentalEntity rentalEntity = new HouseRentalEntity();
- rentalEntity.setHouseCode(householdEntity.getHouseCode());
- rentalEntity.setHouseStatus(1);
- rentalEntity.setAuditStatus(0);
- rentalEntity.setRentalUse(4);
- rentalEntity.setTenantRelationship(1);
- rentalEntity.setRentalTime(new Date());
- rentalEntity.setDueTime(new Date());
- rentalEntity.setTerminationTime(new Date());
- iHouseRentalService.save(rentalEntity);
- householdEntity.setHousingRentalId(rentalEntity.getId());
- }
+ if (StringUtils.isNotBlank(isTenant) || (householdEntity.getRelationship() != null && householdEntity.getRelationship() == 18)) {
+ householdEntity.setRelationship(18);
+ HouseRentalEntity houseRentalEntity = iHouseRentalService.getOne(Wrappers.<HouseRentalEntity>lambdaQuery()
+ .eq(HouseRentalEntity::getHouseCode, householdEntity.getHouseCode()).last("limit 1"));
+ if (houseRentalEntity != null) {
+ householdEntity.setHousingRentalId(houseRentalEntity.getId());
+ } else {
+ // 新建出租屋
+ HouseRentalEntity rentalEntity = new HouseRentalEntity();
+ rentalEntity.setHouseCode(householdEntity.getHouseCode());
+ rentalEntity.setHouseStatus(1);
+ rentalEntity.setAuditStatus(0);
+ rentalEntity.setRentalUse(4);
+ rentalEntity.setTenantRelationship(1);
+ rentalEntity.setRentalTime(new Date());
+ rentalEntity.setDueTime(new Date());
+ rentalEntity.setTerminationTime(new Date());
+ iHouseRentalService.save(rentalEntity);
+ householdEntity.setHousingRentalId(rentalEntity.getId());
}
-
+ // 设置出租房
+ setRentalPropertyLabels(householdEntity);
+ }
/// 是否主要联系人
if (!Strings.isBlank(houseHoldExcel.getIsPrimaryContact())) {
householdEntity.setIsPrimaryContact(Integer.parseInt(houseHoldExcel.getIsPrimaryContact()));
@@ -552,12 +563,25 @@
objectObjectHashMap.put("restult", "2");
return objectObjectHashMap;
}
- } catch (Exception e) {
- logger.error("异常导入------------》", e);
- // return "3";
- // objectObjectHashMap.put("row", householdEntity.getName() + ":" + householdEntity.getPhoneNumber());
- objectObjectHashMap.put("restult", "3");
- return objectObjectHashMap;
+ }
+
+ /**
+ * @param householdEntity
+ */
+ private void setRentalPropertyLabels(HouseholdEntity householdEntity) {
+ // 设置房屋标签未出租
+ IUserHouseLabelService householdLabelService = SpringUtils.getBean(IUserHouseLabelService.class);
+ long count = householdLabelService.count(Wrappers.<UserHouseLabelEntity>lambdaQuery()
+ .eq(UserHouseLabelEntity::getHouseCode, householdEntity.getHouseCode())
+ .eq(UserHouseLabelEntity::getLableType, 2));
+ if (count == 0) {
+ UserHouseLabelEntity userHouseLabelEntity = new UserHouseLabelEntity();
+ userHouseLabelEntity.setHouseCode(householdEntity.getHouseCode());
+ userHouseLabelEntity.setLableType(2);
+ userHouseLabelEntity.setLabelName("出租");
+ userHouseLabelEntity.setLabelId(1039L);
+ userHouseLabelEntity.setColor("yellow");
+ householdLabelService.saveOrUpdateHouseLabel(userHouseLabelEntity);
}
}
@@ -595,8 +619,8 @@
HouseholdVO householdVO = new HouseholdVO();
householdVO.setConfirmFlag(confirmFlag);
householdVO.setCommunityCode(neiCode);
+ householdVO.setUserId(AuthUtil.getUserId());
CommonParamSet commonParamSet = new CommonParamSet().invoke(HouseholdVO.class, householdVO);
-
return baseMapper.statistics(householdVO, commonParamSet.getIsAdministrator(),
commonParamSet.getRegionChildCodesList(), commonParamSet.getGridCodeList());
}
@@ -626,15 +650,16 @@
@Override
public Object getHouseHoldStatistics(String code, String roleType) {
Map<String, Object> objectObjectHashMap = new HashMap<>();
+ List<String> communityCodeList = Func.toStrList(code);
if (roleType.equals("2")) {
- List<Map<String, Object>> result = baseMapper.getHouseHoldStatistics(code, null, roleType);
- List<Map<String, Object>> result1 = baseMapper.getHouseHoldStatisticsAge(code, null, roleType);
+ List<Map<String, Object>> result = baseMapper.getHouseHoldStatistics(communityCodeList, null, roleType);
+ List<Map<String, Object>> result1 = baseMapper.getHouseHoldStatisticsAge(communityCodeList, null, roleType);
objectObjectHashMap.put("gender", result);
objectObjectHashMap.put("age", result1);
return objectObjectHashMap;
} else {
- List<Map<String, Object>> result = baseMapper.getHouseHoldStatistics(code, AuthUtil.getUserId(), roleType);
- List<Map<String, Object>> result1 = baseMapper.getHouseHoldStatisticsAge(code, AuthUtil.getUserId(), roleType);
+ List<Map<String, Object>> result = baseMapper.getHouseHoldStatistics(communityCodeList, AuthUtil.getUserId(), roleType);
+ List<Map<String, Object>> result1 = baseMapper.getHouseHoldStatisticsAge(communityCodeList, AuthUtil.getUserId(), roleType);
objectObjectHashMap.put("gender", result);
objectObjectHashMap.put("age", result1);
return objectObjectHashMap;
@@ -718,7 +743,7 @@
for (Long id : idList) {
HouseholdEntity householdEntity = getById(id);
// 如果是业主
- if (null!= householdEntity.getRelationship() && householdEntity.getRelationship() == 1) {
+ if (null != householdEntity && null != householdEntity.getRelationship() && householdEntity.getRelationship() == 1) {
// 查询对应的用户
User user = userService.getById(householdEntity.getAssociatedUserId());
// 判断是否还绑定其他的房屋,如果有,则不操作用户
@@ -784,13 +809,18 @@
*/
@Override
public List<HouseholdVO> selectHouseholdList(HouseholdVO household) {
+ if (household.getLimit() == null) {
+ household.setLimit(20);
+ }
List<HouseholdVO> householdVOS = baseMapper.selectHouseholdList(household);
// 遍历
for (HouseholdVO householdVO : householdVOS) {
- if (householdVO.getHouseholdLabelList().size() > 0) {
- List<String> labelNameList = householdVO.getHouseholdLabelList().stream().map(householdLabelVO -> householdLabelVO.getLabelName())
- .collect(Collectors.toList());
- householdVO.setLabelName(String.join(",", labelNameList));
+ List<HouseholdLabelVO> householdLabelList = householdVO.getHouseholdLabelList();
+ if (!householdLabelList.isEmpty()) {
+ String labelName = householdLabelList.stream()
+ .map(HouseholdLabelVO::getLabelName)
+ .collect(Collectors.joining(","));
+ householdVO.setLabelName(labelName);
}
}
// 返回
--
Gitblit v1.9.3