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 | 129 +++++++++++++++++++++++++-----------------
1 files changed, 77 insertions(+), 52 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 ed7cc9d..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,6 +97,10 @@
private IHouseRentalService iHouseRentalService;
+ @Autowired
+ private ThreadPoolUtil threadPoolUtil;
+
+
@Override
public IPage<HouseholdVO> selectHouseholdPage(IPage<HouseholdVO> page, HouseholdVO household) {
CommonParamSet commonParamSet = new CommonParamSet().invoke(HouseholdVO.class, household);
@@ -110,7 +116,7 @@
List<HouseholdVO> householdVOS = baseMapper.selectHouseholdPage(page, household, commonParamSet.getIsAdministrator(),
commonParamSet.getRegionChildCodesList(), commonParamSet.getGridCodeList());
stopWatch.stop();
- if (household.getRelationship() == 18) {
+ if (household.getRelationship() != null && household.getRelationship() == 18) {
householdVOS.forEach(item -> {
HouseholdEntity householdEntity = getOne(Wrappers.<HouseholdEntity>lambdaQuery()
.eq(HouseholdEntity::getHouseCode, item.getHouseCode())
@@ -361,17 +367,15 @@
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) {
@@ -399,18 +403,9 @@
}
// 获取并打印每个任务的结果
} catch (Exception e) {
- errorNum++;
+ 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(" 条数据,")
@@ -421,10 +416,13 @@
if (errorNum > 0) {
builder.append("共有 ").append(errorNum).append(" 条数据由于无姓名或门牌地址编码信息未导入!");
}
+ if (runErrorNum > 0) {
+ builder.append("共有 ").append(runErrorNum).append(" 条数据由于数据其他信息异常未导入!");
+ }
return builder.toString();
}
- @Transactional(rollbackFor = Exception.class)
+ @Transactional(propagation = Propagation.REQUIRES_NEW)
public Map<String, String> importHouseHold(ImportHouseholdExcel houseHoldExcel, IHouseService houseService, Boolean isCovered, String isTenant) {
Map<String, String> objectObjectHashMap = new HashMap<>();
HouseholdEntity householdEntity = Objects.requireNonNull(BeanUtil.copy(houseHoldExcel, HouseholdEntity.class));
@@ -457,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()));
@@ -567,6 +566,26 @@
}
/**
+ * @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);
+ }
+ }
+
+ /**
* 标签处理
*
* @param householdEntity
@@ -600,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());
}
@@ -631,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;
@@ -723,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());
// 判断是否还绑定其他的房屋,如果有,则不操作用户
@@ -789,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